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.
- ¿Cómo es el día típico de un programador profesional trabajando en una empresa de TI (horario de trabajo probable, tareas diarias, rutina, etc.)?
- ¿Cómo es trabajar en la oficina de Pune de Nvidia como ingeniero de software?
- ¿Hay suficientes oportunidades de trabajo en Polonia para los ingenieros de software?
- ¿Qué porcentaje de ingenieros de software no tienen un título en informática?
- ¿Por qué estoy estresado para trabajar como ingeniero de software?
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.