As dívidas técnicas receberam um grande desconto 

Todo mundo que trabalha com software há algum tempo tem seus esqueletos no armário. Um monte de código que foi escrito só para funcionar e Deus sabe como as coisas estão de pé até hoje. Alguns desses produtos têm uma dívida técnica tão alta que são quase impagáveis. 

Entretanto, nos últimos anos essas dívidas técnicas vêm recebendo descontos mesmo que as pessoas não percebam e eles vêm da Inteligência Artificial.

Case pagamento de Dívida Técnica

Quero contar um caso que passamos com a migração de uma aplicação. Como em toda organização, temos softwares bem antigos em funcionamento. Obviamente, os mais utilizados sofrem evoluções constantes, então as dívidas deles são bem pequenas e controladas. Porém, há alguns que são utilizados esporadicamente ou têm poucos usuários e, consequentemente, pouca manutenção. Com isso, eles ficam desatualizados e no mundo de produtos digitais, sofrer pouca atualização é um sinal de que, em breve, a dívida técnica será grande, mesmo que, na época, tenham sido construídos com as melhores técnicas disponíveis. Isso acontece porque é necessário manter toda uma infraestrutura para suportar aplicações antigas em funcionamento. 

Essa aplicação em questão foi construída em 2011. Este artigo foi escrito em 2025, logo a aplicação tem quase 15 anos. Para ela rodar era necessário:

  • JDK11 (última atualização em 2018)
  • Richfaces (última atualização em 2014, descontinuado)
  • Hibernate 4 (última atualização em 2014)

O que queríamos

Nosso objetivo era migrar não para a tecnologia que utilizamos hoje, que é Angular com Spring Boot, mas para algo intermediário.

  • JDK 21
  • Primefaces mais recente
  • Hibernate  mais recente
  • Dependência das bibliotecas “javax” que foram substituídas pelo “jakarta”

Com isso teríamos uma aplicação atualizada e poderíamos migrá-la para a nossa infraestrutura mais atualizada. 

Qual Inteligência Artificial?

Já estamos utilizando IA generativa há bastante tempo. Delas, a que melhor responde problemas de programação é o Claude, logo ele foi escolhido para auxiliar na migração. 

A equipe

Eu.

Como foi feito

Coloquei no Claude Pro os arquivos chave da aplicação:

  • web.xml
  • pom.xml
  • hibernate.cfg.xml (não guardamos senhas nem strings de conexão aqui)

Passei para ele o problema: “Tenho essa aplicação que roda em uma arquitetura antiga e por isso tenho que manter toda a infraestrutura para mantê-la. Quero atualizar a aplicação para: JDK 21, Primefaces 15, Hibernate 7 e trocar as dependências Javax por Jakarta. O que eu preciso fazer?”

Ele fez toda a atualização dos arquivos que eu informei para suas novas versões e ainda disse o que eu deveria atualizar dentro da aplicação. 

Entretanto, estava com pressa e com preguiça, então peguei um monte de arquivos do meu backend, joguei nele, pedi pra ele me ajudar na migração e me dizer o que foi necessário alterar.

Depois fiz a mesma coisa com o frontend e ele processou as alterações sempre me relatando o que estava sendo atualizado. Estava um tanto impressionado com a facilidade e decidi ser audaz. Eu pedi para ele migrar os arquivos javascript melhorando a legibilidade do código (estava daquele jeito que só a misericórdia de Deus faz com que funcione). Confesso que ficou parecendo uma obra de arte. Então, decidi ir além e pedir para ele melhorar o CSS agrupando os arquivos relacionados. 

Resultado

Essa não foi a primeira vez que tentamos migrar essa aplicação. Esse esforço já havia acontecido algumas vezes e, como demorava muito para fazê-la, acabávamos tendo que parar porque surgia sempre algo mais prioritário. 

Com a ajuda da IA, uma pessoa sozinha fez a migração em menos de 8 horas (1 dia de trabalho). Hoje, a aplicação foi totalmente migrada e está em funcionamento de cara nova na mesma infraestrutura das demais. 

Nem tudo são flores 

Lendo ou ouvindo esse relato pode parecer que foi só jogar meia dúzia de prompts e tudo funcionou. Não foi bem assim. Quero falar também o que não funcionou direito.

Contexto limitado

O pior problema de colocar a IA para migrar uma aplicação inteira é que o tamanho de uma conversa é limitado. O Claude faz uma restrição de número de tokens * e quando você atinge esse limite, ele empaca. Nesse caso, não tem jeito, você tem que iniciar uma nova conversa e repetir o que estava fazendo novamente quantas vezes forem necessárias. 

Além disso, reparei que quanto mais longa é a conversa, mais chances ele tem de alucinar **. Fato que eu já havia percebido em outras IAs como ChatGPT, Gemini e Deepseek. Elas parecem que se perdem durante a conversa e você perde muito tempo tentando corrigir o rumo da prosa.

