Tudo que você precisa saber sobre Vibe Coding
Desafios e oportunidades na era da Inteligência Artificial.
Não é novidade para ninguém que a popularização da Inteligência Artificial chacoalhou muitos setores da sociedade; em especial, aqueles que trabalham com tecnologia tem sido fortemente afetados.
Não digo "afetados" com conotação negativa, mas sim como uma realidade difícil de escapar. É verdade, muitas empresas podem escolher ignorar as mudanças relacionadas à IA, mas por quanto tempo?
Essa é a razão pela qual tenho focado tanto nesse assunto tanto nesse blog como no YouTube; não me interessa o hype, mas sim a crença de estarmos vivendo um turning point no modo de se programar.
Pois bem, sinto-me confortável para falar sobre esse assunto pois fui um early adopter dessas tecnologias. Por força do trabalho, testei diversas ferramentas, experimentei múltiplos modelos, e escrevi alguns posts sobre esses temas. Por exemplo, ainda ano passado fiz uma reflexão se a Inteligência Artificial está nos tornando programadores piores, e mais recentemente detalhei o processo de desenvolvimento com o Claude Code.
Faço esse preâmbulo pois acredito ser relevante explicar com profundidade um termo que surgiu recentemente: vibe coding.
Se você me acompanha por aqui ou no YouTube certamente já me viu pincelando sobre o assunto. Inclusive já publiquei um vídeo dedicado que recomendo assitir para uma maior compreensão do que quero dizer:
Mas enfim, o que é vibe coding? É difícil desassociar esse termo de quem o cunhou, um cientista da computação chamado Andrej Karpathy, que possui em seu currículo um PhD em Stanford e empresas como OpenAI e Tesla, além de ser um verdadeiro OG da área de IA.
Karpathy definiu o processo de vibe coding de forma um tanto quanto poética:
There's a new kind of coding I call "vibe coding", where you fully give in to the vibes, embrace exponentials, and forget that the code even exists.
Outro que se aventurou a definir vibe coding, em uma linguagem mais direta, foi Simon Willison, também bastante respeitado na área:
Building software with an LLM without reviewing the code it writes.
Ou seja, vibe coding é um "estilo" de programar onde você não se importa com o código; você avalia o processo pelo resultado. "Eu quero que quando o usuário aperte esse botão, X aconteça". Ok, apertei o botão, X aconteceu? Se sim, dou-me por satisfeito.
Sendo assim, vibe coding pressupõe bem menos rigor técnico, o que naturalmente atrai pessoas de outras áreas. Ora, se não preciso entender as internas de uma codebase, então posso enfim programar! Abordei esse fenômeno em outro post, Nem todo programador precisa ser profissional.
À medida que os modelos de IA ficam mais eficientes, e dada a facilidade que os LLMs tem de se comunicar por linguagem natural, i.e., a linguagem falada corrente do dia a dia, menor se torna a barreira de entrada para que qualquer um possa utilizar a programação para resolver seus próprios problemas.
O processo de engenharia de software consiste, em última instância, em abstrair um problema da vida real e desenvolver uma solução para resolvê-lo (no caso, utilizando software, mas você pode substituir para qualquer tipo de engenharia). Note que em nenhum momento o modo ou a ferramenta pelo qual você desenvolve o software está em questão. Seja em C, Lua, Java ou Python, aprenda-se por aulas, livros ou bootcamps, o importante é a capacidade de abstração associada à resolução de problemas.
Portanto, além do nome divertido, vibe coding é uma espécie de popularização da programação, mas não de forma top-down e arbitrária como muitas vezes se promete; mas sim da forma correta, provendo a um maior número de pessoas ferramentas que lhe capacitem a resolver seus próprios problemas.
Agora, é importante fazer uma distinção: vibe coding não é a mesma coisa que AI-assisted programming, como diria Willison. De fato, antes mesmo do termo vibe coding ser cunhado, desde o breakthrough que foi o lançamento do GPT-3, programadores tem utilizado AIs como assistentes.
Qual seria, então, os motivos pelos quais vibe coding tem causado tanta controvérsia?
Em primeiro lugar, existe um certo corporativismo daqueles que se julgam ameaçados pelas IAs, algo similar ao que tem acontecido com os artistas pós-Ghiblificação (falei sobre isso em O artista na era das máquinas). Embora acredite que estamos longe de nos tornarmos obsoletos (se é que um dia seremos), essa animosidade não é totalmente injustificada. Já existem pessoas do alto-escalação de São Francisco propagando uma espécie de Armageddon dos programadores (como o CEO da Anthropic dizendo que estamos a menos de 6 meses das IAs escreverem 90% do código ou o CEO do Shopify condicionando novas contratações à prova de que um IA é incapaz de realizar o trabalho).
Portanto, muitos se apressam em desprezar esse "modo" de programar alegando que ser mais propenso a erros, falhas de segurança, problema de escalabilidade, etc. E eles estão certos. De fato, Willison alerta que todos aqueles que desejam trabalhar profissionalmente com programação precisam ser responsáveis pelos seus códigos. Então, delegar toda a escrita do código sem entender o que está acontecendo pode custar o seu emprego.
Em segundo lugar, estamos na internet, a terra da espetacularização e onde todos querem vender tudo. Sendo assim, começaram a pipocar relatos de pessoas sem background técnico criando produtos e fazendo rios de dinheiro. Obviamente, tais relatos devem ser observados com ceticismo – mesmo que sejam verdade, qualquer programador experiente sabe que existe um abismo de diferença entre um protótipo e um produto que está disponível no mercado e precisa aderir a expectativas de escalabilidade, segurança, extensibilidade, robustez, etc.
Sendo assim, o problema não está no vibe coding, mas sim na atitude pessoal de cada um para com o código gerado. Existem contextos onde esse modo se aplica perfeitamente: por exemplo, recentemente criei um projeto chamado MMA Trends inteiramente do zero usando esse workflow. Serviu de aprendizado mas também como uma forma de tornar real uma ideia que vivia na minha cabeça.
De modo geral, experimentos, prototipações, throwaway weekend projects (como chamou o Karpathy) são grandes casos de uso. Para projetos mais "sérios", dê preferência para features de baixo risco (pequenas mudanças no frontend, ou funcionalidades cuja interface com o banco de dados é nula ou mínima). Em um vídeo recente no YouTube eu mostrei como combinei Claude Code e o Superwhisper para redesenhar o blog do QuantBrasil. Note que aqui o risco era mínimo e nenhuma mudança comprometeria a segurança ou a performance do app.
Mas você pode se perguntar: "por que se dar o trabalho de programar dessa forma se existe a possibilidade de introduzir problemas no meu código?". O questionamento é válido; de fato, se você está satisfeito usando a IA como assistente, continue. Você continuará produtivo e manterá o controle sobre o código.
A resposta sincera que posso dar é que vibe coding é divertido. É uma tarefa de baixo esforço cognitivo, o combustível mais precioso de qualquer profissional cuja função principal seja intelectual. Permite que você explore novas soluções e tecnologias que antes teria evitado.
Por exemplo, existe uma barreira mental em aprender uma linguagem nova, como Rust. Mas você pode criar uma ferramenta usando Rust, ignorando a especificidade da linguagem mas valendo-se de suas características. Lembra quando disse que engenheiros de software precisam ser capazes de abstrair um problema e buscar a solução na realidade? Se a solução passa por uma linguagem fortemente tipada capaz de suportar altos níveis de concorrência, como é o Rust, você agora pode pô-la em prática ainda que não saiba manusear a ferramenta com maestria.
Portanto, pode ser que vibe coding não seja para você. Se o seu desejo é de se profissionalizar na área, é possível que seja prudente deixá-lo para mais tarde. Mas não achemos que é um processo mau em si – existem usos justificados e válidos para essa prática. Tratemos adultos como adultos; aprendamos a usar as melhores ferramentas a nossa disposição sem amor nem apego por elas – tudo isso é transitório. O que fica é o ímpeto que precisa viver e ser fomentado dentro de cada programador: a vontade irresistível de resolver problemas com a tecnologia.