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
- Vibe coding (Wikipedia)
- Software Engineering at Google, cap. 11: Testing Overview (Winters, Manshreck e Wright, O'Reilly, 2020)
- Site Reliability Engineering, cap. 1: Introduction (Google, O'Reilly, 2016)
- OWASP Top Ten
Curtiu o conteúdo?
Construo produtos web e soluções com IA do jeito certo — arquitetura sólida, código sustentável e entrega real.
Vamos conversar