Cómo crecer como ingeniero de software en un trabajo que es principalmente desarrollo web

Estoy en una tienda que usa muchas herramientas y marcos heredados. Sin embargo, eso no me impide usar mi tiempo (mi tiempo … no el tiempo de la compañía) para profundizar en otros temas.

Cuando era desarrollador de C # Windows, hice una búsqueda para aprender HTML5, JQuery, CSS. Creé un proyecto paralelo (Inicio – followmetotheweb.apphb.com). Lo cual no es mucho, pero hizo el trabajo con fines de aprendizaje.

Cuando sentí que era hora de mejorar realmente en el aprendizaje de JavaScript, creé varios juegos en JavaScript (Operation Space Search and Rescue and Pacroids) y en ese momento también me suscribí a Screencasts para dominar el arte de JavaScript

Cuando sentí que necesitaba obtener una comprensión más profunda de la primavera, tomé una clase y me certifiqué. También me suscribí a un curso en plural que vi como un grupo con los otros miembros de mi equipo durante el almuerzo de lunes a jueves cada semana.

Cuando cambié a Java desde C # obtuve la certificación en Java. Los certificados muchas veces no significan mucho, pero para mí fue el curso perfecto para hacer el transbordador de C # a Java.

Hace un tiempo decidí enseñarme Python. Si bien estoy seguro de que hay mucho más que aprender, creo que lo sé lo suficientemente bien como para ser peligroso. fernandozamoraj / py_sandbox

Actualmente estoy leyendo la Guía de Administradores de Linux para dominar Linux y también me estoy preparando para la certificación Security plus. Instalé Linux en mi home box y estoy aprendiendo todo lo que puedo sobre BASH.

Admito que no hago estas cosas para crecer. Los hago principalmente porque los disfruto. Pero eso es lo que me ayuda a crecer.

¿Cuánto tiempo paso en esto? En estos días, alrededor de 10 a 20 horas a la semana, pero estoy en una etapa de mi vida en la que mi hijo menor tiene 16 años y pasa más tiempo con sus amigos que conmigo. Así que tengo mucho tiempo libre. Pero … he estado haciendo mis proyectos paralelos durante mucho tiempo, desde 2001.

Ninguno de mis proyectos paralelos me ha hecho ganar dinero, pero sí me ayudan a encontrar soluciones mucho más fáciles para mi trabajo. Aquí hay un enlace a mi cuenta de github fernandozamoraj (Fernando Zamora). Puedes ver desde allí el tipo de cosas con las que he jugado.

Así que mi consejo para ti es este. No confíe en su trabajo para crecer. Sería bueno, pero no siempre es posible. Confíe en sus proyectos paralelos para su crecimiento.

Todas estas cosas me ayudaron a crecer. Quizás también puedan ayudarte a crecer. Solo una idea.

Ser un buen ingeniero de software es diferente a dominar la teoría de estructuras de datos o algoritmos, se trata de resolver problemas y encontrar soluciones creativas. Lo que cuenta es cómo ayudó a su equipo a prosperar y al crecimiento del negocio.

Para mejorar usted mismo, trate de identificar las “debilidades” de su producto (problemas de rendimiento, lo que ralentiza el desarrollo de nuevas funciones, seguridad, …) y resuélvalas. Esto siempre se agradece, ya sea por su jefe actual o por cualquier empleador futuro (y eso siempre es una historia valiosa que contar en las entrevistas).

Además, desarrolle herramientas que facilitarán el trabajo de su equipo: recuerdo a un antiguo colega mío, que realiza principalmente desarrollo web, que desarrolló un bot de chat para ayudarnos a implementar código para probar entornos, o uno que desarrolló una extensión de navegador para hacer el prueba de nuestra aplicación mucho más fácil.

Esto le brindará reconocimiento dentro de su equipo y cuando surja el próximo gran proyecto, tendrá más peso para influir en las decisiones tecnológicas porque se le confiará como alguien que trabaja para mejorar el negocio.

Bueno, todas estas piezas de software que mencionó son componentes bastante sofisticados que podría comprender y dominar para brindarle diseños alternativos y un mayor rendimiento.

PostgreSQL: ¿ha dominado el diseño de esquemas, la lectura de planes y el rendimiento ajustando sus consultas? ¿Entiende los beneficios y las desventajas de usar ORM y cuándo no usar uno?

JavaScript: ¿ha dominado completamente la programación funcional y asincrónica? ¿Qué hay de los entresijos de la interpretación del motor de secuencias de comandos (y probablemente compilando su código JIT)?

Java: No estoy seguro de por qué alguien todavía usaría ese lenguaje hoy cuando hay Scala, así que ¿has tratado de aprender Scala (y akka)? ¿Qué hay de los principios de escribir código administrado, como producción de basura, recolección, diagnóstico de VM, carga de código, JIT-ing? ¿O grupos de hilos, NIO, Futuros y Promesas?

Apenas tiene uso para algoritmos complejos y estructuras de datos, pero eso es bastante típico de un ingeniero de software. Especialmente si está trabajando en un lugar que ya tiene una infraestructura realmente buena. Si realmente quieres hacer algo interesante, tienes que hacerlo en tu propio tiempo.