No cenário atual do desenvolvimento de software, a inteligência artificial (IA) se tornou uma ferramenta valiosa que está transformando a forma como os desenvolvedores encaram seus projetos.
Existem duas formas de usar IA no desenvolvimento de software
Estabelecer máximas em engenharia de software é uma prática arriscada, principalmente pelo caráter rebelde e desafiador dos profissionais dessa indústria: isso nos tenta a tentar refutá-las, só para colocá-las à prova.
Quando o assunto é IA, esse risco se agrava. As máximas relacionadas à IA podem ficar obsoletas rapidamente por causa do ritmo acelerado com que a tecnologia evolui, às vezes antes mesmo de alguém tentar desafiá-las.
Mesmo assim, vou me arriscar a afirmar que existem duas formas de usar inteligência artificial no desenvolvimento:
- A IA é usada para otimizar e melhorar os processos do ciclo de desenvolvimento. Isso inclui tarefas como detecção automática de erros, recomendação de melhorias no código e outras atividades que facilitam e agilizam o trabalho do desenvolvedor.
- A IA é integrada diretamente ao produto final como parte fundamental da sua proposta de valor para o cliente. Exemplos disso podem ser sistemas de recomendação personalizados que melhoram a experiência do usuário, modelos de linguagem grandes (LLMs) adaptados a tarefas específicas ou soluções inovadoras baseadas em geração aumentada por recuperação (RAG).
Corolário: o segundo grupo costuma incluir quase todo o conteúdo do primeiro.
Este artigo foi pensado para ser útil aos dois grupos de profissionais. No entanto, vamos focar principalmente no primeiro grupo, por ser maior e mais relevante no campo do desenvolvimento de software.
"Todo mundo" fala em ser rápido
“I can't believe it only took me 20 minutes to revolutionize how I track expenses for my farm LLC!
As someone who's been leading tech initiatives for years, I could have hired developers, bought enterprise software, or kept doing it manually in spreadsheets.
Instead, I spent 20 minutes with AI and built exactly what I needed.
This is how I (a non-technical person) vibe-coded a fully functional app in four hours using Claude Code with several API integrations.
It took me 2 hours of vibecoding using an AI tool to build...
It's over...
This new AI agent called [insert whatever name you want here] can now create full-stack products, websites, and games, turning simple ideas into full-stack apps within minutes—no experience required
O que todos esses exemplos têm em comum? Todos falam da rapidez com que dá para desenvolver um novo app, um MVP ou uma feature.
“20 minutos” parece ser o tempo médio para fazer qualquer coisa incrível com IA, seguido pelas mágicas “2 horas” ou “4 horas”.
Todo mundo é mais rápido e economiza tempo. O que antes custava X agora custa um décimo disso. Todo mundo parece estar com pressa para gerar código: parece ser a única métrica importante na qual devemos confiar, mesmo com pouquíssimas evidências.
Deixando as redes sociais de lado por um momento e olhando para a indústria, encontramos relatórios com mais respaldo empírico, como o da consultoria McKinsey, de 2023. Muita coisa mudou no último ano e meio em termos de modelos, velocidade de geração de código e novas funcionalidades, mas os resultados já falavam em “rapidez”.
(...) As ferramentas baseadas em IA generativa oferecem uma economia de tempo impressionante em muitas tarefas comuns dos desenvolvedores.
O estudo indica que documentar seria 45%–50% mais rápido, codificar 35%–45% mais rápido e refatorar 20%–30% mais rápido.
Como conclusão, poderíamos dizer que:
- Desenvolvedores de software estão gerando código com IA de forma constante (seja por autocompletar simples ou por múltiplos agentes).
- A IA nos permite gerar código mais rápido
- Gerar código mais rápido nem sempre significa que esse código agrega valor ao produto final
Não confunda rapidez com velocidade
Nesta seção, vamos fazer uma analogia entre os conceitos de rapidez e velocidade e a física, claro que sem seguir todo o rigor dessa ciência, mas fazendo simplificações que sirvam para o nosso cenário.
O que é rapidez? Rapidez é a “distância que ‘algo’ percorre em um tempo determinado”. O problema da rapidez é que dá para ser rápido em várias direções, inclusive dá para ser rápido se movendo de forma circular (ninguém pode dizer que um satélite não se move rápido).
Para a física, tudo bem, mas na seção anterior falamos da rapidez como métrica de produtividade. Então, mesmo sabendo por instinto que essa métrica não faz muito sentido, confirmamos isso ao perceber que geramos código rápido, mas sem uma direção concreta.
Gerar código rápido traz os seguintes problemas:
- Aumenta a dívida técnica: os casos fora do contexto que originou o prompt ficam sem tratamento.
- Diminui a clareza do código: muitas vezes o código gerado resolve funcionalmente o que pedimos, mas não é claro (pelo menos para um humano).
- Diminui a manutenibilidade: os 2 pontos anteriores afetam negativamente a manutenibilidade de forma óbvia, já que um código com dívida técnica e difícil de entender nunca pode ser fácil de manter.
- Diminui a testabilidade: os problemas anteriores dificultam muito garantir que todos os casos de negócio possam ser testados corretamente.
O uso em massa da IA para gerar código abriu um debate sobre se o código continua relevante ou se virou apenas mais uma camada de abstração, parecida com a linguagem intermediária do .Net ou do Java. Mesmo considerando isso, surgem problemas ainda mais sérios com essa geração rápida de features:
- As features desenvolvidas agregam valor ao cliente ou ao produto?
- Estão alinhadas com o negócio?
- Oferecem ao produto ou ao cliente uma vantagem competitiva?
- Criam dependência de soluções (código) instáveis, mal definidas ou mal mantidas?
Já sei o que vocês estão pensando: “Darío, mas esses problemas já existiam antes da IA: não tem nada de novo nessa lista!” E é verdade.
Mas, como estabelecemos antes, geramos código cada vez mais rápido com IA e agora conseguimos incorporar novas funcionalidades a um produto. Isso aumenta exponencialmente a chance de que os riscos mencionados antes se concretizem.
É aqui que entra o conceito de velocidade. O que é velocidade?
Velocidade é a rapidez e a direção com que algo se move. Ou seja, não basta ser rápido: precisamos ter uma direção para alcançar a velocidade!
Para fechar esta seção, uma conclusão: não faz sentido gerar funcionalidades (código) só porque é barato, rápido e legal: precisamos gerar código com IA em uma velocidade controlada.
Como gerar código com IA em uma velocidade controlada?
Para explicar esta parte do artigo, vamos usar uma analogia. Vocês sabem o que é um First Person Shooter (FPS)? Talvez não por esse nome, mas se eu mencionar jogos como Call of Duty, The Last of Us, Doom ou Duke Nukem 3D (meu favorito), vocês já sabem do que estou falando.
Bom, agora vamos supor que estamos jogando The Last of Us (se vocês não jogaram, façam um favor a si mesmos e joguem) e nos encontramos na seguinte situação:

