Legado pode significar qualquer coisa, exceto com base no seu comentário 'não tão bem escrito', vou assumir que Legado significa tecnologias e padrões 'ruins' ou pelo menos 'desatualizados'. Se o código legado for bom, não se detenha e aprenda todas as suas linhas.
Eu não acho que haja avisos claros o suficiente contra o tipo de trabalhos e projetos que desviam sua carreira e o deixam preso em buracos sem valor nesse segmento até o momento.
Alerta de analogia esportiva: você acha que um defensor de linha na NFL aprende mais e se torna mais valioso jogando no time com o pior registro ou o melhor? Minha resposta: Eles não apenas são mais valiosos por terem jogado pelas melhores equipes, mas provavelmente adquiriram as melhores práticas e conhecimentos e evitaram práticas e atitudes de final de carreira.
Há muitos códigos terríveis anti-padrões por aí que realmente funcionam para os negócios e pagam muitos salários dos desenvolvedores. Proponho que um desenvolvedor que não tenha visto código suficiente feito da maneira "correta" possa confundir código anti-padrão com uma solução legítima para um problema. A empresa pode dizer que a solução funciona, mas não é aquela que você deseja em seu currículo ou que gostaria de se gabar para outros desenvolvedores. Isso também é relevante apenas se o seu caminho de crescimento pessoal incluir ganhar o respeito de seus colegas de engenharia e não apenas aumentar temporariamente a renda de qualquer empresa em que você trabalhe (parece ruim, mas, no final, a melhor engenharia ganha absolutamente o máximo de dinheiro IMO) .
Infelizmente, há muito código e muito tempo que pode passar antes que a dívida tecnológica seja revelada. E essa dívida tecnológica geralmente é reconhecida exatamente quando é tarde demais. Quem quer que tenha tentado parar com a dívida de tecnologia ou antipadrões antes, poderia ter sido marginalizado devido à despesa extra percebida ou à falta de entendimento do ect de escalabilidade. É nosso dever, como engenheiros, expor imediatamente as dívidas de tecnologia. Projetos sem engenheiros experientes correm o risco de atingir uma parede de tijolos em algum momento, na verdade todos os projetos, mesmo com desenvolvedores talentosos. A maioria das empresas vê "algum ponto" como tempo suficiente para corrigi-lo mais tarde. Isso torna as opções de trabalho para desenvolvedores iniciantes um assunto muito complicado. Também aponta os objetivos e as mentalidades totalmente diferentes entre desenvolvedores e empresas, e quão complicado é preencher a lacuna.
O objetivo dos engenheiros é 'incluir' o trabalho científico real e a consideração do projeto, enquanto o objetivo dos negócios é 'excluir' custos e tempo desnecessários. Como os engenheiros geralmente não sabem qual é o nível de esforço e tempo até que o estado final seja realmente concluído, o desenvolvimento de software ocorre como qualquer bom drama, com personagens como ágil, scrum e kanban desempenhando papéis principais.
Uma solução pode ser ficar longe do código incorreto até que você tenha visto código bom o suficiente para não ser "corrompido". Adoro dizer que desenvolvedores seniores criam soluções simples para problemas complexos. Da mesma forma, os desenvolvedores juniores de nível intermediário criam soluções complexas para problemas simples e complexos.
Outra vantagem é que você precisa trabalhar com códigos bons E ruins em diferentes pontos para obter entendimento. Se você não o fez, então vá em frente e esteja preparado para desaprender tudo quando encontrar um sistema melhor. Eu acho que essa é provavelmente uma trajetória mais comum para a maioria dos desenvolvedores.
Sou tendencioso este ano porque sinto que estou escalando uma montanha extremamente complicada de 'molho secreto'. Enquanto aumentarei minha capacidade de decifrar alguns dos piores padrões que já vi, é tão "personalizado" e "único" que não acredito que minha luta aumentará minha comercialização ou minha habilidade utilizável definida no meu futuro.
A fim de manter minha sanidade mental, estou apenas caminhando em ritmo constante e abraçando todos os bloqueios de estrada como par para o curso. Tendo acabado de revisar minhas metas anuais com meu chefe, que incluem cavar esse buraco legado, estou pensando que pode ser uma escalada sacrificial. Eu poderia sobreviver ao processo com críticas ruins e lentidão percebida. Este é um aviso realista e agourento para aqueles que se perguntam que trabalho tomar.
Disclaimer: Este post vai durar muito mais tempo do que minhas opiniões, então leve-o com um pouco de sal. Amanhã eu posso amar o código legado! (Duvido).