Andrej Karpathy popularizou o termo "vibe coding" em fevereiro de 2024: descrever a tarefa para um LLM, aceitar o código que volta e seguir sem ler. O verbete da Wikipedia registra a origem e a definição corrente.

Para demo, script interno e protótipo pessoal, o método entrega resultado rápido e o erro cabe no bolso de quem experimentou. A conta muda quando o código entra em sistema com usuário, pagamento e dado pessoal.

Onde o método funciona

  • Boilerplate: CRUD, DTO, configuração de build, decorator repetitivo.
  • Script de migração de dado com escopo fechado e execução única.
  • Protótipo de tela para validar fluxo com o time antes de investir em estrutura.
  • Teste de fumaça em funcionalidade pequena.

Nesses quatro casos, o erro custa minutos e ler linha a linha não paga o tempo.

O que o modelo não sabe do seu sistema

LLM aprende padrão de código público e reproduz com fluência. Ele não recebe:

  • Invariante de negócio que o time defende, como "pedido cancelado não volta para fila".
  • Contrato implícito entre serviços que existe em conversa e não em código.
  • Curva de latência negociada com o cliente.
  • Histórico de trade-off que explica a solução estranha no módulo de billing.

Código gerado sai correto no contexto do dataset de treino. No contexto do seu domínio, a correção depende de alguém conferir.

Teste gerado carrega o mesmo buraco

O contra-argumento aparece cedo: teste verde passa a substituir a leitura. Teste gerado cobre o caminho feliz que o modelo enxerga. O teste que protege o sistema codifica regra de negócio, e essa regra é a parte que o modelo não recebeu. O capítulo 11 de Software Engineering at Google trata teste como ferramenta para mudar código com segurança, o que depende do teste codificar a propriedade certa.

Existe outro custo. Código que ninguém entendeu não responde perguntas durante um plantão. O incident commander pergunta o que aquele handler faz, e a resposta não existe no time.

O que o erro custa em produção

  • Validação de input esquecida abre vetor de injection, uma das categorias do OWASP Top 10.
  • Token impresso em log vaza pelo aggregator, que guarda o arquivo por semanas.
  • Lock faltando em lógica de pagamento duplica transação.
  • Retry sem idempotência roda o job de novo depois do timeout.

Esses quatro cenários acontecem com código humano também. O Google SRE Book descreve produção como responsabilidade de quem escreveu e opera o serviço, e essa responsabilidade sobrevive a qualquer ferramenta de geração.

O arranjo que sustenta produção

  • Você descreve o problema, a IA devolve caminho, e você lê o arquivo antes do commit.
  • Lógica de negócio passa pelo mesmo filtro do review de um júnior: regra, fronteira, teste.
  • Código de segurança passa por leitura do que ele faz.
  • Você mantém a capacidade de explicar o arquivo em voz alta. Travou na explicação, volta e lê de novo.

Esse arranjo não desacelera o uso de IA. Ele concentra a leitura onde o erro é caro e devolve o resto para o modelo.

Referências