A ilusão perigosa do desenvolvedor sozinho com IA

Traduzido do inglês. Leia o original em English.


A armadilha do “funciona e pronto”

Ferramentas como Claude Code, Cursor e GitHub Copilot deixam a gente entregar funcionalidades mais rápido do que conseguiríamos na mão. Eu uso todos os dias. Mas venho vendo um padrão em projetos de código aberto e em bases de código de empresa onde a pessoa que escreve o prompt deixa de fazer parte do processo.

Funciona assim. Você trata a IA como alguém que contratou e em quem confia para acertar. Escreve o prompt. Copia o resultado. Faz o deploy. Se compila, vai para produção.

É assim que você acaba com buracos de segurança por onde passa um caminhão. Encontrei autenticação do lado do cliente, caminhos de arquivo sem validação e acesso a shell sem restrição em várias interfaces web que, segundo os próprios autores, eram geradas inteiramente por IA. Portas trancadas com a chave colada do lado.

A IA é um júnior com turbo

Imagine um desenvolvedor júnior que digita mil palavras por minuto e conhece todas as bibliotecas que existem. Agora dê dois traços a mais para ele.

Ele não faz ideia do que é um problema de segurança a não ser que alguém conte. E ele nunca diz que não sabe algo. Entrega uma resposta confiante e errada.

Você deixaria essa pessoa subir para produção sem ninguém ler? Claro que não.

É exatamente o que um projeto só com IA faz. O modelo é muito bom em resolver o que está na frente dele e não tem motivo nenhum para pensar no que acontece quando alguém manda uma requisição que você não planejou. Um parâmetro de rota com ../../ não faz parte da tarefa que você pediu então nunca entra na conversa.

O laço que cria bugs

O modo de falha que mais vejo é o laço de contexto. Você dá um bug para a IA. Ela devolve código. O código continua falhando. Você cola o erro de volta e recebe uma versão “corrigida”.

Cinco rodadas depois você tem algo que roda. Também tem uma pilha de patches que resolveram um sintoma cada e o modelo perdeu a forma do sistema com que começou. Agora ele está ajustando código à mensagem de erro em vez de ao desenho.

É aqui que as vulnerabilidades entram. Na pressa de deixar os testes verdes uma checagem de permissão cai. A validação de entrada desaparece porque estava atrapalhando. Uma chave fica escrita no código porque a variável de ambiente era chata. Ninguém percebe porque todo mundo está olhando o teste que finalmente passou.

Como usar IA de verdade

A resposta não é usar menos IA. É ficar na cadeira. Você é o engenheiro responsável e a IA é a pessoa com quem você está trabalhando.

Diagrama de um ciclo de revisão de cinco passos entre uma pessoa e um agente de IA. Você pede, a IA redige, você lê o diff, você responde e as

Não aceite código que você não consegue explicar

Se a IA escreve um bloco que você não entende então para. Peça para ela explicar o bloco linha por linha. Se você continua sem conseguir dizer por que aquilo é seguro então assume que não é. Essa única regra pega quase todo o dano antes de ele cair.

Responda ao resultado

Fale com ela como um colega que escreveu algo descuidado.

  • “Você tirou o token CSRF nesse refactor. Por que ele precisava sair?”
  • “Esse handler de entrada parece vulnerável a XSS. Reescreve com sanitização.”
  • “Você está usando dangerouslySetInnerHTML aqui. Tem um jeito mais seguro?”

A última vale dizer em voz alta porque o modelo repete o padrão que usou da última vez. Nomear o problema costuma bastar para receber uma resposta melhor na próxima passada.

Leia o diff

Não leia só o arquivo final. Leia o que mudou.

Apagou uma checagem de permissão enquanto limpava outra coisa? Tirou uma chamada de validação porque o caminho feliz não precisava dela? Modelos trabalham dentro de uma janela de contexto e perdem em silêncio restrições que você colocou duas horas atrás. O diff é o único lugar que mostra o que saiu do prédio.

Mantenha as checagens fora do chat

Um modelo pode ser convencido de que um teste passa. Seu CI não. Autenticação e autorização ficam no código e no pipeline onde o agente tem que satisfazê-las. A validação de entrada fica na borda onde os dados chegam em vez de num prompt que você espera que ele lembre.

Conclusão

IA deixa um engenheiro forte muito mais rápido e faz um processo descuidado falhar mais rápido. Se a sua intenção é publicar algo agora e ver no que dá então o modelo vai te ajudar a fazer exatamente isso. Se a sua intenção é publicar algo que aguenta então ele também ajuda com isso. A intenção é sua de qualquer jeito.

Você dirige. A IA lê o mapa e discute com você a saída e essa discussão é a parte útil.