Como eu uso o Claude Code (Workflow Anti-Vibe Coding)
Workflow Completo para Construir Aplicações com Cloud Code
Introdução ao Workflow
- O apresentador compartilha seu workflow completo para construir aplicações usando o Cloud Code, destacando que esse processo foi utilizado para criar o aplicativo Epic, que possui mais de 3.000 usuários em 90 dias.
- Ele menciona a diferença entre abordagens de codificação: "vibe coding" é ineficaz, enquanto um método estruturado pode levar a resultados melhores.
Metodologia Utilizada
- O apresentador introduz a metodologia chamada "spec driven development" (SDD), que se diferencia do "test driven development".
- A metodologia consiste em três passos principais:
- Pesquisa na base de código existente e documentação externa.
- Criação de uma especificação (spec) detalhando arquivos a serem criados ou modificados.
- Implementação do plano baseado na spec gerada.
Problemas Comuns no Uso de AI
- Antes de entrar nos detalhes da metodologia, ele discute problemas comuns que levam à percepção negativa sobre o código gerado por AI.
- Um padrão comum é o "overengineering", onde soluções simples são complicadas desnecessariamente.
Exemplos de Desafios com AI
- Outro problema frequente é a reinvenção da roda; por exemplo, ao tentar criar um editor Markdown do zero quando já existem soluções prontas disponíveis.
- O apresentador destaca como evitou esse erro ao pesquisar previamente e encontrar bibliotecas existentes como Pros Mirror e Tip Tap.
Limitações da Inteligência Artificial
- Às vezes, a AI não consegue implementar funcionalidades solicitadas devido à falta de informações atualizadas em sua base de treinamento.
- A repetição desnecessária de trechos de código já existentes também é um problema comum, resultando em manutenção duplicada e confusa.
Conclusão sobre os Padrões Observados
- O apresentador observa que muitos desses padrões podem causar bloqueios durante o desenvolvimento devido ao acúmulo de dívidas técnicas.
- Ele finaliza mencionando que esses problemas são exacerbados pela "janela de contexto" limitada dos modelos AI.
Context Window e a Memória da IA
O que é a Context Window?
- A "context window" refere-se à quantidade de informação que um modelo de IA consegue reter, geralmente medida em tokens. Por exemplo, 400.000 tokens equivalem a 1.600.000 caracteres.
Problemas Relacionados à Context Window
- Um dos problemas é que a IA pode não saber que existe uma maneira mais simples de realizar uma tarefa, pois não tem acesso às informações necessárias na sua janela de contexto.
- A IA pode reinventar soluções já existentes porque não reconhece o que foi feito anteriormente devido ao limite da sua memória.
Impacto da Qualidade do Input
- A qualidade do output gerado pela IA depende diretamente da qualidade do input fornecido. Informações ruins ou incompletas resultam em saídas igualmente ruins.
- É importante lembrar que a IA multiplica as informações dadas; se o input for inadequado, o resultado também será.
Fatores Que Comprometem o Input
- Informações incorretas podem levar a resultados errôneos, como solicitar alterações em arquivos errados ou mal especificados.
- A falta de documentação necessária para entender bibliotecas utilizadas resulta em implementações imprecisas.
Efeitos das Informações Inúteis e Excesso de Dados
- Informações irrelevantes ocupam espaço na janela de contexto sem agregar valor ao output final.
- Um excesso de informações prejudica a qualidade do output; quanto mais cheia estiver a janela de contexto, pior será o resultado.
Como Alimentar Corretamente a IA
- Para otimizar os resultados, é crucial fornecer apenas as informações necessárias para cada implementação específica.
- Compreender como diferentes comandos e prompts consomem espaço na janela de contexto ajuda na gestão eficiente das interações com a IA.
Como otimizar a implementação de código com Cloud Codes?
Introdução ao uso do Cloud Codes
- O autor enfatiza a importância de ter informações completas e resumidas para maximizar o uso da janela de contexto, permitindo uma implementação eficaz.
Experiência prática com Cloud Codes
- O autor começou a usar o Cloud Codes em abril, logo após seu lançamento em março, e menciona que utiliza diariamente há quase 10 meses.
- Ele testou diversos métodos e prompts disponíveis, buscando sempre o melhor fluxo de trabalho. Promete compartilhar novas descobertas futuras.
Processo de pesquisa para implementações
- Ao iniciar uma nova implementação, o autor solicita ao Cloud Code que faça uma pesquisa na base de código para identificar arquivos afetados pela nova funcionalidade.
- Além disso, ele pede que busque documentações relevantes sobre as tecnologias envolvidas e padrões de implementação fora da base de código.
Exemplo prático: Implementação de autenticação por e-mail
- O autor descreve um caso onde precisava implementar um sistema para confirmar contas via e-mail se o usuário não logasse com Gmail.
- Ele pediu ao Cloud Code para identificar os arquivos relacionados à feature de autenticação que precisariam ser alterados, como a tabela do banco de dados dos usuários.
Busca por documentação e padrões
- Utilizou a documentação do Next.js como referência, pedindo ao Cloud Code que extraísse trechos relevantes sem ler todo o material disponível.
- Menciona também buscar padrões no Stack Overflow ou GitHub, importando projetos temporariamente para entender melhores práticas antes da exclusão.
Geração do PRD.md
- Após coletar todas as informações necessárias, ele solicita ao Cloud Code a geração de um PRD.md contendo todos os arquivos relevantes encontrados durante a pesquisa.
- O PRD inclui apenas informações úteis para evitar sobrecarga com dados irrelevantes. Isso ajuda na clareza das implementações futuras.
Limpeza da janela de contexto
- Após gerar o PRD.md, ele usa o comando "clear" no Cloud Code para limpar toda a janela de contexto antes de iniciar uma nova conversa focada na especificação (spec).
Como Criar uma Spec Eficiente para Implementação de Código?
Processo de Criação da Spec
- O processo começa com a leitura do PRD (Product Requirements Document), que contém todas as informações necessárias e a descrição do que deve ser feito.
- A spec gerada é tática, detalhando todos os arquivos de código que precisam ser alterados ou criados, incluindo snippets de código ou pseudocódigos necessários para implementação.
- É crucial que a spec siga um padrão claro, especificando o caminho dos arquivos e as modificações desejadas; isso evita implementações inadequadas.
- A spec funciona como um resumo das pesquisas realizadas na base de código, indicando quais arquivos devem ser modificados ou criados.
- Após gerar a spec, ela é utilizada como prompt para implementar o que foi planejado, aproveitando ao máximo a janela de contexto disponível.
Gerenciamento da Janela de Contexto
- Para otimizar o uso da janela de contexto, recomenda-se limpar a conversa após cada etapa: pesquisa, geração da spec e implementação do código.
- É ideal trabalhar com 40% a 50% da janela de contexto para evitar sobrecarga; se ultrapassar esse limite, é necessário reiniciar a conversa.
- Recursos e templates utilizados durante o processo estão disponíveis gratuitamente na newsletter "Deb GPT", focada em construção de software com IA.
Fase de Pesquisa
- O objetivo principal na fase de pesquisa é coletar todo o contexto necessário para uma implementação eficaz; informações irrelevantes podem surgir nesse momento sem problemas.
- Apenas informações relevantes são filtradas no PRD final; essa fase atua como um funil para separar dados úteis dos inúteis.
- Durante a pesquisa, pode-se incluir documentação externa relevante (ex: APIs), essencial para entender como integrar novas funcionalidades ao sistema existente.
- Padrões de implementação também são importantes; copiar soluções já testadas ajuda na eficiência e evita reinventar processos desnecessariamente.
Geração da Spec
- Ao criar a spec, faz-se referência ao PRD gerado anteriormente. A conversa deve estar limpa para garantir foco nas novas instruções dadas à IA sobre os arquivos necessários.
- Instruções claras sobre quais arquivos modificar ou criar são essenciais. Snippets podem ser incluídos para guiar melhor as implementações desejadas.
Como Criar Especificações Eficazes para IA
Importância da Especificação
- A especificação é crucial para guiar a IA na criação de tabelas e arquivos, garantindo que o trabalho siga um padrão desejado.
- Se as instruções não forem claras, a IA pode gerar resultados indesejados, levando à frustração do usuário.
O Papel da SPEC
- A SPEC funciona como um guia de implementação, detalhando todos os arquivos que precisam ser criados ou modificados pela IA.
- Essa abordagem reduz a probabilidade de erros, pois fornece uma estrutura clara para o trabalho da IA.
Resultados Esperados ao Usar Especificações
- A utilização de especificações leva à redução da repetição de código pela IA, já que ela pode reutilizar trechos existentes em vez de reescrevê-los.
- As implementações tendem a ser mais simples e diretas, facilitando a manutenção futura do código.
Eficiência no Desenvolvimento
- Um desenvolvedor eficiente consegue escrever códigos mais concisos; menos linhas significam menos complexidade e maior facilidade na manutenção.
- Códigos mais simples são preferíveis porque tornam o processo de revisão e modificação muito mais ágil.
Assertividade nas Implementações
- Fornecer documentação adequada à IA aumenta as chances dela realizar implementações corretas na primeira tentativa.
- Com acesso à documentação correta, a chance de sucesso nas integrações com dependências externas é significativamente aumentada.
Modularização do Código
- A modularização depende da arquitetura utilizada; especificar quais arquivos criar ajuda a manter responsabilidades separadas dentro do código.
- Um código bem modularizado facilita manutenções futuras e evita confusões durante o desenvolvimento.
Como evitar a velocidade falsa no desenvolvimento de código?
A ilusão da velocidade no desenvolvimento
- O início do desenvolvimento pode dar uma impressão de resultados rápidos, mas isso é enganoso. Sem pesquisa e planejamento, o código pode rapidamente se tornar desorganizado.
- Embora o processo inicial possa parecer burocrático, ele é essencial para evitar problemas futuros. A experiência do autor sugere que um método estruturado leva a melhores resultados a longo prazo.
- O autor recomenda testar o método que apresenta, enfatizando que mesmo que pareça mais lento inicialmente, os benefícios são significativos. Ele oferece recursos gratuitos em sua newsletter para ajudar nesse processo.
Conclusão sobre métodos de trabalho
- A abordagem recomendada pelo autor visa garantir um desenvolvimento mais sustentável e organizado, evitando frustrações futuras com códigos complexos e difíceis de gerenciar.