Uma das coisas que eu tive que fazer, lá pela terceira ou quarta vez que eu reiniciei a conversa, para evitar consumir meus tokens, foi pedir para o Claude converter os arquivos e parar de me explicar o que estava sendo alterado. Como ele já havia feito diversas vezes, eu já sabia o que ele estava mudando. 

É importante ter essa limitação de contexto em mente, pois aplicações tendem a ter muito conteúdo espalhado em diversos tipos de arquivos construídos durante meses. No final, acabei esbarrando no limite diário do Claude. É um limite que nem reiniciar a conversa resolve. Ou você faz um upgrade da assinatura ou aguarda algumas horas até renovar o saldo de tokens.

Terminando no Grok

Quando alcancei o limite diário do Claude, ele me disse que o saldo seria zerado às 5 horas da manhã do dia seguinte. Como eu estava empolgado, fui para o Grok terminar a migração. Ele não é tão bom quanto o Claude para programação, mas é bom o suficiente para continuar o bom trabalho. 

No Grok reparei que ele não estava compreendendo a migração e, algumas horas depois, vi que ela ficava incompleta. Por exemplo, em alguns arquivos ele não fazia a troca da referência de javax pela jakarta. Isso se resolveu quando eu forneci modelos de classes já migradas pelo Claude. 

Entretanto, o problema de contextos longos permanece. Quanto mais longa a conversa se tornava, mais facilmente o Grok se perdia e eu reiniciava tudo após perder um tempão tentando corrigi-lo.

Atualizado pero no mucho

Outra coisa que percebi é que, embora eu tenha pedido para ele atualizar para as versões mais atuais de bibliotecas e padrões, notei que nem sempre ele fazia isso. Por exemplo, quando ele migrou o web.xml, ele trocou a versão dele do atrasado 2.5 para o 4.0. Melhorou, mas na época já estava disponível a versão 6.0. Isso se repetiu algumas vezes com outras bibliotecas. Algumas vezes eu tive que corrigir para manter as versões mais atualizadas delas.

Isso reforça a frase que tenho utilizado bastante.

A qualidade da conversa que você tem com a IA depende do seu conhecimento sobre o assunto tratado. 

Erros na migração do código-fonte

Em alguns momentos ele acabava cometendo erros de codificação, por exemplo, fazendo referências a classes que não existem ou métodos inexistentes. Era como se ele se confundisse nas versões das bibliotecas e frameworks.

Nesses momentos eu apontava o erro e mostrava o caminho das pedras. Então, na imensa maioria das vezes, ele voltava a acertar. 

Conclusão

Eu menciono os problemas que aconteceram apenas para que você saiba que fazer migração de aplicações ainda não é apertar um botão e tudo vai sair perfeito do outro lado. Será necessário algum esforço, principalmente se a aplicação for grande. 

Entretanto, o esforço é mínimo se comparado ao resultado. Essa aplicação levou meses para ser construída, tivemos algumas tentativas de migração anteriormente que não deram em nada porque demoravam muito e não era uma prioridade. Já com a IA, a migração foi feita em menos de 1 dia.

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Sobre o autor(a)

Trainer na K21

Avelino Ferreira é formado e mestre em Ciência da Computação. Teve uma longa trajetória na TI, começando como programador e chegando a gestor de diversos times de criação de produtos digitais. Conheceu e começou a adotar as melhores prática de de Métodos Ágeis em 2008. Desde então, se dedica a auxiliar outras empresas na construção da cultura ágil. Atualmente, é Consultor e Trainer na K21

Artigos relacionados

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Hoje a ideia não é apresentar um conteúdo detalhado, mas sim uma pequena explicação sobre as Classes de Serviço do Kanban. Caso queira mais informações dá uma olhada nesse artigo: Classes de serviço e seus 4 principais arquétipos. Aqui apresento…

Saiba como evitar o uso caótico do orçamento e garantir que os recursos financeiros sejam alocados de forma eficiente através do uso de times estáveis e uma estratégia realmente orientada a uma gestão por resultados….
Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Fonte do vídeo: https://youtu.be/VX3lz5ph8A0 Imagine a situação, seu time recebe um monte de reclamações porque está levando mais de 30 dias para realizar uma entrega. Vocês fazem uma retrospectiva e verificam que a etapa de entrega está muito lenta e…

Avelino segurando um microfone e uma camiseta preta escrita Agile. Ele é pardo, barba e cabelos grisalhos.

Gostaria de abordar um tema que comentamos muito pouco na gestão de fluxo de trabalho, a dependência entre os itens de trabalho. Já escrevi sobre a dependência entre fluxo e times, porém creio que nunca tratei o caso de dependência…