Como ingeniero de software con más de 5 años de experiencia, ¿es mejor enfocarse en alguna tecnología y convertirse en un maestro o mantenerse generalista?

Como otros han dicho, debes hacer ambas cosas.

Citaré un ejemplo extremadamente frustrante: el mundo del desarrollo de JavaScript front-end. Ahora, JavaScript como idioma ha existido durante más de 2 décadas (y, como siempre lo hacen los idiomas, está en constante evolución). Entonces hay cualidades intemporales.

Y sigue una mezcla de paradigmas de programación: desea conocer el desarrollo de procedimientos estándar, el desarrollo orientado a objetos (y aún peor en este caso, orientado a prototipos), los estilos funcionales son populares hoy en día y, por supuesto, el desarrollo impulsado por eventos / sin bloqueo. Estos son conjuntos de habilidades sólidas y establecidas que te ayudarán a conocer en todos los idiomas y plataformas. Una vez que asimila el desarrollo funcional o OO, cualquier implementación de lenguaje en particular es principalmente sintaxis.

Al mismo tiempo, a lo largo de los años en el mundo de JS, se espera que seas un maestro del dojo, luego jQuery, luego Backbone, luego Angular y hoy en día React. Hay otras tecnologías secundarias que pueden aparecer: subrayado, bootstrap, d3, entre otras, que caen en desgracia.

Si se concentra todo su tiempo en ser el mejor desarrollador de React que puede ser en este momento, es posible que pueda obtener un buen trabajo de React, pero se encuentra en serios problemas en 3 años cuando la industria cambia a lo que sea el próximo New Hotness es.

Si pasa todo su tiempo aprendiendo los fundamentos y haciendo caso omiso de las tendencias actuales, su currículum no cumplirá con las palabras de moda y no entrará por la puerta. Sin mencionar el hecho de que tendrá problemas para superar el inevitable muro de entrevistadores que fueron contratados únicamente por su conocimiento de Current Hotness que no entienden la importancia de conocer las cosas en general.

Entonces haces las dos cosas. Aprenda los fundamentos y las tecnologías transversales, y cómo aplicar las técnicas de diseño. Esto lo convertirá en un buen programador y aumentará su demanda, y garantizará que pueda resolver los desafíos de programación que a las empresas les gusta lanzarle.

Al mismo tiempo, manténgase al menos con un poco de tecnología especializada. No los necesita a todos, pero sí a uno. Y necesitas un poco de exposición a todos ellos. Entonces puedes entrar y decir: “Sé que es un trabajo de React, y he jugado un poco con él. Pero Angular es donde he hecho la mayor parte de mi trabajo. Estarás bien. Si dice que no ha aprendido este marco en particular, pero sabe todo sobre los patrones de diseño y la programación funcional, está en problemas, a pesar de que realmente es la respuesta correcta para dar.

Y ese fuerte conocimiento generalizado aplicable en todas partes te salvará el culo en 3 años cuando necesites aprender el siguiente código especializado de cadera a medida que repites todo el proceso.

He estado programando profesionalmente durante 18 años y he cambiado las especialidades que comercializaría a un posible empleador 3 o 4 veces. Es bueno tener las habilidades especializadas para ayudarlo si todavía quiere usarlo y encontrar a alguien contratando, pero las habilidades generales lo ayudan a aprender la próxima tecnología para su próximo trabajo.

Haz ambos.

Las empresas contratan especialistas. Los grandes programadores son generalistas. Este es el problema en nuestra industria. Es por eso que hay escasez de programadores expertos y un exceso simultáneo de trabajos de programación sin completar.

Cuanto más se centre en alguna tecnología y la domine, más fácil será encontrar un trabajo cuando esa tecnología esté en demanda, pero más difícil será encontrar un trabajo cuando no esté a su favor.

En mi caso tendí a especializarme. Esto funcionó para mí en el transcurso de una carrera de 40 años. Pero en cuanto a ti, no puedo aconsejar. Se desconoce qué demandará el mercado laboral a lo largo de su vida laboral. Paga su dinero y se arriesga.

He estado haciendo esto de ingeniería (tanto ingeniería eléctrica como ingeniería de software) durante más de 30 años.

Recomiendo siempre convertirse en un maestro en cualquier cosa en la que esté trabajando actualmente, así como en todo lo relacionado con ella. PERO, siempre haga un esfuerzo continuo para forzarse a nuevas áreas cada pocos años. Las empresas tienen una forma de querer encasillarte como el “chico de Java”, o el “chico de Python”, o “el chico del servidor”, y depende de ti elevarte por encima de eso. Y esto se aplica a algo más que la ingeniería. Tal vez le gustaría dar un giro en “gerente de proyecto”, o “gerente de programa”, o “CTO”, o “CEO” – nunca se sabe hasta que lo intente.

Sugiero centrarse en comprender primero las cosas que son eternas. Por ejemplo: diseño, etc.

La tecnología va y viene. Hace más de una década, Spring Framework es el mayor invento y la charla de la ciudad. Revolucionó su simplificación del software empresarial. Ahora, Spring es como “meh” y la atención se centra en otra cosa.

La segunda vez que Google me atrapó después de una pantalla de teléfono, el reclutador dijo que debería “aprender otro idioma o algo”. Así que ese es un punto de datos, pero no sé cuán generalmente aplicable es.

Personalmente, creo que las cosas que hacen un gran contribuyente son muy generales: juega bien con los demás, aprende rápidamente (y disfruta aprendiendo), retiene bien el conocimiento, resuelve bien los problemas. Creo que es un mito que la retención de empleados es imposible en nuestro campo, una empresa puede tener una alta retención si la convierte en una prioridad. La mala retención sería la única razón principal para que las empresas valoren la experiencia específica sobre las habilidades generales de un gran contribuyente. Hay algo de verdad en la idea de que las habilidades de aprendizaje y resolución de problemas pueden ser específicas del área. Si cambia el genio de la interfaz de usuario y el genio del controlador de dispositivo entre roles, es posible que nunca más sean tan geniales. Pero creo que es exagerado, y es más una cuestión de lo que a la gente le gusta hacer en lugar de lo que pueden hacer.

Sea un experto en un área con mucha demanda. Sugiero hablar con su reclutador local para averiguar qué papel es difícil de cumplir.

Cualquier nuevo graduado es un generalista. Cualquier graduado de bootcamp es un generalista. El mercado está saturado con estos candidatos.