Primero, a pesar de la forma en que se formula su pregunta, no hay fin para ningún estudio, especialmente no en nuestro campo, donde aparecen cosas nuevas más rápido de lo que puede leer sobre ellas. Dicho esto, cuando quieres mejorar, existen las siguientes categorías que consideraría. Para obtener el mayor beneficio / ROI, debe elegir algo de su área más débil, por supuesto.
Conocimiento fundamental
A pesar de conocer los lenguajes de programación y tener experiencia práctica, a menudo se tienen áreas (especialmente autoaprendidas) donde los problemas básicos básicos se dejan incompletos. Piense en cosas como estructuras de datos, algoritmos, estrategias de caché, funciones hash, ...
Tenga en cuenta que esto también incluye los fundamentos de los lenguajes de programación: desde compiladores, técnicas de optimización y sistemas de tipos, hasta teoría de categorías, mónadas y similares.
Si está bien enseñado, como ha obtenido un título universitario durante varios años, es probable que ya sea fuerte en esta categoría (lejos de haber terminado, por supuesto, pero con una base sólida). De lo contrario, intente leer algunos libros en estas áreas para averiguar si hay algo que ni siquiera sabía que faltaba en su repertorio. Esta categoría es la más fácil para sobreestimarse.
Conocimiento Paradigmático
Siempre me sorprende cuando aparecen programadores que piensan que son sabelotodos, pero que ignoran por completo otros paradigmas. Si cree que la orientación a objetos es el final, esta es su categoría para mejorar. Si cree que la programación funcional también existe e incluso podría haber oído hablar de la programación lógica, entonces sigue siendo una buena opción. Hay muchos más paradigmas y aprender sobre ellos tiene el profundo efecto de brindarte algo similar a una nueva visión del mundo de la programación.
Simplemente no lo olvide: a menudo hay argumentos (bastante filosóficos en su naturaleza) sobre lo que puede considerarse un paradigma o no. No te desvíes de estos. Su objetivo debe ser ampliar su horizonte y eso significa aprender sobre estas cosas, ya sea que otra persona considere a X un paradigma por sí solo, o no, no hace ninguna diferencia en eso.
Conocimiento especialista
La más fácil de todas, y la menos útil al mismo tiempo. Por supuesto, puede comprometerse con una sola tecnología y conocer todos sus entresijos, pero debe estar preparado para pagar el precio. Las tecnologías envejecen y lo hacen a una velocidad cada vez mayor, lo que hace casi una garantía de que el tiempo invertido aquí será inútil durante varios años en el futuro.
También el problema de la disminución del rendimiento brilla aquí. Por ser un especialista en algo, significa que tiene que pasar incontables horas en ese tema limitado, y por lo tanto, por definición, le tomará mucho tiempo aprender algo nuevo y esa cosa nueva será una pequeña pieza de rompecabezas que es no va a cambiar las opiniones de nadie sobre nada.
Conocimiento del dominio
Ya sea porque es el dominio de su trabajo, o simplemente se basa en su interés personal, pero ser un experto en informática y un cierto dominio es muy valioso y gratificante. No estoy hablando de áreas secundarias de CS, como gráficos por computadora o IA. En cambio, observe que las computadoras se han apoderado de la vida de todos y eso hace que cualquier otro campo esté sujeto a las computadoras y a un área en la que pueda ingresar.
Este claramente cae en la categoría de "fuera de su campo", sin embargo, no es un "exterior" matemático agudo, sino más bien un campo de aplicación. Considera la medicina: no te aconsejo que seas médico. Sin embargo, vale la pena aprender los fundamentos de la medicina para aplicar su conocimiento existente sobre informática a los problemas de ese campo. Esto abarca desde técnicas de visualización, pasando por robótica, hasta sistemas expertos y mera gestión de datos para contabilidad / administración. Si bien ha hecho todo eso antes, hacerlo en otro dominio puede terminar siendo una experiencia completamente nueva.
Sin embargo, tenga en cuenta que este es un cambio mucho más radical en su dirección que las otras categorías. Es posible que no tenga ningún contacto con ese campo en su trabajo diario, lo que hace que sea extremadamente difícil de lograr. Incluso puede significar cambiar de trabajo. Además, necesitará algún tipo de certificación sobre su nuevo dominio: después de todo, es un novato completo en ese dominio y tiene que competir contra graduados de estudios interdisciplinarios, que ya comenzaron su viaje para convertirse en expertos en ese nicho.
Conocimiento suplementario
Como Mike Brown agregó, también existe el área de conocimiento que de alguna manera acompaña su trabajo actual, pero no es estrictamente necesario. No necesita ser un gerente de proyecto para aprender sobre la gestión de proyectos, pero, como de costumbre, el conocimiento adicional le dará una visión más amplia de cómo funciona el otro lado. Incluso se podría generalizar esto hasta el punto de centrarse en las habilidades blandas. Supongo que todos los que trabajaron en un proyecto real con otras personas conocen el valor de estos.