Criar Jul 16, 2026 at 17:457Adicionar aos favoritos

Nik Malykhin precisava executar uma base Java 1.5 em hardware moderno. As primeiras respostas do seu LLM pareciam plausíveis, mas não resistiam ao escrutínio. A solução: parar de acreditar cegamente nele e obrigá-lo a se basear em evidências.
Um LLM aplicado a código legado produz respostas que soam corretas, mas não se encaixam no projeto. A disciplina que funciona: forçar o assistente a trabalhar com base em evidências — código, testes, artefatos — em vez de recorrer à sua memória.
Nik Malykhin contou em 16 de julho de 2026 no martinfowler.com sobre a modernização de uma base Java 1.5 para um ambiente recente. O contexto não é comum: as ferramentas modernas de análise e refatoração não gostam de Java 1.5 e muitas nem aceitam o código. Seu primeiro instinto — pedir correções diretamente ao assistente — gerou o que Malykhin descreve como respostas "plausíveis" que "did not hold up in the codebase": parecia bom Java 1.5, mas não correspondia ao repositório real.
A virada é metodológica. Em vez de usar o LLM como redator, Malykhin o utilizou como analista e verificador, ancorando cada etapa no repositório: leitura atenta do código existente, validação de hipóteses por meio de testes e traces de execução, recusa em avançar além do que o código permite afirmar. A mensagem do artigo é simples: modernizar legado com um LLM não acelera o processo como um arqueólogo, ele avança tão devagar quanto, mas com menos lacunas na demonstração.
O padrão recebe vários nomes na instrumentação moderna de agentes — evidence-first prompting, grounded reasoning, retrieval-first — mas segue uma regra comum: toda afirmação do assistente deve estar vinculada a um artefato do repositório (um arquivo, uma linha, um teste). A ausência dessa restrição é o que produz os "falsos positivos" mais custosos de um LLM em código legado: APIs posteriores à versão-alvo, métodos que não existem, imports fantasmas.
Para equipes que trabalham com legado, o "copiloto" não serve para escrever, mas para encontrar. A verdadeira produtividade vem de fazer o LLM ler, não de deixá-lo adivinhar. O corolário para um CTO: as métricas corretas de um projeto de modernização assistido por IA não são "linhas geradas", mas "hipóteses refutadas pelo próprio código". A diferença entre as duas é a que separa um projeto legado que chega ao fim de um projeto que volta a acumular dívida técnica.
Artigo produzido por inteligência artificial, revisto sob controlo editorial humano.
Inicie sessão para se juntar à discussão.
Interesting approach. Does this method also work for other legacy systems, or is it specific to Java 1.5?
Est-ce qu'on peut vérifier les suggestions du LLM avant de les implémenter, surtout sur un vieux système comme Java 1.5 ?
On pourrait tester les propositions du LLM dans un environnement isolé avant de les appliquer au système principal ?
Est-ce que ça marche aussi sur des gros projets Java 1.5 ?
Est-ce que ça marche aussi sur des gros projets Java 1.5 ? Les LLM ont du mal avec le code ancien très imbriqué, leurs suggestions sont moins fiables.
Est-ce que ça marcherait aussi pour d'autres vieux systèmes ?
Intéressant, mais comment ça se passe avec d'autres langages anciens ?
Les LLMs pourraient-ils vraiment sauver nos vieux systèmes ?
Harness Ops : post-mortems et bench des agents en prod