- Em ambientes de desenvolvimento assistidos por IA, está aumentando o número de casos em que engenheiros inexperientes enviam PRs grandes e não verificados
- A missão central do desenvolvedor não é simplesmente escrever código, mas entregar código com funcionamento comprovado
- Para isso, é obrigatório passar por duas etapas: teste manual e teste automatizado
- Agentes de programação também devem ser configurados para verificar por conta própria as alterações que produzem
- No fim, a responsabilidade é do desenvolvedor humano, e só o código acompanhado de evidências de verificação tem valor real
O problema de enviar código não verificado
- É mencionado o caso de engenheiros juniores que usam ferramentas com LLM para enviar PRs enormes e não verificados, confiando no code review
- Isso é apontado como grosseiro, ineficiente e uma forma de abdicar da responsabilidade como desenvolvedor
- O papel do engenheiro de software não é simplesmente produzir código, mas entregar código com funcionamento comprovado
- Código não verificado é visto como uma forma de transferir a carga para quem revisa
As duas etapas para provar que o código funciona
- A primeira etapa é o teste manual, em que é preciso confirmar diretamente que o código funciona corretamente
- É necessário configurar o sistema em seu estado inicial, aplicar a mudança e então verificar o resultado
- É possível comprovar isso anexando comandos de terminal e seus resultados em comentários do code review ou por meio de uma gravação de tela
- Depois de confirmar o funcionamento normal, também é preciso procurar problemas por meio de testes de casos extremos
- A segunda etapa é o teste automatizado, destacado como procedimento essencial graças ao avanço das ferramentas com LLM
- As mudanças devem vir acompanhadas de testes automatizados, e os testes devem falhar se a implementação for revertida
- Escrever testes segue o mesmo procedimento do teste manual, e a capacidade de integrar com o test harness é importante
- Considerar que apenas testes automatizados bastam e pular o teste manual é apontado como uma abordagem equivocada
O papel dos agentes de programação e a verificação
- Uma das principais tendências no campo de LLM em 2025 é o crescimento acelerado dos agentes de programação, com Claude Code e Codex CLI entre os principais exemplos
- Eles conseguem executar código e corrigir problemas por conta própria
- Agentes de programação também precisam comprovar suas próprias alterações e devem realizar testes manuais e automatizados
- No caso de ferramentas de CLI, é possível treiná-los para executar isso diretamente ou automatizar com sistemas como o CLIRunner do Click
- Em mudanças de CSS, também é possível configurá-los para verificar o resultado por meio de captura de screenshots
- Se o projeto já tiver testes existentes, o agente pode expandi-los ou reutilizar padrões
- A estrutura e a qualidade do código de teste afetam diretamente a qualidade dos testes gerados pelo agente
- O senso estético para código de teste é citado como uma competência central que distingue engenheiros seniores
A responsabilidade humana e o valor do código
- Computadores não podem ser responsabilizados, então esse papel precisa ser assumido por humanos
- Não há mais valor real em deixar que um LLM gere patches enormes
- O verdadeiro valor está em entregar código com funcionamento comprovado
- Ao enviar um PR, é indispensável incluir evidências de que o código funciona corretamente
4 comentários
Concordo muito. No modelo atual de código via PR, a responsabilidade acaba sendo transferida para os mantenedores e revisores. Não há desvantagem para quem envia código gerado por LLM sem revisá-lo.
Ao contribuir para o codebase do Google, parece que eles medem algo como o crédito do contributor; acho que outros projetos open source e empresas também vão adotar algo assim. Tenho a impressão de que a confiança vai se tornar um ativo ainda mais importante.
Ah, então o Google usa esse conceito.
> Vibe Engineering
Comentários do Hacker News
Ultimamente tenho visto com frequência uma anedota deprimente: um engenheiro júnior fortalecido por ferramentas de LLM joga um PR enorme e não testado para colegas ou mantenedores de open source, esperando que o code review resolva o resto. Pior ainda é que esse comportamento aparece não só em juniores, mas também em desenvolvedores seniores
Saber escrever um bom PR vale não só para código gerado por IA, mas para qualquer caso. Quando escrevo a descrição de um PR, organizo na ordem: como funciona hoje, por que a mudança é necessária e o que foi alterado. Também incluo como testar, screenshots e até os comandos de teste E2E, para reduzir a carga do revisor. Isso ajuda até em colaboração assíncrona ou em times com fusos diferentes
A essência do engenheiro é entender requisitos, convertê-los em fluxo lógico, equilibrar trade-offs e responder pelo resultado. Gerar código ou enviar PRs aleatórios é sintoma da falta desses fundamentos. Os agentes de código, na verdade, estão servindo para relembrar qual é a essência da engenharia
Testes são necessários, mas não suficientes. É preciso validar o código logicamente. Testes apenas demonstram o funcionamento correto para entradas e ambientes específicos
Eu não testo por obrigação. Faço isso simplesmente porque quero ver o código funcionando de verdade. Se ver o código rodando não te empolga, talvez essa profissão não seja para você
Ouvi falar que, graças aos LLMs, juniores estão jogando PRs gigantes, mas na nossa organização isso ainda não acontece
Não concordo com a frase “seu trabalho é entregar código em estado comprovado”. O trabalho real é resolver problemas de negócio. Claro, na maioria dos casos isso leva a código, mas a distinção é importante
Em um emprego anterior, trabalhei num fabricante japonês de hardware de alta qualidade, e quando o departamento de QA encontrava um bug, o lançamento do produto era interrompido. Por isso, cada departamento de desenvolvimento criou seu próprio time de QC para reforçar os testes prévios. Como resultado, o software era validado com muito rigor
Hoje em dia, a essência do trabalho virou fechar tickets. Como qualidade de código não aparece nas métricas, ela deixa de importar. Eu não participo desse tipo de sistema. O artesanato acabou; agora todo mundo quer compensado barato e cola
O problema é o que significa “código comprovado”. Há casos em que a pessoa anexa testes feitos por LLM e envia um PR gigantesco. Eu também faço vibe coding em projetos pessoais, mas fazer isso em nível de equipe é um mau hábito. A razão de contratar engenheiros é comprar sua especialização