sdd
SDD vs Vibe Coding: qual ofício você está aprendendo em 2026?
Vibe coding viralizou. SDD é o oposto disciplinado. Quando cada um funciona, quando destrói, e qual escolher pra projeto sério em 2026.
Em 2025, Andrej Karpathy cunhou um termo que estourou: vibe coding — programar “por vibe”, deixar o LLM gerar tudo, aceitar o que sair, iterar até funcionar. Em 2026 já tem 27 mil pessoas/mês buscando isso no Brasil. Virou cultura.
No mesmo período, Spec-Driven Development (SDD) explodiu também — 1.900 buscas/mês no Brasil, com crescimento 12× em 8 meses. Anthropic publicou guidelines. AWS adotou. Times de produto sério começaram a praticar.
São os dois polos do mesmo eixo: como você delega trabalho pra agentes de IA.
Esse artigo é a comparação honesta. Quando vibe coding é certo. Quando SDD é certo. Por que misturar destrói os dois. E qual você precisa aprender em 2026 — provavelmente os dois, em camadas diferentes.
Os dois polos
Vibe coding (intuição)
Você → prompt vago → LLM gera → você roda → ajeita → repete
Você descreve o que quer em texto natural. O LLM gera código. Você testa, se quebrar, fala “tá errado, conserta”, o LLM tenta de novo. Loop até funcionar (ou até você desistir).
Características:
- Velocidade altíssima no início
- Zero overhead estrutural
- Resultado funciona pra protótipo/script
- Código gerado é “função/feature por feature” sem contexto global
Spec-Driven Development (disciplina)
Você → spec → gate → design → gate → tasks → gate → código
Você escreve uma especificação detalhada (requirements em formato EARS, design técnico, decomposição em tasks). Aprovação humana em cada gate. Só então o agente codifica seguindo a spec exatamente.
Características:
- Overhead inicial maior (escrever spec leva 2-4h por feature)
- Resultado rastreável (cada linha de código mapeia pra requisito)
- Funciona em projeto multi-sessão, multi-feature, multi-dev
- Código gerado segue padrão consistente
Quando vibe coding é certo
Vou ser honesto: vibe coding funciona muito bem em alguns casos. Pretender que é sempre ruim é desonesto.
Casos onde vibe coding entrega:
-
Script 1-hour: você precisa parsear um CSV, gerar relatório, mandar email. Vai jogar fora amanhã. Vibe coda em 15 minutos. Pronto.
-
Prototype exploratório: você quer ver se uma ideia faz sentido visualmente antes de decidir investir. Faz uma UI clicável, descarta se não funcionar. Vibe perfeito.
-
Aprendizado de tecnologia nova: você nunca tocou em SvelteKit, quer entender se vale aprender. Vibe coda um TODO app pra ver como é. Não vai pra produção.
-
One-off automation pessoal: macro de email, automação de planilha, script de backup. Use case isolado, sem manutenção.
-
Spike técnico curto (1-3 dias): provar que dá pra integrar API X. Resultado é decisão “vai/não vai”, não código pra produção.
Nesses casos, escrever spec é overhead que não paga. Vibe coding é a ferramenta certa.
Quando vibe coding destrói
E os casos onde vibe coding entrega bug, débito técnico, e produto que ninguém consegue manter 3 meses depois?
Casos onde vibe coding é desastre:
-
Sistema multi-feature (5+): cada feature foi gerada com contexto mental diferente. Convenções variam. Tipos batem em 60% dos casos. Refatorar custa mais que reescrever.
-
Multi-dev ou multi-sessão: o LLM esquece tudo a cada sessão. Você “explica de novo” todo dia. Outro dev abre o repo e não entende decisão nenhuma.
-
Sistema com dados sensíveis ou regulamentação: LLM não considera LGPD/PCI/HIPAA sem você mandar. Vibe coda autenticação? Garantido alguma vulnerabilidade subtil.
-
Performance importa: vibe gera código “que funciona”, não “que escala”. Você descobre o problema com 10x users em produção.
-
Manutenção 6 meses+: você ou outro dev abre o código daqui um trimestre, não entende por que aquela função existe, refatora “limpando”, quebra o sistema todo.
Nesses casos vibe é o equivalente digital de construir casa sem planta. Funciona na primeira semana, vira dor por anos.
Quando SDD é certo
SDD compensa o overhead estrutural quando o projeto:
- Dura mais que poucos dias
- Tem múltiplas features integradas
- Vai pra produção com usuários reais
- Tem mais de 1 dev OU mais de 1 sessão de IA
- Tem requisitos não-funcionais críticos (performance, segurança, compliance)
- Vai ser mantido por meses
Esses critérios cobrem qualquer SaaS sério, qualquer sistema interno corporativo, qualquer projeto de cliente pago.
Eu construí 13 apps em 70 dias na cripto fintech com SDD puro. Se eu tivesse vibe codado, demoraria 6 meses mínimo (provavelmente nunca terminaria — drift de contexto destruiria a coesão).
Quando SDD destrói
Honestidade igual: SDD aplicado fora de hora também é desastre.
Casos onde SDD é overkill:
- Script de 1 hora: escrever spec leva mais que o script. Cancele.
- Protótipo exploratório: você não sabe ainda se vale construir. Spec é hipótese antes de evidência.
- One-off: feature isolada, sem manutenção. Spec não vai ser lida nunca mais.
- Antes do problema estar claro: você ainda está descobrindo o que construir. SDD assume problema definido.
Nesses casos, SDD é cerimônia que mascara que você não decidiu ainda o que quer. Vibe coda, descobre, depois (talvez) formaliza com spec.
A combinação certa: vibe pra explorar, SDD pra construir
Os builders sérios em 2026 usam ambos, em camadas diferentes do projeto:
Fase de exploração (decisão)
→ vibe coding rápido
→ descobre o que quer
→ joga código fora
Fase de construção (execução)
→ SDD disciplinado
→ spec validada
→ código rastreável
→ vai pra produção
Eu mesmo fiz isso na cripto fintech: as 2 primeiras semanas foram vibe pesado explorando 3 stacks (Fastify vs Express vs Bun, Prisma vs Drizzle, Liquid SDK vs custom). Decidi com base no que funcionou. Depois apaguei tudo, comecei do zero com .claude/ estruturado e SDD pra valer.
Vibe coding gerou a decisão. SDD gerou o produto.
A diferença operacional
Vou ser concreto. Mesmo problema (adicionar feature de “tags em tarefas”):
Vibe approach
Você: "adiciona tags em tarefas"
LLM: gera Prisma model Tag, endpoint POST /tags, UI selector
Você: "esquece, tags devem ser do workspace, não global"
LLM: refaz com workspaceId
Você: "tag deve ter cor"
LLM: adiciona campo color
Você: "ah, e máximo 20 tags por workspace"
LLM: adiciona validação
Você: "espera, e se workspace deletar, tags devem ir junto?"
LLM: refatora cascade
... 6 iterações depois, funcionando-ish
Tempo total: ~3-4h, código inconsistente, falta validação edge cases, próximo dev não entende decisões.
SDD approach
requirements.md (15 min):
US-001 — Tags em workspace
- Usuário admin do workspace W cria tag (nome 2-50, cor enum hex 8 opções)
- Tag fica associada ao workspace W, isolada de outros
- Máximo 20 tags por workspace
- Tag deletada remove de todas as tarefas (não deleta tarefas)
- Tag deletada notifica admins via in-app
design.md (20 min): Prisma model com @@unique([workspaceId, name]), cascade DELETE, endpoint REST com permission check, real-time event.
tasks.md (10 min): 4 tasks de 1h cada, ordem clara.
/spec-implement (45 min agente trabalhando, 15 min você revisando).
Tempo total: ~1h45min, código consistente com resto do projeto, edge cases cobertos, próximo dev lê spec e entende tudo.
Vibe = 3-4h. SDD = ~2h. E o código de SDD é 5× melhor pra manter.
”Mas eu sou rápido vibe codando”
Quase todo dev que defende vibe coding está medindo errado.
Compara:
- ✅ “Time to first working code”: vibe ganha (35 min vs 1h45min)
- ❌ “Time to production-ready”: SDD ganha (vibe precisa de mais 4h debug + edge cases)
- ❌ “Time to maintainable”: SDD ganha por fator 3-5×
- ❌ “Time when another dev joins”: SDD ganha por fator 10×
- ❌ “Time to add next feature in same area”: SDD ganha porque o padrão tá estabelecido
Vibe parece rápido porque você mede o passo errado. Como pedreiro rápido sem planta da casa — termina a parede em 1 dia, mas a casa inteira vai desabar.
Vibe coding é commodity. SDD é diferenciação.
Aqui o ponto que importa pra quem vive de programar:
Vibe coding qualquer um faz. Você, eu, dev júnior, designer que aprendeu prompt. Cliente PME vai aprender em 6 meses.
SDD exige domínio. Você precisa saber especificar contexto, decompor requirement, identificar critério de aceitação, escolher arquitetura, escrever EARS, criar gates, integrar subagentes.
Em 2026, quem vende “vibe coda solução pra você” disputa preço com IA generativa direta. Quem vende SDD aplicado a problema de negócio real cobra R$15-30K por piloto. Não competem.
É o mesmo argumento do manifesto “workflow virou commodity”. Ferramenta acessível ≠ ofício acessível.
O que aprender em 2026
Se você está começando a programar com IA agora:
-
Domina vibe coding primeiro (1-2 semanas de prática). Aprende a prompt bem, a iterar rápido, a saber quando aceitar e quando rejeitar o que o LLM sugere.
-
Aprende SDD depois (1-2 meses praticando). Comece com features pequenas no seu próprio projeto, valide o método em escala crescente.
-
Combina os dois conscientemente. Vibe pra exploração e protótipo. SDD pra produção.
Se você já é dev experiente e está resistindo IA por orgulho de ofício:
-
Aprenda SDD direto. Vibe coding vai te frustrar porque você vai bater de cara com inconsistências que IA gera sozinha.
-
SDD é onde sua experiência amplifica. A IA escreve código que você revisa, especifica, decide. Seu repertório vira spec.
-
Não tenha vergonha de aprender — quem se recusa a usar IA vai pro lugar onde foi o operador de cartão perfurado em 1980. Manifesto completo sobre essa virada.
Próximos passos
→ Spec-Driven Development: o método completo — cornerstone com 4 pilares + EARS + slash commands
→ Ebook SDD: O Guia Definitivo — 215p com TaskFlow Pro inteiro especificado
→ Formação Consultor AI — Academy — pratica SDD em projeto real seu, 6 semanas com revisão
FAQ
Posso usar IA sem ser vibe coding nem SDD? Pode. “Pair programming com IA” — você escreve a maior parte, IA sugere completions/refactors. Ainda é como muito dev sênior usa Cursor/Copilot. Não é vibe (você dirige), não é SDD (não tem spec formal).
Andrej Karpathy defendeu vibe coding. Ele está errado? Não. Karpathy cunhou o termo descrevendo um modo de programar específico — não recomendou pra produção sempre. A apropriação cultural distorceu. Vibe coding faz sentido onde Karpathy descreveu: exploração rápida, scripts, experimentação.
SDD não é igual Waterfall? Não. Waterfall congela tudo upfront e implementa de uma vez. SDD aprova fase por fase, ajusta entre cada, e a spec evolui com o código. Feedback loop por gate, não por release.
Posso fazer SDD sem Claude Code? Pode. SDD funciona em Cursor (.cursorrules), Copilot (.github/copilot-instructions.md), Aider, ou até em workflow puro de Notion + texto. Claude Code só tem slash commands prontos pro padrão — você replica em outras ferramentas.
Quanto tempo pra dominar SDD? Conceitualmente: 1 semana lendo + ebook. Operacionalmente: 1-2 meses praticando em 3-5 features reais. Maestria que diferencia consultor: 6-12 meses.
Vibe coding vai morrer? Não — vai virar o “shell script” da IA. Continua útil pra automação rápida, exploração, scripts pessoais. Só não vai mais sustentar carreira de “construo SaaS pra você”. Essa parte vai pra quem domina SDD.