Como codar melhor com IA usando prompts, agentes e SDD
Codar melhor com IA não é pedir código e aceitar a primeira resposta que parece certa. Para sistemas reais, o ganho vem de controlar o processo: escolher o modelo certo, dar contexto, limitar agentes, usar especificação quando o risco justifica e revisar como mudança que vai para produção.
O uso fraco de IA generativa costuma ter um padrão simples. O desenvolvedor abre um chat, cola um problema incompleto, recebe uma resposta plausível e trata aquilo como produtividade. O risco é que código plausível passa no olhar rápido: compila, parece limpo e ainda assim pode errar segurança, performance ou comportamento de borda.
Codar melhor com IA começa separando decisão de execução
IA generativa é forte em tarefas delimitadas: explicar código existente, gerar boilerplate, sugerir testes, fazer refatorações locais e implementar mudança bem especificada. Ela cobra a conta quando a tarefa depende de contexto que não está no prompt: histórico operacional, modelo de ameaça e tradeoffs de arquitetura.
Isso não torna a IA inútil nesses cenários. O uso mais defensável é exploratório. Em vez de pedir que ela decida a arquitetura, peça alternativas, riscos e contrapontos. A decisão continua humana, porque envolve orçamento, maturidade do time e consequências de produção que o modelo não conhece.
Essa separação também vale para modelos. Modelos mais fortes, ou com mais tempo de raciocínio, fazem mais sentido para planejamento e análise de tradeoffs. Modelos rápidos tendem a bastar para execução mecânica quando o plano já está fechado. Usar o mesmo modelo, com o mesmo prompt, para tudo é desperdício de custo ou perda de controle.
Prompt engineering é especificação operacional
Prompt bom não é frase mágica. É uma forma compacta de especificação técnica. Um pedido útil define objetivo, contexto, restrições, exemplos, formato esperado, critérios de aceite e o que não deve mudar. Isso reduz a dispersão do modelo e transforma a resposta em algo revisável.
O mesmo raciocínio explica o valor do Spec Driven Development. Em tarefas com contrato, integração ou muita ambiguidade, escrever uma spec antes da implementação reduz a chance de a IA preencher lacunas de regra de negócio por conta própria. Ferramentas como Spec Kit e OpenSpec seguem essa direção: primeiro explicitar intenção, entradas, saídas e erros; depois gerar código.
Mas SDD não é para tudo. Em correção pequena, renomeação simples ou exploração descartável, a especificação formal pode custar mais do que ajuda. Spec desatualizada também vira problema: a IA executa uma intenção antiga com confiança. A pergunta pragmática é quanta ambiguidade e risco aquela tarefa carrega.
Agentes ampliam produtividade e superfície de risco
Quando um agente pode ler arquivos, executar comandos e alterar código, o problema deixa de ser apenas qualidade da resposta. Ele passa a ser permissão operacional. A OWASP classifica excesso de autonomia como risco relevante em aplicações com LLM. Prompt injection indireto pode chegar por tickets, e-mails, páginas ou repositórios que o agente processa.
A resposta não é proibir agentes. É tratá-los como qualquer automação com acesso ao ambiente: sandbox, menor privilégio, permissões explícitas, revisão de skills de terceiros e limites claros. Uma skill baixada da internet deve ser lida como dependência que roda na sua máquina, não como texto inocente.
Revisão humana continua sendo o gate de produção
Estudos sobre assistentes de código mostram um risco incômodo: desenvolvedores podem introduzir mais falhas de segurança e, ao mesmo tempo, ficar mais confiantes no código gerado. Isso é perigoso porque a IA frequentemente entrega o happy path. O problema aparece nas bordas: input não sanitizado, consulta custosa, contrato quebrado ou performance ruim em escala.
Revisar código de IA não é conferir formatação. É olhar contrato, segurança, bordas, escopo e performance. Teste verde não autoriza merge. Quem aprova o commit é o engenheiro, não o modelo.
Referências
- PlanBench: An Extensible Benchmark for Evaluating Large Language Models on Planning and Reasoning - ArXiv
- Emerging Architectures for LLM Applications - A16Z
- Do Users Write More Insecure Code with AI Assistants? - Stanford
- The risks of AI-generated code - Trust in Soft
- PromptingGuide.ai - DAIR.AI
- Prompt engineering best practices - OpenAI
- The Architecture Tradeoff Analysis Method - CMU SEI
- Using LLMs to Assist with Architecture Analysis - CMU SEI
- OWASP Top 10 for Large Language Model Applications - OWASP
- OWASP Prompt Injection - OWASP
- GitHub Spec Kit - GitHub
- OpenSpec - OpenSpec
- AI-generated code review practices - Snyk
- Reviewing AI-generated code - BrightSec