Spec Driven Development (SDD): a melhor forma de programar com IA?

Spec Driven Development (SDD): a melhor forma de programar com IA?

Desenvolvimento Orientado a Especificação e Inteligência Artificial

Introdução ao Desenvolvimento Orientado a Especificação (SDD)

  • O vídeo aborda a importância do desenvolvimento orientado a especificação (SDD) na construção de soluções sérias com inteligência artificial.
  • A afirmação de Andre Carpat destaca que falhas na IA muitas vezes são atribuídas à falta de habilidades do desenvolvedor, não à incapacidade da tecnologia.
  • É enfatizado que, mesmo quando a IA falha, isso pode ser um reflexo das limitações humanas em conectar as ferramentas adequadamente.

A Natureza do Problema

  • Embora existam modelos de IA melhores ou piores, o foco deve ser em maximizar as chances de sucesso ao resolver problemas com IA.
  • O vídeo menciona um recurso da IBM que explica as diferenças entre SDD e o Vibe Coding tradicional, destacando a necessidade de uma abordagem mais estruturada no desenvolvimento.

Abordagem Histórica e Mentalidade

  • O apresentador faz um disclaimer sobre como o desenvolvimento sempre exigiu planejamento antes da codificação, não sendo uma prática nova.
  • Um artigo anterior do apresentador é mencionado para ilustrar como pensar em alto nível ao desenvolver funcionalidades, utilizando user stories como guia.

User Stories e Implementação

  • As user stories são descritas como narrativas que definem o que os usuários devem conseguir fazer dentro do aplicativo.
  • Exemplos práticos são dados para mostrar como essas histórias ajudam na implementação das funcionalidades desejadas pelos usuários.

Evolução do Papel do Desenvolvedor

  • A crescente necessidade dos desenvolvedores adotarem uma mentalidade semelhante à de gerentes de projeto (PM), especialmente no contexto atual onde orquestrar modelos se torna crucial.
  • A transição da dificuldade na escrita de código para a orquestração dos modelos é discutida, ressaltando mudanças nas responsabilidades dos desenvolvedores.

Diferenças entre Vibe Code e Spec Driven Development

Conceitos de Vibe Code

  • O termo "vibe code" é utilizado para descrever uma abordagem onde o desenvolvedor não compreende completamente o código que está escrevendo, mas se preocupa apenas com o resultado final.
  • Quando um desenvolvedor entende o código, mesmo sem escrever uma linha, ele não está em "vibe coding", pois possui confiança e consciência sobre a implementação.
  • No "vibe code", as instruções dadas à IA são genéricas, levando a muitas suposições por parte da máquina na geração do código.

Desafios do Vibe Code

  • A dificuldade em prever resultados no "vibe code" pode levar a um processo iterativo longo e frustrante, onde o desenvolvedor tenta ajustar suas solicitações à IA até obter um resultado satisfatório.
  • Embora essa abordagem seja barata e útil para exploração inicial de ideias, ela pode ser estressante quando a IA não compreende corretamente as intenções do desenvolvedor.

Limitações em Projetos Sérios

  • O uso de "vibe code" é problemático em projetos maiores ou mais estruturados, onde especificações claras são necessárias.
  • Em equipes de desenvolvimento, é essencial ter instruções bem definidas e outputs desejados para evitar confusões durante a implementação.

Ciclo de Vida do Desenvolvimento de Software (SDLC)

Estrutura Tradicional do SDLC

  • O ciclo tradicional começa com planejamento e design, seguido pela implementação, testes e manutenção. Este modelo é conhecido como modelo waterfall (cascata).
  • O SDLC envolve iterações até que os requisitos sejam atendidos antes do deploy final do software.

Transição para Especificação Orientada

  • A abordagem orientada à especificação (spec driven development - SDD) se baseia nos princípios tradicionais do SDLC, mas inicia-se com prompts que descrevem funcionalidades desejadas ao invés de implementações específicas.
  • Começa-se com histórias de usuários para definir requisitos claros (PRD), enfatizando a importância da arquitetura no desenvolvimento de software.

Importância da Engenharia de Software

  • A engenharia de software continua sendo crucial; mesmo com novas abordagens como cloud coding ou Codex, os fundamentos permanecem relevantes.
  • É necessário aprovar planos antes da implementação efetiva; isso garante que todos os requisitos estejam alinhados antes que o código seja escrito.

Implementação Baseada em Especificações

  • Após gerar requisitos claros, os desenvolvedores podem criar tickets e itens específicos para serem atacados pelos agentes durante a implementação.
  • Essa metodologia inverte o processo tradicional: ao invés de documentar após codificar, começa-se com testes ou especificações claras antes da escrita do código.

Abordagens de Desenvolvimento: TDD vs SDD

