Histórias sobre legados
Todo software tem a sua história! Muitas vezes somos nós, os responsáveis por "virar a página" deixando para trás os erros, e levando adiante os acertos e aprendizados.
Reescrever um software, certamente é um dos momentos mais prazerosos para os programadores. Além de estar envolvidos nas discussão de arquitetura, modelagem, etc. Os projetos novos são sempre ótimas oportunidades de implementar, da forma certa, tudo aquilo que foi aprendido com o tempo e com as falhas.
Mas diferente de trabalhar em um projeto novo, reescrever softwares legados tem um "sabor especial” para mim: Estamos lidando com um software vivo!
É algo real, usado por clientes e que agora vamos ter a oportunidade corrigir algumas das más decisões tomadas passado, ou melhorar aquilo que já não atende bem as demandas do presente.
Seja responsável
Entenda, não há aqui qualquer leviandade ou egocentrismo. Jamais deixaria gostos e vontades pessoais se sobreporem as reais necessidades do cliente/projeto.
Apesar de eu dizer que esse tipo de trabalho é o que mais me desafia, isso não quer dizer que eu saia propondo reescrever tudo aquilo que vejo pela frente. Muito pelo contrário, por saber o risco que envolve essa decisão, é que faço questão de levantar diversas objeções antes de tomar qualquer decisão.
Migrar sistemas legados é um momento muito crítico para qualquer empresa, por isso a experiência conta muito nessas horas.
Razões para migrar um legado
É importante saber o que motiva uma empresa a tomar essa decisão tão arriscada. Sem entender os reais motivos, não faz sentido nenhum discutir sobre uma nova arquitetura ou modelagem. Inclusive, não vale a pena nem começar a pensar em migrar o software legado se não tivermos feito as contas para provar que essa é a melhor decisão.
Arrisco a dizer que nenhum critério técnico serve para decidir se devemos, ou não, reescrever um software legado.
O cálculo deve se basear no risco que o legado é para o futuro da empresa.
Há um risco de degradação da performance se não migrarmos para algo novo? Sim. Mas quanto custa escalar o número de máquinas? Quanto economizaríamos com o novo software? Quanto custa conviver com esse problema de performance e aumentar a equipe de suporte?
Entende que nenhuma resposta técnica responde essas questões?
Então, antes de tudo, liste os principais riscos que justifiquem a migração do seu legado. Isso o ajudará a entender o real risco de fazer, ou não, uma nova versão do seu sistema.
Seja estratégico
Eu já tive o prazer de estar envolvido em algumas migrações de sistemas legados e confesso que esse é um tipo de desafio no qual eu gosto de trabalhar.
Hoje, com mais cabelos brancos, consigo entender as vantagens e desvantagens da reescrita de um software, e qual a melhor abordagem de usar durante esse processo.
Afinal de contas, o trabalho não se resume em apenas em reescrever o software. O grande desafio é fazer a conta fechar com saldo positivo! Não esqueça que depois é necessário saber a melhor época, e “o como”, desligar o software legado.
Virada de chave
Em meados de 2016, enquanto trabalhava na Olist, fiz parte da equipe responsável pela migração do legado. Foi uma ruptura bem grande, pois sairíamos de um monolito para uma arquitetura de microserviços. Saber o real objetivo da migração é o que define/justifica as decisões de uma nova arquitetura. E no nosso caso, o motivação era jamais ficar offline!
Partindo desse princípio, toda a nova arquitetura foi desenhada visando uma melhora escalabilidade e resiliência.
Tínhamos um roadmap das features que eram obrigatórias para conseguir substituir o legado, antes da próxima BlackFriday.
Porém, a vida está pouco se lixando para o seu planejamento. 🤷♂️
Pouco antes da BlackFriday, aconteceu um outro grande evento do e-commerce brasileiro, que fez com que fossemos obrigados a antecipar a virada de chave dos sistemas.
Mesmo com o sistema "incompleto", o cálculo do risco dessa decisão fazia total sentido. Era melhor administrar a ausência de algumas features, do que ficar offline e não conseguir de vender na melhor data de venda do ano (não é a melhor, mas é uma das melhores).
Estrangulamento
Pouco tempo depois, dessa vez como freelancer, fui contratado para reescrever um sistema que havia sido desenvolvido sobdemanda para gerir uma empresa que fazia gestão de aluguel de imóveis por temporada.
O freelancer responsável pelo sistema legado tinha pouca experiência (era o projeto dele) e por isso fazia tudo conforme o cliente pedia. O que causou uma entropia do sistema e na modelagem dos dados.
Trabalhei junto com ele por um curto tempo e viramos bons amigos. E sempre faço questão de ressaltar o EXCELENTE TRABALHO QUE ELE FEZ na sua primeira experiência profissional.
Porém após analisarmos a dificuldade de evoluir o sistema atual, decidi junto com o cliente que era realmente necessário de criar algo novo. Então fui atrás da raiz do problema, a principal dor que ele tinha. E o cliente resumiu ela em uma frase:
Não consigo calcular o valor exato que devo repassar aos proprietários dos 7 imóveis que gerencio.
Com o ponto de partida bem definido, meu objetivo era resolver essa dor da melhor forma possível. E o nosso combinado foi o seguinte:
O financeiro você olhará no sistema novo, o resto estará no legado.
Para garantir esse comportamento, criei alguns sistemas temporárias para lidar com ambos sistemas ao mesmo tempo até conseguirmos substituir o legado por completo.
Então eu duplicava todas as novas reservas nos dois sistemas, garantindo que ele conseguisse realizar o trabalho do dia-a-dia no legado. E no dia do repasse, consegiusse ver os relatórios no sistema novo.
E foi só alegria! Nos primeiro mês já foi possível saber os valores com precisão. 😎
Com o tempo, seguimos evoluindo e mapeando as funcionalidades que realmente eram relevantes. A cada nova feature no sistema novo, um "menu" era removido do legado.
Até o dia em que tudo que era importante, estava rodando no sistema novo. Então foi fácil desligar o legado por completo.
Essa é uma história que conto com orgulho. Pois, modéstia a parte, fiz um excelente trabalho junto com esse cliente.
Por mais de 2 anos, trabalhei sozinho para esse cliente e fiz muitas coisas que impactaram positivamente o negócio. Possibilitando criar novas fontes de receitas e expandir o negócio.
Viramos amigos. Passei um natal em família em Gramado/RS e assistimos o espetáculo do Natal Luz, por conta desse cliente (agora amigo).
Porém segui por outros caminhos e precisei deixar de atender ele. Mas agora ele já conseguia gerenciar perfeitamente o seu portfólio com mais de 47 imóveis, sem a necessidade de crescer o staff.