Spec-Driven Development — O que deveríamos sempre fazer, mesmo sem IA 🚀
Toda vez que surge um novo "buzzword" no mundo do desenvolvimento, eu observo um padrão curioso: a comunidade descobre, com ar de novidade, algo que bons…
Toda vez que surge um novo “buzzword” no mundo do desenvolvimento, eu observo um padrão curioso: a comunidade descobre, com ar de novidade, algo que bons engenheiros já fazem há décadas.
O mais recente é o Spec-Driven Development (SDD) — a ideia de escrever uma especificação detalhada antes de mandar a IA gerar código. E eu pergunto, sem rodeios: por que precisamos da IA para lembrar de algo tão básico?
⚠️ A verdade incômoda
Spec-Driven Development não foi inventado em 2025. Ele foi redescoberto porque, sem uma especificação clara, agentes de IA produzem código que parece funcionar, mas que viola arquitetura, quebra contratos e introduz problemas que só aparecem em produção.
Adivinha? Humanos fazem exatamente a mesma coisa há décadas.
A diferença é que, com humanos, a gente normaliza. “Faz parte do processo”, “vamos refinar na sprint”, “depois a gente documenta”. Com a IA, o caos fica explícito — e aí a indústria acorda.
🪦 Os projetos que todos nós já vimos morrer
Pense nos últimos cinco projetos problemáticos que você acompanhou. Aposto que a história se repete:
-
🧟♂️ O backend que virou um Frankenstein: Começou como um CRUD simples. Sem spec, cada nova feature foi colada em cima da anterior. Seis meses depois, ninguém entende mais o fluxo de autenticação. A “documentação” é uma thread de Slack de 200 mensagens.
-
🔌 A integração que ninguém valida: O time A entregou uma API. O time B consumiu. Cada um interpretou os campos de um jeito. Em produção, descobriu-se que “status: pending” significava coisas diferentes em cada serviço. Custo do retrabalho: três semanas.
-
♻️ O refactor que virou reescrita: A pessoa que escreveu o código original saiu. Não há spec, não há decisões registradas. O novo time olha para o código e pergunta: “isso é regra de negócio ou bug que virou feature?”. Ninguém sabe. A resposta padrão: reescrever do zero. De novo.
-
🏗️ O MVP que nunca virou produto: “Vamos validar rápido, depois a gente formaliza.” Dois anos depois, o “MVP” está rodando em produção, fatura milhões, e ninguém quer encostar nele porque ninguém sabe o que ele realmente faz.
Nenhum desses problemas foi causado pela ausência de IA. Todos foram causados pela ausência de intenção declarada antes da execução.
📋 O que um bom spec deveria ter (com ou sem IA)
Aqui está o checklist que eu defendo — vale para você, para seu time júnior, para o estagiário e, sim, também para o Claude ou o Copilot:
🎯 Resultado esperado: O que precisa estar verdadeiro no mundo quando isso estiver pronto? Não “implementar endpoint X”, mas “usuário consegue recuperar senha em até 2 minutos sem suporte humano”. 🚧 Escopo e não-escopo: O que está dentro e, principalmente, o que está fora. A maioria dos projetos falha pelo que não foi dito, não pelo que foi dito. ⚙️ Restrições reais: Tecnológicas, regulatórias, de performance, de prazo. Se precisa rodar em 200ms, isso é spec, não detalhe. 🧠 Decisões prévias e seus porquês: “Vamos usar Postgres” não é spec. “Vamos usar Postgres porque já temos operação madura e o time conhece” é spec — porque registra o racional que vai ser revisitado em 6 meses. 🧪 Critérios de aceitação verificáveis: Se não dá pra testar, não é critério. É desejo. ❓ Pontos de incerteza assumidos: O que você ainda não sabe? Spec honesto admite buracos. Spec ruim finge onisciência.
Note algo importante: nada disso exige Spec Kit, Kiro, Tessl ou qualquer ferramenta moderna. Um Markdown bem escrito resolve. Um Notion. Um README. O artefato importa muito menos do que o ato de pensar antes de codar.
⏳ Mas e a “perda de tempo”?
Ouço isso toda semana: “não dá tempo de especificar, precisamos entregar”. Tradução honesta: “preferimos gastar três semanas refatorando do que três horas pensando”.
Especificar não é burocracia. É compressão de retrabalho futuro.
Cada hora gasta em um bom spec economiza, na minha experiência, entre cinco e vinte horas de discussão, correção e replanejamento depois. Os números variam — a direção, não.
E não, isso não é waterfall. Spec não precisa ser exaustivo nem imutável. Ele evolui. Mas existe. E é versionado. E é revisado. E é a referência quando alguém pergunta “por que isso foi feito assim?”.
🤖 A ironia da IA
Aqui está o que mais me incomoda nessa onda toda: precisamos de agentes autônomos gerando código para finalmente levarmos a sério algo que sempre foi boa prática.
A IA não criou a necessidade de especificação. Ela apenas tornou impossível ignorá-la. Quando o “desenvolvedor” é uma LLM que executa literalmente o que você descreveu, a qualidade do seu pensamento vira código em minutos. Não há mais espaço para “ah, ele entendeu o que eu quis dizer”.
E essa é a melhor notícia do SDD: ele expõe, finalmente, que a parte difícil do desenvolvimento de software nunca foi escrever código. Foi pensar com clareza sobre o problema antes de tentar resolvê-lo.
A IA não vai te substituir. Mas a falta de spec — essa sim, há muito tempo.
👇 E você? Quantos dos seus últimos problemas em produção começaram com um “depois a gente alinha”? Deixe sua opinião nos comentários.
#SoftwareEngineering #ArquiteturaDeSoftware #TechLeadership #InteligenciaArtificial