Quando eu rejeito código de IA mesmo quando ele funciona

Quando código “funcionando” ainda é rejeitado

  • Muitos argumentam que “ele roda e os testes estão verdes” é apenas um critério mínimo.
  • Motivos comuns para rejeição: não conseguir explicar a abordagem, o diff ser maior que o problema, abstrações prematuras, raciocínio/manutenibilidade mais difíceis, ou confiar mais na saída da IA do que na própria compreensão.
  • Vários observam que isso é idêntico a como bons revisores deveriam tratar código escrito por humanos (por exemplo, de juniores ou contratados).

Risco, responsabilidade e domínios

  • É exigido maior rigor para sistemas críticos para segurança ou de alto valor (pagamentos, infraestrutura, backends centrais) do que para ferramentas internas, projetos hobby ou sites estáticos simples.
  • Expectativas de plantão e suporte: se você não consegue depurar ou explicar o código às 3 da manhã, não deveria colocá-lo em produção.
  • Alguns consideram antiético fazer merge de código de IA que não revisaram de verdade em sistemas críticos.

Qualidade do código gerado por IA

  • Reclamações frequentes: abstrações excessivas, overengineering, utilitários duplicados, colunas/campos desnecessários, munging de dados no front-end em vez de uso adequado do backend/DB e “code salad” em domínios complexos.
  • Os LLMs são descritos como aumentando a entropia, divergindo em vez de convergir sem fortes restrições.
  • Bugs sutis (por exemplo, vazamento de dados em ML, casos-limite de contabilidade) são fáceis de passar despercebidos pela IA e difíceis de detectar por novatos.
  • Outros contrapõem que agentes médios já superam muitos programadores “enterprise” em estrutura básica e limpeza.

Fluxos de trabalho e guardrails

  • Alguns constroem harnesses elaborados: linters personalizados para “AI-isms”, verificações rígidas de pre-commit, TDD imposto por scripts, revisão cruzada com múltiplos modelos e auditorias periódicas assistidas por IA.
  • Outros usam IA principalmente como um pair programmer: planos, pequenos trechos, ajuda com sintaxe, porting entre linguagens/frameworks ou expansão de pseudocódigo em nível de comentários.
  • Alguns assumidamente fazem merge de código de IA que não entendem completamente, confiando em testes e na reação rápida a falhas; outros classificam isso como arriscado ou irresponsável.

Dinâmicas organizacionais e incentivos

  • Incentivos ruins já existentes—recompensar commits grandes e rápidos e comportamento cowboy—são vistos como amplificados pela IA, levando a uma acumulação mais rápida de dívida técnica.
  • Alguns preveem falhas no estilo “falência de software”, ou ao menos entrega mais lenta, alta rotatividade de seniors e tentativas de reescrita que também podem falhar.

Meio-termo e preocupações de longo prazo

  • Debate sobre se existe um “meio-termo” estável entre nenhum uso de IA e desenvolvimento totalmente agentic.
  • Preocupações com deskilling, dívida de compreensão e futuros sistemas que ninguém entende.
  • Outros veem a IA como um “teclado mais rápido” e argumentam que a verdadeira limitação continua sendo a compreensão e a arquitetura humanas, que não devem ser terceirizadas.