Por que a Maioria dos Devs Não Aproveita a IA de Verdade
Abra qualquer chat de dev hoje e você vai ver a mesma reclamação: “a IA me deu uma resposta genérica que não resolve meu problema”. O erro quase sempre não é da IA. É do prompt.
Depois de meses usando Claude Code no terminal, Gemini no fluxo de code review e ChatGPT para rascunhos de documentação, ficou claro: a IA é tão boa quanto a pergunta que você faz. Estas são as 10 dicas que mais mudaram minha relação com essas ferramentas.
1. Defina um Papel Técnico Preciso no Início
A instrução mais subestimada em qualquer prompt é a definição de papel. Quando você diz à IA quem ela é, você calibra o nível de resposta antes mesmo de fazer a pergunta.
❌ "Me ajuda com esse bug no React?"
✅ "Você é um senior frontend engineer especializado em React 19 e TypeScript.
Analise o erro abaixo considerando as mudanças de comportamento do React
Compiler e do novo modelo de hidratação:"
O segundo prompt elimina respostas de nível básico e evita que a IA sugira padrões obsoletos. Funciona no ChatGPT, Claude e Gemini da mesma forma.
2. Forneça Contexto Técnico Completo: Versão, Stack e Ambiente
A IA não sabe qual versão do Next.js você usa, se está no App Router ou Pages, se seu projeto usa Tailwind v3 ou v4. Sem esse contexto, ela chuta. Com ele, ela acerta.
Stack:
- Next.js 16 (App Router)
- TypeScript 5.4
- Tailwind CSS v4
- pnpm 10
- Deploy na Vercel
Ambiente: produção (não local)
Node: 20.x
Cole esse bloco no início de qualquer sessão técnica longa. No Claude Code, você pode salvar isso no CLAUDE.md do projeto e ele lê automaticamente em toda conversa.
3. Mostre o Exemplo de Entrada e a Saída Esperada
Descrever o que você quer é menos eficiente do que mostrar. Sempre que possível, forneça um exemplo concreto do input e do output desejado.
Preciso de uma função TypeScript que:
Entrada:
[{ name: "Paulo", age: 28 }, { name: "Ana", age: 24 }]
Saída esperada:
"Paulo (28), Ana (24)"
Restrições:
- Sem bibliotecas externas
- Tipagem explícita, sem any
- Tratamento de array vazio
Esse padrão reduz drasticamente as idas e vindas. A IA entende exatamente o contrato da função antes de escrevê-la.
4. Quebre Tarefas Complexas em Etapas Numeradas
Pedir tudo de uma vez para uma tarefa complexa gera respostas inconsistentes. O modelo tenta otimizar muitas variáveis ao mesmo tempo e perde qualidade em alguma delas.
Vamos fazer isso em etapas. Não avance para a próxima sem minha confirmação.
Etapa 1: Analise o componente abaixo e liste os problemas de acessibilidade.
Etapa 2: Proponha as correções sem alterar o comportamento visual.
Etapa 3: Reescreva o componente com as correções aplicadas.
Etapa 4: Escreva um teste com Testing Library cobrindo os casos corrigidos.
Esse padrão funciona especialmente bem no Claude, que mantém contexto longo de forma muito consistente entre etapas.
5. Especifique o que a IA NÃO Deve Fazer
Restrições negativas são tão poderosas quanto as positivas. A IA, por padrão, tende a incluir mais do que o necessário: comentários desnecessários, imports não solicitados, abstrações prematuras.
Restrições obrigatórias:
- NÃO adicione comentários explicando o que o código faz
- NÃO use any no TypeScript
- NÃO crie abstração além do solicitado
- NÃO altere arquivos que não forem mencionados
- NÃO instale dependências novas sem perguntar
No Claude Code, esse tipo de instrução pode ir direto no CLAUDE.md e vale para toda a sessão de trabalho.
6. Cole o Erro Completo ao Debugar: Nunca Resuma
Quando você resume um erro, você já está filtrando informação que pode ser a chave do problema. Cole o stack trace completo, o código que gerou o erro e o comando que você rodou.
Comando rodado:
pnpm build
Erro completo:
TypeError: Cannot read properties of undefined (reading 'map')
at BlogPage (app/blog/page.tsx:34:22)
at async renderToHTML (...)
Código da linha 34:
{posts.map((post) => <PostCard key={post.id} post={post} />)}
O que já tentei:
- Verificar se getAllPosts retorna undefined (retorna [] em dev)
- Adicionar console.log antes do map (não executa em build)
Com esse contexto, a IA consegue identificar que o problema provavelmente é no comportamento do ISR durante o build, não no componente em si.
7. Peça para a IA Pensar em Voz Alta Antes de Responder
Para problemas que envolvem decisão de arquitetura ou tradeoffs, pedir que a IA raciocine antes de concluir melhora significativamente a qualidade da resposta.
Antes de responder, pense em voz alta:
1. Quais são as abordagens possíveis para esse problema?
2. Quais são os tradeoffs de cada uma?
3. Qual você escolheria e por quê?
Só então me dê a solução final.
O Gemini com modo de raciocínio ativado e o Claude com extended thinking são especialmente bons nessa técnica. No ChatGPT com o4, funciona com o raciocínio nativo.
8. Itere com Feedback Específico, Não Refaça do Zero
Quando a resposta está quase certa mas errou em algum ponto, a maioria das pessoas descarta tudo e refaz o prompt. Isso é desperdício de contexto acumulado.
❌ "Isso não funcionou, tenta de novo."
✅ "A lógica está correta, mas há dois problemas:
1. A função não trata o caso de array vazio (deve retornar string vazia)
2. O tipo de retorno está inferido como string | undefined, mas quero string
Mantenha todo o resto e corrija apenas esses dois pontos."
Feedback cirúrgico gera correção cirúrgica. A IA mantém o que estava certo e ajusta apenas o que você apontou.
9. Use Prompts de Sistema para Projetos Longos
Para quem usa a API diretamente ou ferramentas como o Claude Code, configurar um prompt de sistema elimina a necessidade de repetir contexto a cada conversa.
# CLAUDE.md (projeto)
## Stack
- Next.js 16 App Router, TypeScript, Tailwind v4, pnpm
## Regras de código
- Nunca use any no TypeScript
- Prefira composição a herança
- Componentes devem ter no máximo 150 linhas
## Git
- Nunca commitar direto na main
- Mensagens de commit em inglês, imperativo
O Claude Code lê esse arquivo automaticamente em cada sessão. No ChatGPT, use a funcionalidade “Instruções personalizadas”. No Gemini, use os Gems com instruções salvas.
10. Adapte o Prompt ao Tipo de Tarefa: Técnico vs Criativo
Existe uma diferença importante entre tarefas técnicas (onde precisão é tudo) e tarefas criativas (onde variação é bem-vinda). Adaptar o tom do prompt ao tipo de tarefa muda o resultado.
# Para tarefas técnicas: seja prescritivo:
"Refatore esse hook seguindo exatamente as restrições abaixo.
Não adicione nada além do solicitado."
# Para tarefas criativas: dê liberdade:
"Preciso de 5 variações de copy para o botão de CTA de uma landing page
de serviços de desenvolvimento. Público: PMEs. Tom: direto e confiante.
Pode ser criativo nas variações."
Prompts mais abertos geram mais variação e criatividade. Prompts mais restritivos geram respostas mais precisas e previsíveis. Saiba o que você precisa antes de escrever.
Bônus: O Prompt que Uso Todo Dia no Claude Code
Para sessões de desenvolvimento no terminal com o Claude Code, esse é o prompt de abertura que uso em praticamente todo projeto:
Você é meu pair programmer nesse projeto. Antes de qualquer implementação:
1. Leia o CLAUDE.md para entender as regras do projeto
2. Se for uma tarefa nova, proponha uma abordagem antes de codar
3. Se for um bug, reproduza o raciocínio do erro antes de sugerir o fix
4. Nunca quebre funcionalidades existentes sem me avisar primeiro
5. Se não tiver certeza de algo, pergunte. Não assuma
A IA não é um oráculo. É uma ferramenta de amplificação. Quanto melhor for a sua pergunta, maior é o que ela amplifica.
Conclusão
Dominar prompts não é sobre truques ou hacks. É sobre comunicação precisa. As mesmas habilidades que fazem um desenvolvedor escrever boas especificações (clareza, contexto, restrições, exemplos) são as que fazem um prompt funcionar de verdade.
Comece com as dicas 1, 2 e 6: já vão mudar 80% dos seus resultados. As demais são refinamentos para casos específicos. O mais importante é desenvolver o hábito de tratar o prompt como código: revisável, iterável e sempre melhorável.
Gostou do conteúdo?
Se você precisar de ajuda aplicando essas técnicas no seu projeto, estou disponível para consultoria.
Autor
Paulo Reducino
Desenvolvedor Frontend com 5+ anos de experiência em React, Next.js e TypeScript. Especialista em performance, SEO e acessibilidade. Atualmente na Vizuh (Londres, UK).



