Legacy puede significar cualquier cosa, pero en base a su comentario 'no tan bien escrito', voy a suponer que Legacy significa tecnologías y patrones 'malos' o al menos 'desactualizados'. Si el código heredado es bueno, no te detengas y aprende cada línea de él.
No creo que haya advertencias lo suficientemente claras contra el tipo de trabajos y proyectos que desvían su carrera y lo mantienen atrapado en valiosos agujeros en este hilo hasta la fecha.
Alerta de analogía deportiva: ¿Crees que un patrocinador de línea en la NFL aprende más y se vuelve más valioso al jugar en el equipo con el peor récord o el mejor? Mi respuesta: no solo son más valiosos por haber jugado para los mejores equipos, sino que probablemente recogieron las mejores prácticas y conocimientos y evitaron recoger las prácticas y actitudes de fin de carrera.
Existe una gran cantidad de códigos antipatrones terribles que realmente funcionan para el negocio y pagan muchos salarios de desarrollo. Propongo que un desarrollador que no haya visto suficiente código hecho de la manera 'correcta' podría confundir el código antipatrón con una solución legítima a un problema. La empresa puede decir que la solución funciona, pero no es una que desee en su currículum o una que presumiría ante otros desarrolladores. Esto también es relevante si su camino de crecimiento personal incluye ganarse el respeto de sus colegas de ingeniería y no solo aumentar temporalmente los ingresos de cualquier empresa para la que trabaje (suena mal, pero al final, la mejor ingeniería absolutamente gana la mayor cantidad de dinero IMO) .
Desafortunadamente, hay mucho código y mucho tiempo que puede pasar antes de que se revele la deuda tecnológica. Y esa deuda tecnológica generalmente se reconoce exactamente cuando es demasiado tarde. Quien haya tratado de detener la deuda tecnológica o los patrones anti antes, podría haber sido dejado de lado debido al gasto adicional percibido o la falta de comprensión de la escalabilidad, etc. Es nuestro deber como ingenieros exponer la deuda tecnológica de inmediato. Los proyectos sin ingenieros experimentados están en peligro de golpear una pared de ladrillos en algún momento, en realidad todos los proyectos incluso con desarrolladores talentosos. La mayoría de las empresas ven "algún punto" como tiempo de sobra para arreglarlo más tarde. Esto hace que las elecciones de trabajo para los desarrolladores emergentes sean un asunto muy complicado. También señala los objetivos y mentalidades completamente diferentes entre desarrolladores y empresas y lo complicado que es cerrar la brecha.
El objetivo de los ingenieros es 'incluir' el trabajo científico real y la consideración del diseño, mientras que el objetivo de las empresas es 'excluir' el costo y el tiempo innecesarios. Dado que los ingenieros a menudo no saben cuál es el nivel de esfuerzo y tiempo hasta que el estado final se realiza, el desarrollo de software se desarrolla como un buen drama con personajes como ágil, scrum y kanban como protagonistas.
Una conclusión podría ser mantenerse alejado del código incorrecto hasta que haya visto suficiente código bueno para no ser 'corrompido'. Me encanta el dicho de que los desarrolladores senior crean soluciones simples para problemas complejos. Del mismo modo, los desarrolladores de nivel medio junior crean soluciones complejas para problemas simples y complejos.
Otra conclusión podría ser que necesita trabajar en un código bueno Y malo en diferentes puntos para obtener comprensión. Si no lo ha hecho, entonces hágalo y prepárese para desaprender todo cuando encuentre un sistema mejor. Creo que esta es probablemente una trayectoria más común para la mayoría de los desarrolladores.
Este año soy parcial porque siento que estoy escalando una montaña extremadamente complicada de 'salsa secreta'. Si bien aumentaré mi capacidad de descifrar algunos de los peores patrones que he visto, es tan 'personalizado' y 'único' que no creo que mi lucha aumente mi comerciabilidad o mi conjunto de habilidades utilizables en mi futuro.
Para mantener mi cordura, solo estoy avanzando a un ritmo constante y abrazando todos los bloqueos de la carretera como parte del curso. Después de haber revisado mis objetivos anuales con mi jefe que incluyen la excavación de este hoyo heredado, estoy pensando que podría ser una escalada de sacrificio. Podría sobrevivir al proceso con malas críticas y lentitud percibida. Esta es una advertencia realista y premonitoria para aquellos de ustedes que se preguntan qué trabajo tomar.
Descargo de responsabilidad: esta publicación durará mucho más que mis opiniones, así que tómala con un grano de sal. ¡Mañana podría amar el código heredado! (Dudo).