Por Israel Lana De Sousa, Tech Lead.
Queria falar sobre algo que raramente vejo sendo discutido por aí. Todos estamos acostumados com os termos dívida técnica, código legado e sistemas legados.
Essas duas coisas são consideradas os grandes vilões da área de tecnologia, capazes de fazer até o mais destemido desenvolvedor tremer.
Mas e quando foi você quem criou o monstro? O que fazer? Como lidar com essa triste realidade?
Você é Victor Frankenstein, e sempre será conhecido pelo monstro que criou, nunca pelo doutor que era?
Essas perguntas passam frequentemente pela minha cabeça, porque, infelizmente, sou Frankenstein.
Criei algumas coisas horrorosas ao longo do meu trajeto. Fui responsável por desenvolver diversos sistemas que, hoje, até eu tenho dificuldade em dar manutenção.
Parte do código legado da 77Sol tem meu nome escrito nele. Na época, fiz o que precisava ser feito. Hoje, sou eu que olho pra esse código e solto um profundo suspiro antes de tentar entender o que passou na minha cabeça.
Por isso, acho importante ser vulnerável e falar sobre como isso te afeta pessoalmente e profissionalmente.
O que é um código legado?
Afinal, o que é código legado?
Michael Feathers define código legado como aquele que não tem testes. Mas não gosto dessa definição, acho simplista demais.
É possível legado escrever um código sem testes que não dê problemas e seja fácil de manter. Não que seja uma boa prática, mas é possível.
Se olharmos para o que a comunidade considera código legado, podemos destacar dois pontos principais: tecnologia e manutenção.
- Tecnologia: um sistema que utiliza tecnologias pouco usadas no mercado (Cobol, Fortran, Assembly) é visto como código legado porque, mesmo que o código seja bem estruturado, poucas pessoas conseguirão dar manutenção;
- Manutenção: considero esse o ponto mais importante. Código legado é aquele extremamente difícil de manter, independentemente do motivo.
Isso pode acontecer por várias razões:
- Dependências muito desatualizadas;
- Frameworks que não são mais utilizados;
- Código abandonado, sem documentação e sem contexto;
- Estrutura confusa e difícil de entender.
E então, voltamos à questão principal: o que fazer quando você criou o monstro?

Como lidar com o legado que você mesmo criou?
Com minha "longa" experiência nisso, tenho algumas reflexões que podem ajudar a encontrar paz de espírito e lidar melhor com o fantasma do código legado.
1 - O código que você escreveu estava de acordo com sua senioridade?
Você não pode se culpar por algo que não sabia no passado. Se cobrar por erros de quando era júnior, usando o conhecimento que tem hoje, é uma insanidade.
Como júnior, sua principal responsabilidade é aprender. Você vai criar códigos problemáticos, pouco performáticos, difíceis de entender. E tudo bem! É assim que se aprende.
Se não houver um sênior para apontar os problemas e te guiar, a culpa não é sua.
2 - Você respeita seu código legado?
Trazendo de volta Frankenstein, o monstro era visto como tal apenas por sua aparência. Mas não podemos "monstrificar" nosso legado.
Código legado também existe por conta do momento da empresa. Em startups, muitas vezes é preciso ser rápido. Isso significa abrir mão de qualidade e escalabilidade.
E, se hoje você consegue refletir sobre isso, é porque esse código cumpriu seu papel.
3 - Você aprendeu com o erro?
Se o código foi necessário no passado, continuar repetindo os mesmos erros hoje seria insano.
Escrever um código legado te faz sentir na pele a importância de uma boa arquitetura. Se você já passou por isso, tem a obrigação de garantir que não aconteça de novo.
4 - O que você está fazendo para se redimir?
Este artigo não é para aliviar sua culpa. Você deve entender os pontos anteriores e agir.
Se você criou o monstro, tem a responsabilidade de resolvê-lo. Isso significa:
- Criar uma estratégia para refatorar o código;
- Criar testes unitários para garantir as regras de negócio;
- Atualizar dependências e frameworks obsoletos;
- Ser pragmático: focar no que ainda tem valor e eliminar o que não faz mais sentido.
Quase ninguém fala sobre os legados que criaram. Normalmente, escondemos esses códigos embaixo do tapete como um segredo sujo.
Mas acredito que devemos nos orgulhar deles. Mais importante ainda, devemos aprender com eles.
Gostou de saber um pouco mais sobre código legado? Espero que esse artigo tenha ajudado a compartilhar um pouco do meu aprendizado. Se você também já criou um monstro, saiba que não está sozinho.