← Voltar aos artigos
·1 min de leitura·#engenharia

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

Bruno Cunha

Bruno Cunha

Engenheiro de software. Escrevo sobre performance, .NET e os bastidores de sistemas que escalam.