Para empezar, Microsoft es una empresa enorme, lo suficientemente grande como para que los grandes equipos dentro de Microsoft tengan algo parecido a su propia cultura. Es difícil hacer afirmaciones sobre el trabajo de ingeniería de software en Microsoft que sean ciertas en todas partes. He trabajado en Microsoft Office durante unos 7 años, así que mis respuestas se basarán en esa experiencia.
Mucha gente se imagina a Microsoft como una burocracia sin nombre en la que drones de desarrolladores trabajan en cubículos hasta altas horas de la noche.
Nada más lejos de la realidad. Microsoft fue una vez una empresa llena de gente joven que, efectivamente, trabajaba hasta las tantas. Sin embargo, han hecho un buen trabajo reteniendo a sus empleados (hasta hace poco) y muchas de esas mismas personas siguen en la empresa, sólo que ahora son de mediana edad, están casados y tienen hijos en edad escolar. Resultado: la empresa se siente mucho menos como una startup y mucho más como una corporación típica.
Nunca he trabajado en un lugar donde se preste tan poca atención a mis horas de trabajo. Uno puede tener un éxito diabólico en Microsoft sin bajar de las 35 horas semanales; también puede hacerlo mal incluso poniendo 70. Cuándo se trabaja (y, en menor medida, dónde se trabaja) es irrelevante. Microsoft es una meritocracia, y los resultados -sobre todo la visibilidad de esos resultados- son lo más importante. Si trabajas de forma eficiente y no estás ansioso por escalar en la empresa, puedes trabajar semanas muy razonables (~40 horas) sin sacrificar tu carrera.
El código está muy vigilado debido al hecho de que hemos tenido muchas filtraciones, y la empresa es tan grande que es probable que haya algunas manzanas podridas si un número suficiente de personas tiene acceso al código fuente. Por defecto, es probable que tengas acceso completo al código en el que estás trabajando y a cualquier proyecto asociado, y hay un proceso de aprobación bastante fácil si necesitas ver el código de otros equipos.
Es inmensamente satisfactorio trabajar en un código que es utilizado por millones de personas. Como desarrollador, la responsabilidad recae en ti: la gente te dirá cómo debería ser la interfaz de usuario, te machacarán el código y las funciones y te dirán que hagas cambios, pero en última instancia eres tú quien tiene el mayor poder en la sala, porque eres tú quien construye las partes que acabarán en manos de los clientes. Muchos desarrolladores (pasivo-agresivos) han utilizado el "veto de bolsillo" para evitar que se produzca un cambio, o han codificado una característica en el fin de semana incluso después de que se les dijera que no había tiempo para ello. Este tipo de técnicas de codificación están oficialmente mal vistas, pero dan una idea de cuánto poder puede tener un solo desarrollador sobre lo que acaba convirtiéndose en código de entrega.
Microsoft fue fundada por un desarrollador, y sigue siendo una empresa centrada en los desarrolladores. Oirás quejas sobre las interminables reuniones y la política. Probablemente no provengan de los desarrolladores. La gente que fundó la empresa entiende que los desarrolladores sólo quieren escribir código. En general, los desarrolladores se liberan de las distracciones (las oficinas privadas existen desde el principio de su carrera), de la recopilación de requisitos y el diseño (normalmente gestionados por la dirección del programa con cierta colaboración por su parte), del laborioso trabajo de pruebas y automatización (hay un equipo de pruebas) y, en algunos casos, incluso del trabajo de mantenimiento. Pasas MUCHO tiempo en el código. Hay una buena discusión sobre si esto ha creado un exceso de especialización, y todavía hay una cantidad abismal de gastos generales involucrados en la escritura de código que se utiliza en muchos contextos para muchos propósitos, pero en general es un lugar muy feliz para alguien que sólo quiere codificar. Los probadores allí, especialmente, a menudo muestran un interés en pasar a un papel de desarrollador y escribir código de envío debido a sentirse como ciudadanos de segunda clase.
Si bien los desarrolladores tienen una opinión sobre lo que sucede a nivel de características, la empresa es lo suficientemente grande que es muy difícil tener un impacto fuera de su propio equipo. Cambiar de equipo es posible, pero conlleva mucha fricción (por lo general, tienes que completar el mismo ciclo de entrevistas de un día entero que una nueva contratación) y hay muy poca infraestructura establecida para que los desarrolladores contribuyan a los productos de otras partes de la empresa.
La mayor sorpresa para mí aquí es y ha sido la cultura juvenil a pesar de la reputación de la empresa como un gigante aburrido. Todavía hay guerras de nerfs en los pasillos. La gente todavía se entusiasma mucho con el software. Tenemos nuestro propio laboratorio de incubación de software y hardware (The Garage, búsquelo) y es algo increíble. Nos reímos de nosotros mismos probablemente más de lo que lo hace la prensa (uno de los valores de nuestra empresa se supone que es la "autocrítica" y es probablemente el que más cumplimos). La gente sigue amando este lugar. No hay ningún otro lugar como éste.