Spec Driven Development - tornando o vibe coding ainda mais poderoso
(ainativedev.io)Antes de começar
A IDE chamada Kiro já foi abordada no GeekNews.
No entanto, ainda não houve uma apresentação sob a ótica do Spec Driven Development (SDD), a filosofia de metodologia de desenvolvimento que o Kiro busca seguir,
e foi publicado um vídeo muito bom para entender Spec Driven Development, então fica aqui a apresentação.
Kiro
-
IDE do tipo agente: ajuda no desenvolvimento por linguagem natural, mas com o viés de tratar a “especificação como artefato de primeira classe”.
-
Mantém a velocidade do “vibe coding” das IDEs com agente existentes, ao mesmo tempo em que define decisões, suposições e restrições em documentos de especificação.
-
Fluxo de trabalho: ao inserir uma ideia, ele já começa gerando três arquivos, requirements / design / tasks. O editor é uma forma que adiciona as abas “Specs / Hooks / Steering” sobre um fork do Code OSS.
- Specs: estrutura os requisitos (histórias de usuário + critérios de aceitação no formato EAR) e depois conecta implementação, testes e mudanças à especificação.
- Hooks: monitora mudanças em arquivos/código para acionar o fluxo de trabalho de especificações.
- Steering: faz check-in de guias da equipe como regras (markdown) em
.kiro/, na raiz do repositório — por exemplo, ao adicionar regras de TDD, o comportamento do agente pode ser padronizado.
Por que o Spec Driven é necessário
-
Complementa as limitações do vibe coding: quando o código é criado rapidamente por trocas no chat, a base das decisões acaba enterrada no fluxo da conversa, e depois fica difícil entender “o que foi feito e por quê”. O SDD propõe definir primeiro especificações centradas em comportamento, para servir como uma bússola estável.
-
Definição de especificação (comportamento, propriedades, invariantes): descreve não a implementação, mas como o sistema deve se comportar — incorporando conceitos de propriedades de safety/liveness e invariantes, mas com a filosofia de torná-los acessíveis por uma sintaxe amigável para desenvolvedores.
Vantagens do SDD
-
Visibilidade e reutilização das decisões: a especificação se torna a “origem” das mudanças no código, facilitando review e alinhamento, e mesmo quando a funcionalidade muda, a intenção (behaviors) permanece registrada.
-
Especificações vivas e combináveis: cenários de usuário, critérios de aceitação, contratos de interface/dados, desempenho/SLAs etc. podem ser modularizados para reutilização e composição (do serviço ao nível de sistema).
-
Aplicação em todo o SDLC: do alinhamento nas etapas iniciais de requisitos e design até o loop de feedback de issues após o deploy — a preocupação aqui é manter review, qualidade e consistência mesmo na era de geração rápida de código com IA.
Demo de SDD
- Para o link com o momento de início da demo no vídeo publicado no Main link, consulte esta URL: https://youtu.be/olMxlFSxydc?si=sei-bBZ0Q0yszaWn&t=1085
Fluxo do SDD
A. Configuração inicial
- Configuração do projeto - Hooks, Steering, MCP
- Configuração de TDD (recomendado)
- Configuração da especificação - escrever a Spec com base no formato EAR (recomendado) (também pode ser gerada automaticamente por IA a partir da análise de um projeto existente)
B. Implementação de funcionalidades
- Derivação da Spec - refletir/atualizar novos requisitos na Spec
- Configuração de guardrails (recomendado) - stubs de teste, definição de regras
- Implementação <-> teste - esta etapa é repetida na maior parte via IA, e o desenvolvedor intervém apenas em pequenos ajustes de código que a IA não consegue corrigir bem
- Depois que a configuração do projeto estiver concluída, a expansão de funcionalidades acontece pela repetição da etapa 'B. Implementação de funcionalidades'
Pontos de atenção
- Não funciona caso a qualidade do documento de Spec não atinja um nível mínimo.
- As regras de referência para o documento de Spec no vídeo não são explicadas em detalhes. (Referência: https://kiro.dev/docs/specs/)
- O uso de TDD é recomendado, mas foi dito que projetos sem TDD na maioria dos casos não perceberam muitos efeitos dessa metodologia.
Opinião pessoal
- Uma das metodologias propostas a partir de uma outra perspectiva para aproveitar melhor a IA.
- Documentos sempre trazem muitas vantagens quando são escritos “bem”. No entanto, considerando a experiência prática de que muitos documentos não conseguem ser mantidos adequadamente, parece que a questão principal é o quanto isso conseguirá gerar consenso entre as pessoas.
- No momento atual, a estratégia de desenvolvimento com IA + TDD é uma metodologia com a qual muitos desenvolvedores concordam e que já foi validada até certo ponto. Se a eficácia puder ser comprovada por meio de uma comparação entre o uso isolado de TDD e o uso conjunto com SDD, acredito que ganhará muito mais apoio.
3 comentários
Acabei de ver uma toolkit de SDD chamada spec-kit, e aqui também estou vendo SDD. https://github.com/github/spec-kit
Ah, é verdade. Acho que a metodologia Spec Driven também ainda está engatinhando, e parece haver muitas coisas nesse Spec que ainda precisam evoluir.
Compartilhar ferramentas e documentos nesse formato parece ser muito importante neste momento.
Como opinião pessoal adicional, acho um pouco excessivo exigir a mudança de IDE (KIRO) apenas com o objetivo de usar SDD.
Pessoalmente, acredito que algo como uma extensão de IDE, um aplicativo auxiliar ou até mesmo uma CLI seria uma forma mais adequada como ferramenta de apoio.
Também acho que compartilhar informações sobre ferramentas de SDD que vocês conhecem pode ser de grande ajuda para quem estiver buscando referências.