Diferenças entre Métodos de Desenvolvimento

  • O método tradicional envolve escrever código primeiro e documentar depois, enquanto no TDD (Test Driven Development), o teste é escrito antes do código, servindo como documentação.
  • No SDD (Specification Driven Development), a especificação é criada inicialmente através de user stories, que guiam a implementação do código. Essa abordagem é mais focada em um nível estratégico.
  • A preferência pessoal do apresentador por programar com SDD é destacada, especialmente após o surgimento da IA, que se alinha com essa metodologia.

Aplicação Prática do SDD

  • O apresentador menciona uma série chamada "Criando um site do zero", onde utiliza o SDD para desenvolver um projeto real. Os primeiros episódios estão disponíveis gratuitamente.
  • Ele recomenda assistir ao primeiro episódio da série, onde todos os requisitos foram organizados previamente, facilitando a produção dos vídeos subsequentes.

Ferramenta Tracer AI

  • O Tracer AI é apresentado como uma ferramenta que transforma intenções de produtos em especificações estruturadas e compartilháveis, alinhando-se aos princípios do SDD.
  • A ferramenta permite criar especificações e guiar agentes de programação dentro de um contexto definido, assegurando que as mudanças estejam conforme o plano estabelecido.

Instalação e Modos do Tracer AI

  • Após criar uma conta gratuita no Tracer AI, o usuário deve instalá-lo como extensão na IDE preferida. A instalação pode ser feita em várias plataformas como VS Code ou GitHub App.
  • O Tracer possui quatro modos: Epic Phases, Plan e Review. Cada modo serve para diferentes tipos de desenvolvimento; o modo Phases é recomendado para projetos complexos que envolvem múltiplas áreas.

Comparação entre Modos

  • O modo Phases é ideal para grandes funcionalidades que requerem coordenação entre diversas partes do código; já o Plan mode é mais adequado para tarefas com escopo bem definido.
  • O apresentador destaca a importância de escolher corretamente entre os modos dependendo da complexidade e das necessidades específicas do projeto em questão.

Refatoração do Portfólio no Quant Brasil

Importância do Modo de Raciocínio

  • O uso do modo "Frontier" é recomendado para obter o máximo de raciocínio, equilibrando qualidade, velocidade e custo em projetos de múltiplas fases.
  • Investir em um planejamento adequado desde o início pode economizar tempo e recursos na implementação futura.

Contexto da Refatoração

  • O apresentador deseja refatorar a funcionalidade do portfólio no aplicativo Quant Brasil, que atualmente funciona como uma lista de observação (watchlist).
  • A funcionalidade atual permite calcular métricas como beta, mas não fornece informações detalhadas sobre a composição financeira do portfólio.

Necessidades da Refatoração

  • O apresentador quer saber a porcentagem de cada ativo no portfólio e o valor total investido em cada um deles.
  • A refatoração requer integração com banco de dados e back-end, sendo considerada uma mudança significativa.

Vantagens do Uso do Tracer

  • Utilizar ferramentas como Tracer dentro do VS Code facilita o planejamento ao ter acesso direto ao repositório existente.
  • O Tracer analisa automaticamente a estrutura do repositório e identifica elementos já existentes que podem ser utilizados na refatoração.

Processo de Planejamento

  • O apresentador inicia um prompt para descrever as necessidades da nova funcionalidade, destacando que os portfólios devem conter informações detalhadas sobre transações.
  • Ele utiliza o Whisper Flow para converter suas falas em texto, facilitando a comunicação das ideias desejadas.

Perguntas Cruciais Durante a Refatoração

  • O Tracer faz perguntas relevantes sobre como modelar as posições dos usuários e se deve rastrear transações individuais ou simplificar o modelo.
  • A discussão inclui manter conceitos atuais separados da nova funcionalidade proposta.

Portfólio e Watchlist: Como Integrar?

Estrutura do Portfólio

  • O portfólio não deve ser completamente substituído; a funcionalidade de "watch list" é considerada relevante e deve ser mantida.
  • A atualização dos endpoints analíticos, como momentum e variação beta, deve ser feita para incorporar novos dados, mas o foco inicial será no portfólio cru e na exibição.

Funcionamento Interno

  • O sistema utiliza agentes que monitoram diferentes aspectos, como modelos e definições de front-end, permitindo uma integração eficiente.
  • Um diagrama mermaid é gerado automaticamente, mostrando a lógica do negócio envolvida na criação do portfólio.

Decisões Chave

  • As decisões incluem a sincronização automática do portfólio sempre que uma transação é adicionada. Os endpoints analíticos devem continuar funcionando sem interrupções.
  • O modo padrão será o "watchlist", garantindo que os usuários atuais não precisem migrar seus dados.

Fases de Implementação

  • Quatro fases foram definidas para a implementação:
  • Extensão do modelo de dados para suportar tanto o portfólio quanto a watchlist.
  • Criação dos endpoints da API para transações.
  • Atualização da interface do usuário (UI) para aceitar múltiplos modos.
  • Desenvolvimento da UI para adicionar transações e visualizar posições em tempo real.