Nesse tipo de situação, tenho 2 opções:
- Entrar na sala atirando (e arriscar o que der e vier)
- Observar tudo. Como tenho uma porta que me cobre à esquerda, posso entrar devagar, de costas para a parede da direita, perto da porta: observar de novo e decidir o próximo movimento.
Sem dúvida, mesmo já tendo escolhido a opção 1 alguma vez em busca de uma dose de adrenalina, sabemos que a opção 2 é a mais segura se quisermos ter chances de sucesso.
O que descrevemos antes como opção 2 pode ser generalizado da seguinte forma:
- Observar
- Orientar
- Decidir
- Atuar
Essa formalização foi descrita pela primeira vez em meados do século XX por John Boyd como um modelo de tomada de decisão em contextos extremamente mutáveis, voltado principalmente para combates aéreos entre caças (dogfighting). O nome dele é OODA loop por causa das iniciais de cada etapa.
Aqui vemos como esse modelo mental se encaixa perfeitamente na situação de jogo que apresentamos antes.

E podemos ver como o loop se repete a cada movimento, conforme avançamos no jogo.

Agora, como isso responde à pergunta sobre como gerar código com IA em uma velocidade controlada?
Bom, da primeira seção do artigo podemos concluir que, de fato, estamos gerando código muito rápido com IA. Da segunda seção, precisamos ter direção para que essa rapidez que conquistamos se transforme em velocidade.
Então, a forma de gerar código com IA em velocidade controlada é usar o OODA Loop como parte do nosso processo de trabalho.
Isso funciona na prática? Como?
tl;dr: sim, funciona.
Desde que comecei a usar Claude Code como ferramenta de geração de código, senti um certo desconforto. Não tinha a ver com a ferramenta em si, que desde o início considerei superior em termos de interface e resultados, mas com o processo usado para desenvolver novas funcionalidades.
Foi aí que percebi que precisava avançar por microiterações: passos curtos, mas precisos, na direção certa. Experimentei prompts mais específicos e focados, e comecei a melhorar os resultados. Comecei a chamar esse processo de pequenas melhorias iterativas, cada uma iniciada com um prompt, de “AI multi-turn feature generation”. Esse nome veio de uma expressão que Andrew Chan usou no seu artigo “Vibecoding a high performance system” para descrever uma parte do processo de vibe-coding dele.
Depois incorporei o modelo mental OODA Loop para garantir que cada pequena melhoria avançasse na direção certa. Por fim, fiz uma mudança definitiva no meu fluxo de trabalho usando alguns hooks do Claude Code: depois de cada ciclo de geração de código, um commit era gerado automaticamente com o prompt usado como descrição. Isso finalmente me deu o conforto e o controle que eu precisava no meu processo de desenvolvimento.

Conclusão
No contexto atual do desenvolvimento de software, a inteligência artificial se tornou uma ferramenta essencial que permite aos desenvolvedores gerar código em uma velocidade sem precedentes. Porém, é fundamental não confundir rapidez com velocidade efetiva. Ao aplicar o ciclo OODA (Observar, Orientar, Decidir, Atuar), os desenvolvedores conseguem garantir que sua rapidez se traduza em um avanço significativo e orientado. Essa abordagem ajuda a evitar problemas comuns, como dívida técnica e falta de clareza no código, além de garantir que as funcionalidades geradas agreguem valor real ao produto final.
Na minha experiência, essa abordagem melhorou bastante meu processo de desenvolvimento ao usar ferramentas de geração de código baseadas em IA. A metodologia de geração de funcionalidades multi-turn, junto com o modelo OODA, deu uma estrutura clara para avançar nos meus projetos. Essa estrutura se baseia em princípios sólidos e testados, como “divide and conquer” e os ciclos de melhoria contínua, o que reforça minha confiança na sua eficácia. Ainda assim, estou aberto a feedback e sugestões de outros profissionais para continuar refinando essa abordagem.
Por fim, incentivo todos os desenvolvedores a não se conformarem com processos que geram desconforto ou frustração. Assim como transformei meu desconforto inicial com as ferramentas de IA em um processo mais eficiente e satisfatório, todo mundo deveria buscar formas proativas de otimizar seu fluxo de trabalho. A chave está em adaptar as ferramentas e metodologias disponíveis às nossas necessidades específicas e melhorar nossa produtividade no dia a dia.




