- "Vibe Engineering" é um novo nome para uma forma profissional de desenvolvimento que utiliza ferramentas de programação com IA e, diferentemente do "vibe coding" rápido e irresponsável, significa uma abordagem em que engenheiros experientes usam LLMs mantendo a qualidade do código e a responsabilidade
- Com o surgimento de agentes de programação como Claude Code, OpenAI Codex CLI e Gemini CLI, o uso de LLMs em projetos reais aumentou rapidamente, e alguns engenheiros executam vários agentes ao mesmo tempo para trabalho em paralelo
- Para usar LLMs de forma eficaz, são necessárias práticas já consolidadas de engenharia de software de alto nível, como testes automatizados, planejamento prévio, documentação abrangente, controle de versão e cultura de revisão de código
- Ferramentas de IA têm a característica de amplificar a expertise existente, e quanto mais habilidades e experiência um engenheiro sênior possui, mais rápido e melhores tendem a ser os resultados ao usar LLMs
- O termo enfatiza, por meio de uma distinção clara em relação ao "vibe coding", que se trata de uma forma mais difícil e sofisticada de usar IA para desenvolver software de produção, e a combinação aparentemente contraditória entre engenharia e vibe acaba tendo a vantagem de ser fácil de lembrar (destacando as mudanças no processo de desenvolvimento com a evolução das ferramentas de IA e a importância da expertise)
Distinção entre vibe coding e vibe engineering
- Vibe coding é uma forma rápida, solta e irresponsável de desenvolvimento de software com IA, totalmente guiada por prompts, uma abordagem que não presta atenção em como o código realmente funciona
- No extremo oposto do espectro, existe uma forma em que profissionais experientes aceleram o trabalho com LLMs, mas continuam orgulhosos do software que produzem e assumem responsabilidade por ele com confiança, e isso é chamado de vibe engineering
- Trabalhar de forma produtiva com LLMs como engenheiro de software em projetos reais, e não apenas em projetos de brinquedo, é uma verdade pouco comentada: é difícil, exige muita profundidade no entendimento das ferramentas e há muitas armadilhas a evitar
O surgimento dos agentes de programação e seu impacto
- Surgiram ferramentas de agentes de programação como o Claude Code, lançado em fevereiro de 2025, o Codex CLI da OpenAI, lançado em abril, e o Gemini CLI, lançado em junho, aumentando drasticamente a utilidade dos LLMs para problemas reais de programação
- Essas ferramentas modificam o código repetidamente e testam de forma ativa até atingir o objetivo especificado
- Engenheiros de software experientes e confiáveis estão executando vários agentes ao mesmo tempo para resolver diversos problemas em paralelo e ampliar o escopo do trabalho
- O autor estava cético no início, mas ao testar agentes de programação paralelos na prática, confirmou que isso é mentalmente exaustivo, mas surpreendentemente eficaz
- A maior parte da coleção tools.simonwillison.net foi construída no estilo clássico de vibe coding, mas iterar com agentes de programação para produzir código com qualidade de produção que possa ser mantido no futuro parece um processo completamente diferente
Práticas existentes de engenharia de software que os LLMs reforçam
- Testes automatizados: com uma suíte de testes forte, abrangente e estável, ferramentas de programação com agentes conseguem trabalhar rapidamente; sem testes, o agente pode afirmar que algo funciona sem realmente testar, ou mudanças novas podem quebrar funcionalidades não relacionadas
- Desenvolvimento orientado a testes é especialmente eficaz para agentes que podem iterar em loop
- Planejamento prévio: quando você se senta para montar algo improvisando junto, tudo vai muito melhor se começar com um plano de alto nível, e isso se torna ainda mais importante ao trabalhar com agentes
- Você pode iterar primeiro no plano e depois passá-lo ao agente para que ele escreva o código
- Documentação abrangente: assim como programadores humanos, LLMs só conseguem manter em contexto partes do codebase por vez; se você fornecer a documentação relevante, eles podem usar APIs de outras áreas sem precisar ler o código antes
- Se você escrever uma boa documentação primeiro, o modelo pode construir uma implementação compatível apenas com esse input
- Bons hábitos de controle de versão: é ainda mais importante desfazer erros e entender quando e como algo mudou, já que o agente de programação pode ter feito alterações
- LLMs são muito bons com Git e podem explorar o histórico por conta própria para rastrear a origem de bugs; usam
git bisect melhor do que a maioria dos desenvolvedores
- Automação eficaz: integração contínua, formatação e lint automatizados, e deploy contínuo para ambientes de preview também ajudam ferramentas de programação com agentes
- LLMs facilitam a escrita rápida de scripts de automação para que o trabalho possa ser repetido com precisão e consistência na próxima vez
- Cultura de revisão de código: se você for rápido e produtivo em code review, terá uma experiência muito melhor ao trabalhar com LLMs
- Se você preferir escrever o código por conta própria a revisar algo equivalente escrito por outra pessoa (ou por alguma coisa), isso será difícil
- Uma forma muito estranha de técnica de gestão: obter bons resultados com agentes de programação é desconfortavelmente parecido com obter bons resultados de colaboradores humanos
- É preciso fornecer instruções claras, garantir o contexto necessário e dar feedback acionável sobre o que foi produzido
- A razão de isso ser muito mais fácil do que trabalhar com pessoas reais é que você não precisa se preocupar em ofendê-las ou desanimá-las, mas a experiência prévia em gestão será surpreendentemente útil
- QA manual realmente excelente: além dos testes automatizados, é preciso ser realmente bom em testar software manualmente, inclusive prevendo e explorando edge cases
- Fortes habilidades de pesquisa: há dezenas de maneiras de resolver um problema de programação, e identificar a melhor opção e validar a abordagem sempre foi importante; isso continua sendo uma barreira antes de soltar um agente para escrever código real
- Capacidade de implantar em ambientes de preview: quando o agente constrói uma funcionalidade, ter uma forma de visualizá-la com segurança (sem fazer deploy direto em produção) torna a revisão muito mais produtiva e reduz bastante o risco de entregar algo quebrado
- Instinto sobre o que pode ser terceirizado para a IA e o que deve ser tratado manualmente: isso continua evoluindo conforme modelos e ferramentas se tornam mais eficazes
- Uma grande parte de trabalhar bem com LLMs é manter uma forte intuição sobre quando eles podem ser aplicados da melhor forma
- Um senso de estimativa atualizado: estimar quanto tempo um projeto vai levar sempre foi uma das partes mais difíceis — e mais importantes — de ser um engenheiro sênior, especialmente em organizações onde decisões de orçamento e estratégia se baseiam nessas estimativas
- Programação assistida por IA torna isso ainda mais difícil: coisas que antes levavam muito tempo agora ficam muito mais rápidas, mas as estimativas passam a depender de novos fatores que todos ainda estão tentando entender
A essência e o significado da vibe engineering
- Para realmente aproveitar as capacidades dessas novas ferramentas, é preciso operar no mais alto nível do jogo, incluindo
- não apenas ser responsável por escrever código, mas também por
- pesquisar abordagens,
- tomar decisões de arquitetura de alto nível,
- escrever especificações,
- definir critérios de sucesso,
- projetar loops de agentes,
- planejar QA,
- administrar uma tropa cada vez maior de estranhos estagiários digitais que tentam enganar você sempre que têm chance,
- e gastar muito tempo com revisão de código
- Quase tudo isso já é característica de engenheiros de software sênior
- Ferramentas de IA amplificam a expertise existente e, quanto mais habilidades e experiência você tiver como engenheiro de software, melhores e mais rápidos serão os resultados ao trabalhar com LLMs e agentes de programação
“Vibe engineering”, really? : reflexões sobre a escolha do termo
- Sobre o nome "vibe engineering" ser idiota: provavelmente é, e a ideia de "vibe" em IA já parece um pouco cansada neste ponto, além de o próprio "vibe coding" ser usado de forma depreciativa por muitos desenvolvedores
- Ainda assim, estou pronto para recuperar a vibe para algo mais construtivo
- Nunca gostei da distinção artificial entre "coder" e "engineer", porque sempre pareceu uma pequena barreira de entrada, mas neste caso uma pequena barreira de entrada é exatamente o que precisamos
- Vibe engineering estabelece uma distinção clara em relação ao vibe coding, sinalizando que esta é uma maneira diferente, mais difícil e mais sofisticada de trabalhar com ferramentas de IA para construir software de produção
- Gosto da possibilidade de isso soar arrogante e controverso, porque todo esse espaço ainda é absurdo de várias maneiras
- Enquanto tentamos descobrir as maneiras mais produtivas de aplicar essas novas ferramentas, não devemos nos levar tão a sério
- No passado, houve tentativas de emplacar termos como programação assistida por IA, mas com sucesso quase nulo; desta vez, não parece ruim esfregar um pouco de vibe nisso e ver o que acontece
- Gosto muito da clara incompatibilidade entre "vibe" e "engineering", que torna o termo combinado lúdico e, esperançosamente, memorável por ser autocontraditório
4 comentários
Pelo que eu sei, não faz muito tempo que também tentaram dar o nome de "que tipo de programação?" e fracassaram, então acho que a expressão mais adequada é programação em par com IA.
Dar um nome só para poder dizer: fui eu que criei esse nome.
Alguém chegou a chamar isso de codificação aumentada (Augmented Coding), mas o termo desapareceu rapidamente.
Opiniões no Hacker News
/yolopara simplesmente executar sem muita orientação.Criando um nome sem sentido;