Planejamento Detalhado

  • Cada fase pode ser dividida em tickets de desenvolvimento, permitindo trabalho paralelo entre desenvolvedores com dependências claras entre as tarefas.
  • A especificação detalhada do plano é criada utilizando um desenvolvimento orientado por especificações (spec driven development), reduzindo as chances de erro durante a implementação.

Finalização e Exportação

  • O plano finalizado inclui detalhes sobre migrações e verificações usando ferramentas específicas como Ruff.
  • Há opções para exportar o plano em formato markdown ou integrá-lo diretamente com agentes preferidos como Cloud Code ou Codex.

Implementação de Cloud Code e Verificação de Mudanças

Introdução ao Cloud Code

  • O apresentador introduz um plano para implementar um cloud code com 1 milhão de contextos, destacando sua eficácia.
  • Demonstra como o código se integra ao sistema, utilizando a funcionalidade de handoff para alternar entre diferentes modelos.

Execução do Código

  • O apresentador menciona que não implementará todas as fases devido à complexidade, mas irá rodar o cloud code para testar funcionalidades.
  • Ele destaca a rapidez da implementação, mencionando que todo o processo foi concluído em menos de quatro minutos, apesar de um erro não relacionado.

Etapa de Verificação

  • A fase atual é a verificação das mudanças feitas pelo CLI do Cloud Code, onde se analisa a implementação realizada.
  • O apresentador compara essa etapa a uma revisão de código (code review), onde são gerenciados comentários e sugestões para melhorias.

Resultados da Verificação

  • Durante a verificação, foram encontrados dois problemas: valores não limitados no modo e tipo de transação e queries sem índice que podem ser caras.
  • O apresentador elogia os detalhes fornecidos pela ferramenta Tracer AI na identificação dos problemas técnicos.

Conclusão e Reflexões Finais

  • Ele conclui ressaltando a importância do Spec Driven Development como uma abordagem profissional na programação.
  • Agradece à parceria com o Tracer e incentiva os espectadores a se inscreverem no canal e compartilharem o vídeo com outros interessados em programação.
Video description

Spec Driven Development com o TraycerAI ➡️ https://traycer.ai/ _______________________________________________ Spec Driven Development é o caminho para programar sério com IA. Neste vídeo eu mostro o que é SDD, como ele difere do Vibe Coding e uma implementação real na prática. Eu explico por que tanta gente falha ao programar com IA não por culpa do modelo, mas por falta de especificação, contexto e organização. Também mostro como transformar intenção em requisitos, fases e implementação usando um exemplo real dentro do QuantBrasil. No vídeo: - o que é Spec Driven Development - diferença entre SDD e Vibe Coding - relação com user stories, TDD e SDLC - exemplo prático de refactor real - como usar agentes com mais previsibilidade Capítulos 00:00 Intro 00:43 Entrevista com Andrej Karpathy 02:42 Artigo: Escrevendo testes como histórias de usuário 05:29 Vibe Coding vs SDD vs SDLC 14:30 Spec Driven Development na prática 29:56 O plano e a implementação 32:13 Etapa de verificação 34:00 Conclusão _______________________________________________ Os links abaixo são de afiliados. Ao utilizá-los você ganha descontos ou créditos nos produtos, além de ajudar o canal a ser sustentável. 🔻🔻 VPS na Hostinger com 10% OFF 🔻🔻 https://www.hostinger.com.br/quantbrasil CUPOM: QUANTBRASIL 🔻🔻 Ganhe 10% OFF no Firecrawl 🔻🔻 https://firecrawl.link/rafael 🔻🔻 Teste o Wispr Flow por 2 semanas grátis 🔻🔻 https://ref.wisprflow.ai/rafael 🔻🔻 Teste seu código de graça com o TestSprite 🔻🔻 https://www.testsprite.com/?via=rafael 🔻🔻 15% OFF no QuantBrasil 🔻🔻 https://quantbrasil.com.br/planos CUPOM: YOUTUBE15 _______________________________________________ Também estou em outras redes sociais. Siga-me para receber mais conteúdo sobre IA, Engenharia de Software e programação! ✍🏻 Newsletter: https://codecapital.substack.com 💬 Telegram: https://t.me/quantbrasil 💼 LinkedIn: https://linkedin.com/in/rafaelquintanilha 📸 Instagram: https://www.instagram.com/quant_brasil _______________________________________________ 🔻🔻 Vídeos relacionados 🔻🔻 https://www.youtube.com/watch?v=aN79jlxU-iQ https://www.youtube.com/watch?v=_wQjRbcxwWo https://www.youtube.com/watch?v=_GqKe-Ym-d0 🔻🔻 Artigo: Writing tests as user stories in React 🔻🔻 https://rafaelquintanilha.com/writing-tests-as-user-stories-in-react/ #codex #specdrivendevelopment #claudecode