He pasado por estos tres trabajos.
Me gradué en 2002, de una de las 10 mejores escuelas en China con maestría CS. Me uní a Microsoft en Shanghai como ingeniero de soporte . No había elección. Microsoft en ese momento era como Google y Facebook de hoy. Pero Microsoft no tuvo un desarrollo completo de productos en China hasta finales de 2003. El soporte técnico de los productos es el único trabajo técnico que tienen. Durante mis dos años como ingeniero de soporte, había sido brevemente desarrollador durante medio año en un proyecto formal de producto comercial. Así que tuve una sensación de primera mano sobre el trabajo de un desarrollador: codificar características, corregir errores, descubrir por qué algunas API son lentas en algún momento, discutir con los PM sobre si es un error o por diseño, dar estimaciones y responder “¿por qué toma 5 días? ¿No debería ese trabajo solo necesitar unas pocas horas? “, Cambiar el código para cambiar los requisitos, cambiar la interfaz de usuario y un montón de cosas debajo solo porque un gran jefe dijo algo en una revisión y se le pidió que actualizara mis especificaciones de diseño porque no t refleja cómo es el último código, …
Dejé el trabajo de ingeniero de soporte en aproximadamente 2 años. En 2004, me uní al grupo de desarrollo de productos de Microsoft en Beijing, también conocido como MS ATC o Microsoft Advanced Technology Center, como probador . El título formal fue SDET o ingeniero de desarrollo de software en prueba. En la terminología actual, el trabajo consistía más en herramientas e ingeniería de calidad.
- ¿Hay alguna razón para estar en contra de los sindicatos y los derechos de los trabajadores?
- ¿Debo ir al extranjero o continuar el negocio de mi padre?
- ¿Es el trabajo del banco PO muy agitado?
- ¿Puedo unirme a la industria de los videojuegos con un título en informática? ¿Qué trabajos puedo obtener con un título de CS?
- ¿Qué es un buen consultor?
Dos preguntas para ser respondidas aquí:
- Por qué dejé el trabajo de ingeniero de soporte.
- ¿Por qué me convertí en un probador, en lugar de dev.
Dejé el trabajo de ingeniero de soporte porque descubrí que el ingeniero de soporte tiene oportunidades de carrera muy limitadas . En algún momento a principios de 2004, estaba tratando de encontrar un trabajo en Hong Kong por razones personales. La mayoría de las ofertas de trabajo de TI en Hong Kong fue trabajo de desarrollador. Envié más de 50 solicitudes. No hubo respuesta. Pensé que debía hacerlo porque mi única experiencia profesional era ingeniero de soporte. Aunque en ese momento los ingenieros de soporte en Shanghai sintieron que técnicamente éramos muy fuertes, no parecía verse de la misma manera desde afuera. Es natural y razonable que en cualquier empresa, el grupo de desarrollo de productos sea siempre más importante que el grupo de atención al cliente. Si no tienes producto, no tienes nada que vender. La atención al cliente solo entra en escena cuando el cliente ha sido adquirido.
Me hice tester solo porque no me fue bien en la entrevista. En ese momento, es común que la gente diga “a este candidato no le fue bien en la codificación, pero parece bueno en la resolución de problemas y la comunicación, ¿lo consideramos un SDET?” Aunque tal razonamiento casi ha desaparecido hoy en día. Probablemente no me fue bien en la entrevista de codificación, probablemente porque no había mucha codificación que hacer en el trabajo diario como ingeniero de soporte. Principalmente solo escribimos código de muestra para los clientes o armamos un prototipo rápido. Mi habilidad de codificación se oxidó muy rápidamente en los dos años en el rol de ingeniero de soporte.
Además, debería mencionar que me uní a MS ATC Beijing en 2004 como “contratista a tiempo completo”, que no era “empleado a tiempo completo”, ni un contratista normal que trabaja para otra compañía como Wipro o Mindtree y trabaja con Microsoft. De todos modos, el punto es que sufrí una pérdida bastante significativa al cambiar de ingeniero de soporte al grupo de desarrollo de productos. Por cierto, lo hice bien y me convertí en empleado a tiempo completo en menos de un año.
En 2005, me mudé a Shanghai, uniéndome a otro grupo de desarrollo de productos en Microsoft. Me uní a ese grupo todavía como un SDET. Tuve elección y elegí permanecer como SDET.
Aquí están las razones:
- Es un área menos concurrida . En otras palabras, menos competencia . Muchos buenos desarrolladores no quieren ser una SDET. Por otro lado, las herramientas y la ingeniería de calidad necesitan fuertes habilidades de programación. Al final del día, las pruebas de software consisten en resolver problemas, a veces problemas muy difíciles, y escribir código para resolverlos. No es tan extremo, sino algo así como “un pez grande en un estanque grande” frente a “un pez grande en un estanque pequeño”. Fuertes habilidades técnicas en el mundo SDET obtendrán una mejor ventaja.
- SDET no tiene algunos de los dolores en el trabajo de un desarrollador. Tuve una experiencia de primera mano de estos dolores durante el breve trabajo de desarrollo de medio año cuando estaba en el grupo de apoyo. Como SDET (y luego líder de pruebas y gerente de pruebas), la mayoría de las veces soy mi propio PM. Tengo grandes autónomos . Debo decirme qué función (de las herramientas) debo hacer, por supuesto, tomo las aportaciones de quienes usarán las herramientas. Cuando construyo herramientas, tengo la libertad de elegir tecnologías y eso me da la oportunidad de jugar con cosas nuevas y aun así cumplir con mi compromiso. La mayoría de los desarrolladores no tienen esa flexibilidad , de manera simplificada: si su producto está escrito en Java, debe seguir escribiéndolo en Java en los años siguientes. Nada detiene a un SDE con mente curiosa para probar otras tecnologías en el tiempo libre, pero usarlas en proyectos en el trabajo suele ser una mejor manera de esforzarse.
Pasaron diez años y creo que esa elección fue buena. Obtuve lo que quería al hacer esa elección:
- Tenía mucha autonomía y obtuve flexibilidad para aprender cosas nuevas para el trabajo. Por ejemplo, recientemente, jugué con neo4j para ayudar a articular cierta lógica de negocios en la herramienta que estoy construyendo; Jugué con varios sistemas de registro (ver https://medium.com/@ericzheng/ch…).
- En parte porque es un área menos concurrida, en parte por suerte, en parte porque trabajé duro y trabajé de manera inteligente, me ascendieron muy rápido en la disciplina SDET. También me convertí en gerente de segunda línea de un equipo de ~ 30 personas. Si estuviera en la disciplina SDE, mi oportunidad de obtener el mismo avance profesional será igual en el mejor de los casos, o algo menor debido a una competencia más intensa. No me da vergüenza hablar de eso y no deberíamos hacerlo: dado que todo lo demás es igual (aunque obviamente no en realidad), si la misma cantidad de dinero puede comprar una casa más grande en Texas que en California, ¿por qué elegir California?
Para resumir [1]:
- El ingeniero de soporte no es un iniciador. Un ingeniero de software en cualquier empresa no tan sexy es mejor que un ingeniero de soporte en Google / Facebook / Uber / Airbnb.
- Tester ofrece algunas oportunidades únicas y puede ser intrigante de alguna manera. Elegir sabiamente.
- Dev es una opción segura.
[1] Realmente no me gusta hacer un resumen. Tiende a simplificar demasiado los asuntos integrales y a ocultar matices, contextos y sutilezas. Muchas personas tienden a ver solo el resumen y hacer comentarios o troll en la parte del resumen. Aunque creo que tener un resumen es una buena estructura de escritura.
[2] Microsoft fusionó SDE y SDET hace un año. He sido gerente de ingeniería desde entonces. Me sentí bien con el nuevo papel. Es un título nuevo para mí, pero descubrí que el trabajo me resulta familiar: descubrí que cuando era líder de pruebas y gerente de pruebas, pasé una gran parte de mi tiempo en estos años en lo que hace un gerente de ingeniería hoy.