Estamos produzindo código mais rápido do que lemos

Leitura: ~7 minutos

Gerar código ficou rápido demais — e agora estamos produzindo código mais rápido do que lemos. Durante décadas, escrever código era caro. Cada linha custava tempo de uma pessoa qualificada, e por isso quase tudo que entrava no sistema tinha passado pela cabeça de alguém que o entendeu antes de digitar. Hoje, IA, agentes, ferramentas de linha de comando e IDEs inteligentes produzem código numa velocidade impressionante. Isso cria um problema novo: a capacidade de produzir software está crescendo mais rápido que nossa capacidade de compreendê-lo. Um desenvolvedor consegue aprovar em um dia milhares de linhas que não escreveria sozinho no mesmo período. O gargalo deixa de ser digitação. Passa a ser compreensão.

Pela primeira vez na história da programação, talvez seja mais fácil produzir código do que entender todo o código que estamos produzindo.

Leitura: ~7 minutos

TL;DR

  • Quando a IA acelera a escrita, o gargalo migra para a leitura.
  • Pull request gigante não é revisado, é deferido — e o problema grave não é o bug visível, é o código correto isoladamente e errado arquiteturalmente.
  • O antídoto não é proibir IA: é testes automatizados independentes, guardrails arquiteturais no CI e um sênior que volta a ser arquiteto e revisor.
  • A pergunta que decide: se esse código falhar amanhã, quem consegue explicá-lo?

Ouvir resumo (57s) — voz gerada por IA, narração dos pontos principais do post.

A produção acelerou. A compreensão não.

No ERP, que carrega décadas de produção real, sempre houve uma garantia implícita: o volume de código que entrava por mês era limitado pela capacidade do time de escrever — e, junto com a escrita, vinha o entendimento. Quem escrevia, entendia. Quem revisava, lia algo que outra pessoa havia raciocinado antes.

Isso mudou. Um agente bem alimentado gera em uma tarde o que um desenvolvedor produzia em duas semanas. A velocidade de digitação — que nunca foi o verdadeiro gargalo, mas servia de limitador natural — desapareceu. O que sobra é a parte que ninguém acelerou: ler, questionar, encaixar aquilo no sistema que já existe, com seus vinte anos de história, suas integrações fiscais, seus clientes de atacado que usam a tela de um jeito que nenhum diagrama documenta.

A tentação aparece todos os dias: aceitar o código porque “funciona”. Rodou, passou no teste rápido, entregou a funcionalidade. Mas código que ninguém entendeu não é entrega — é promessa feita por outra parte.

Pull request gigante não é revisado. É deferido.

A aritmética é simples. Se a geração cresceu dez vezes e o tempo de revisão não cresceu nada, cada revisor está olhando dez vezes mais código com a mesma atenção. O cérebro não multiplica atenção por dez. Ele faz o contrário: passa a rubricar. O botão “aprovar” vira um ato administrativo, não uma verificação.

E tem um agravante que a estatística de bugs não captura: o código correto isoladamente e errado arquiteturalmente. A função funciona. O teste passa. Mas ela duplica regra que já existia em outro módulo, consulta a tabela pela rota errada, ignora o padrão que sustenta as integrações do sistema. Em três meses, quando alguém precisar mudar aquela regra fiscal, vai encontrar duas versões — e vai alterar uma delas, sem saber que a outra existe. É assim que sistemas morrem: não de uma vez, mas por acúmulo de decisões corretas localmente e incompatíveis entre si.

Antes da IA, o tamanho de um pull request era limitado pelo esforço de digitar. Hoje um PR de quatro mil linhas sai em uma hora. E revisão de verdade, a que envolve entender o contexto e as consequências, roda a uma velocidade de centenas de linhas por hora — no máximo. A conta não fecha, e fingir que fecha é o erro.

Código gerado por agente: o conhecimento morre na sessão

O terceiro problema é silencioso. Quando um agente gera código, parte do raciocínio — por que aquela abordagem, o que foi descartado, qual restrição foi respeitada — fica no contexto da sessão. Quando a sessão acaba, esse conhecimento desaparece. Sobrou o código; evaporou o porquê.

