Vamos aprender e criticar como grandes empresas como a FAANG fazem "programação por intuição (Vibe Coding)": "Primeiro, faça com que um número suficiente de partes interessadas concorde" "Depois, faça uma revisão de design" "Em seguida, vem semanas de trabalho em documentação" "Então, os gerentes de produto e de projeto dividem as tarefas" Após três meses, finalmente podemos começar a programação por intuição! --- É assim que fazemos "programação por intuição (Vibe Coding)" na FAANG Olá a todos. Quero fazer este post porque vejo muitas pessoas dizendo que o código escrito com a ajuda de IA não pode ser usado em produtos reais. Isso é absolutamente uma bobagem. Primeiro, um pouco de contexto: sou engenheiro de software de IA com mais de dez anos de experiência, metade dos quais passei na FAANG. A primeira metade da minha carreira foi como engenheiro de sistemas, e não como desenvolvedor, mas escrevo código há quase 15 anos. Sem mais delongas, vou explicar como nossa equipe começou a usar IA para escrever código **de produção (production code)** de verdade. 1. Você sempre deve começar com um **documento de design técnico**. Esta é a parte mais central de todo o trabalho. Este documento é como uma proposta, você precisa convencer um número suficiente de partes interessadas (stakeholders) de que sua solução é viável. Somente após a aprovação do design, você pode começar a desenvolver o sistema em si. Este documento deve incluir a arquitetura completa do sistema, planos de integração com outros sistemas, etc. 2. Antes de iniciar o desenvolvimento, deve-se realizar uma **revisão de design (Design review)**. Nesta fase, os engenheiros seniores (Senior Engineers) da equipe vão revisar seu documento de design minuciosamente. Isso é algo bom, eu chamo isso de **"antecipar a dor"**. 3. Se a revisão for bem-sucedida, você pode oficialmente iniciar o trabalho de desenvolvimento. Nas primeiras semanas, todos gastarão muito tempo escrevendo documentos mais detalhados para cada subsistema (subsystem) que a equipe de desenvolvimento precisa construir. 4. Em seguida, vem o desenvolvimento do **backlog** e o **planejamento de sprints (sprint planning)**. Nesta fase, os desenvolvedores se reúnem com os gerentes de produto (PMs) e gerentes de projeto técnico (TPMs) para dividir os grandes objetivos em tarefas específicas que os desenvolvedores podem executar. 5. **Desenvolvimento de software**. Finalmente, podemos começar a codificar e eliminar as tarefas. E aqui é onde a IA brilha, ela é realmente nosso **multiplicador de força (force multiplier)**. Estamos adotando o modelo de **desenvolvimento orientado a testes (Test Driven Development, TDD)**, então a primeira coisa que faço é fazer com que o **agente de IA (AI agent)** escreva os casos de teste para a funcionalidade que estou desenvolvendo. *Somente quando os testes estão prontos, eu começo a fazer com que o agente de IA me ajude a construir a funcionalidade específica*. 6. **Revisão de código**. Nosso código precisa da aprovação de dois desenvolvedores antes de ser mesclado ao branch principal (main). Nesta etapa, a IA também mostrou um grande potencial, podendo nos ajudar na revisão. 7. **Teste em ambiente de pré-lançamento (staging)**. Se tudo correr bem nos testes, nós lançamos oficialmente no ambiente de produção (prod). Em resumo, desde a proposta de funcionalidade até o lançamento final, descobrimos que a **velocidade do processo aumentou cerca de 30%**. Isso é um grande avanço para nós. **Resumo (TL;DR):** Sempre comece com um documento de design e arquitetura sólido; depois implemente isso em partes; e sempre escreva os testes primeiro.
13,31K