Tem um debate rolando que eu acho meio desonesto: "IA já programa melhor que a maioria dos devs". É verdade. Mas estamos medindo a coisa errada.
Pega o ChatGPT, Claude, Copilot — todos conseguem cuspir um componente React funcional, um CRUD em Express, uma query SQL otimizada. Melhor que um dev júnior? Provavelmente. Melhor que um pleno distraído numa sexta às 17h? Com certeza. Mas se você acha que isso muda alguma coisa sobre o que faz alguém ser um bom desenvolvedor, você não entendeu o trabalho.
O que a IA faz bem (e você deveria deixar)
Vou ser direta: se o seu valor como dev é escrever um for loop bonitinho ou lembrar a sintaxe de Array.prototype.reduce, você já era substituível antes da IA chegar.
A IA é excelente em:
1. Boilerplate e código repetitivo
// Você descreve o que quer
// "Create a React hook for debounced search with abort controller"
import { useState, useEffect, useRef } from 'react';
export function useDebouncedSearch(callback, delay = 300) {
const [query, setQuery] = useState('');
const abortControllerRef = useRef(null);
useEffect(() => {
if (!query.trim()) return;
const timeoutId = setTimeout(() => {
// Cancel previous request
if (abortControllerRef.current) {
abortControllerRef.current.abort();
}
abortControllerRef.current = new AbortController();
callback(query, abortControllerRef.current.signal);
}, delay);
return () => {
clearTimeout(timeoutId);
if (abortControllerRef.current) {
abortControllerRef.current.abort();
}
};
}, [query, delay, callback]);
return [query, setQuery];
}
Isso funciona. É limpo. Eu não teria escrito melhor na primeira tentativa — e você provavelmente também não. E tá tudo bem.
2. Tradução entre paradigmas
"Converte esse callback hell pra async/await" — a IA faz isso dormindo. Refatorar de class components pra hooks? Mesma coisa. Ela não cansa, não esquece edge cases óbvios, não mistura estilos por acidente.
3. Código que você sabe que precisa mas não quer escrever
Validação de formulário. Parsing de CSV. Retry logic com exponential backoff. É aquele código chato, testado mil vezes pela humanidade, que você copia do Stack Overflow mesmo. A IA só automatizou o ctrl+C ctrl+V.
O que a IA não faz (e é onde você importa)
Agora a parte que separa um script kiddie de um engenheiro de verdade:
1. Entender o problema antes de escrever código
A IA vai te dar código. Sempre. Você pediu? Ela entrega. Mas ela não vai te perguntar:
- "Esse endpoint realmente precisa ser real-time ou você só quer feedback instantâneo no UI?"
- "Você tá tentando resolver latência de rede ou problema de UX?"
- "Por que você tá fazendo cache no client se o dado muda a cada 10 segundos?"
Eu já vi dev júnior (e LLM) implementar websockets pra uma feature que um setInterval de 30 segundos resolveria. O código tava perfeito. A solução tava errada.
2. Fazer tradeoffs conscientes
// Option A: Cache agressivo, UX rápida, risco de dados stale
const CACHE_TTL = 5 * 60 * 1000; // 5 min
// Option B: Sempre busca fresh data, UX mais lenta, sempre correto
const CACHE_TTL = 0;
// Option C: Optimistic UI + background revalidation (SWR pattern)
const CACHE_TTL = Infinity;
// but: revalidate on focus, revalidate on interval
A IA não escolhe. Ela te dá a opção A porque é a que aparece mais em exemplos de blog. Você precisa saber que pro seu caso específico — um dashboard financeiro — a opção C é a única aceitável.
3. Debugar problemas de integração
IA é ótima pra debugar um algoritmo isolado. Mas quando o bug é:
- Request tá sendo enviado duas vezes porque o React renderiza em StrictMode no dev
- CORS só quebra em produção porque nginx tá strippando o header
- Race condition que só acontece em mobile 3G
...você precisa de contexto do sistema inteiro, conhecimento de infra, experiência com "já vi isso antes". A IA não tem nada disso. Ela vai te dar 10 sugestões genéricas e você vai perder uma tarde.
4. Comunicar com não-técnicos
O PM pede "um filtro avançado". Você precisa:
- Descobrir se é autocomplete, multi-select, range slider ou busca full-text
- Explicar que "tempo real" vai custar 10x mais de infra
- Negociar MVP: "e se a gente lançar com 3 filtros agora e adiciona os outros depois conforme uso?"
IA não senta numa call. IA não lê a cara do stakeholder e percebe que ele não entendeu. IA não fala "essa feature vai atrasar o lançamento em 2 sprints, vale a pena?".
O desenvolvedor que a IA substitui
Se a sua rotina é:
- Pegar ticket do Jira
- Implementar exatamente o que tá escrito
- Fazer passar no CI
- Jogar pra QA
...você já tá competindo com ferramentas. E vai perder.
A IA substitui o dev que é executor. Ela não substitui quem é arquiteto de soluções, mesmo que a arquitetura seja "decidir usar Postgres em vez de MongoDB porque os relacionamentos são óbvios".
O que eu faço diferente agora
Eu uso IA todo dia. Mas mudei como eu trabalho:
Antes: Pensava no código enquanto escrevia código
Agora: Penso no problema, esboço a solução em comentários, deixo a IA escrever a primeira versão
// Fetch user posts with:
// - pagination (cursor-based, not offset)
// - filter by status (draft | published)
// - include author data (join, not N+1)
// - cache per user (5min TTL)
// [IA escreve isso em 10 segundos]
Antes: Escrevia testes depois (quando lembrava)
Agora: Peço pra IA gerar testes baseado no código que ela escreveu — e eu reviso se os cenários fazem sentido
Antes: Gastava tempo refatorando syntax
Agora: Foco em refatorar arquitetura — extrair abstrações, separar responsabilidades, nomear coisas direito
TL;DR
- IA escreve código sintático melhor que 70% dos devs — e isso não importa
- O trabalho de verdade é: entender problema, fazer tradeoffs, debugar sistemas, comunicar com pessoas
- Se você se sente ameaçado pela IA, você tá medindo seu valor pela métrica errada
- Use IA pra acelerar execução; use seu cérebro pra decidir o quê executar e por quê
- O dev que só escreve código sempre foi substituível — a IA só tornou isso óbvio
Top comments (0)