Em time tradicional, o conhecimento se espalha por conversa, revisão e convivência. O desenvolvedor júnior que escreveu a função aprendeu algo construindo-a e conversou sobre ela no review. Com agentes, a mesma pessoa aprova três vezes mais código e aprende três vezes menos sobre o próprio sistema. Em dois anos, você tem um sistema que ninguém do time entende inteiro — e uma equipe que depende da IA para navegar nele. Dependência que não é de digitação, é de compreensão. Essa é mais difícil de reverter.

Somem-se as dependências criadas automaticamente: o agente precisa de uma biblioteca, adiciona, resolve o problema, segue. Ninguém avaliou licença, maturidade, superfície de ataque ou se aquele pacote duplica funcionalidade que o sistema já tinha. O supply chain do sistema cresce sem que ninguém assine embaixo.

Como revisar código gerado por IA

Se o gargalo é compreensão, a resposta precisa atacar compreensão — não proibir produtividade. O que funciona na prática:

Estreitar o canal. PRs pequenos continuam sendo a unidade de revisão, agora mais do que nunca. Agente que gera quatro mil linhas de uma vez está com escopo mal definido. Hoje, cinco PRs de oitocentas linhas sequenciais — cada um revisável de verdade — a um monólito deferido.

Ler pedindo explicação, não só o código. Exigir do agente (ou de quem o conduziu) um resumo: o que mudou, o que não mudou, quais regras de negócio foram tocadas, quais alternativas foram descartadas. Metade do custo de compreensão é recuperada em dez linhas de texto. A outra metade exige leitura de verdade — e é a metade que ninguém pode pular.

Revisar a fronteira primeiro. Onde o código novo encosta no sistema velho é onde mora o problema arquitetural. Assinatura de função, consulta a dados compartilhados, regra fiscal duplicada. O miolo da função o teste cobre; a fronteira, não.

Testes e guardrails: compreensão verificada por máquina

Ninguém vai voltar a entender linha por linha tudo que entra. A saída honesta é deslocar parte da compreensão para artefatos verificáveis.

Testes automatizados deixaram de ser virtude e passaram a ser pré-condição. Se o código foi escrito por uma máquina, quem verifica também pode ser uma máquina — mas em condições que a máquina geradora não controla. Teste escrito junto com o código pelo mesmo agente vale menos que teste escrito a partir da especificação, por caminho separado. Cobertura de regressão nos fluxos que sustentam o negócio — emissão de documento fiscal, fechamento de pedido, saldo de estoque — é o que permite aceitar velocidade sem aceitar cegueira.

Guardrails arquiteturais são o acordo coletivo. Camadas que o código gerado não pode atravessar, padrão de acesso a dados, limites de dependência, convenções que a revisão confirma com ferramenta, não com memória. Em sistema com décadas de produção, os guardrails são o que impede que cinco agentes autônomos, cada um resolvendo seu problema, cindam a arquitetura em silêncio. Uma checagem de dependências circulares e uma verificação de camadas no CI custam pouco e previnem o erro que nenhum teste unitário pega.

O novo papel do desenvolvedor sênior

O sênior não perdeu espaço — perdeu a ilusão de que sua função era digitar rápido. O papel volta ao que sempre foi em sistemas maduros: decidir arquitetura, definir os guardrails, revisar as fronteiras e dizer “não” para o elegante que não caberia no sistema.

O júnior também muda: aprende o sistema lendo código que não escreveu, com mediação de quem entende — o inverso do caminho tradicional, onde se aprende escrevendo. Isso exige mais, não menos, presença dos mais experientes.

A pergunta que faço ao time antes de aprovar qualquer coisa gerada por agente é simples: se amanhã esse código falhar em produção, quem consegue explicá-lo? Quando a resposta é “ninguém”, o código não foi aceito — foi apostado. E apostas em sistema que sustenta empresa há décadas não são aceitáveis, por mais rápido que tenham sido geradas.

A velocidade de produzir software vai continuar crescendo. A de compreender, não — ela cresce com pessoas, e pessoas têm ritmo. Quem equilibrar as duas curvas entrega mais rápido e com segurança. Quem só acelerar a primeira vai descobrir, da pior forma, que sistema que ninguém entende é sistema que ninguém consegue mudar.

Leitura relacionada

Posts Similares

3 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *