Engenharia
A IA é a cola pronta
Escrever cada linha era o que fazia o conhecimento grudar. Como continuar entendendo de verdade os sistemas que mantemos na era da IA.
Você já teve a sensação de estar esquecendo o código que anda escrevendo com IA?
Devo confessar que me lembro de bons trechos de código que escrevi há 10 anos. Tenho lembrança da organização dos folders, dos testes, das classes e de tudo mais que organizei em alguns projetos. Mas hoje em dia tenho cada vez mais dificuldade para lembrar de trechos que escrevi dias atrás.
Tenho a percepção de que esse efeito é muito parecido com o de quando a gente colava nas provas (não que eu tenha feito isso). Estudava e escrevia para fazer uma boa cola, e no dia da prova nem precisava dela, porque já tinha entendido boa parte do assunto tentando fazer a cola. O aprendizado estava na artimanha. Entre resumir a matéria inteira, caprichar na letra de formiga e ensaiar a dobradura perfeita do papelzinho, você acabava estudando sem querer. Escrever código linha por linha era isso, a versão honesta da cola. A IA de hoje é a cola pronta, você recebe a resposta sem passar pelo processo que fazia o conhecimento grudar.
Se você está fazendo código de verdade, código que afeta o dia a dia de empresas, código que não pode falhar e que tem que ser resiliente, você deve estar com a mesma preocupação que eu. Como lidar com essa intensidade de informação e ainda assim continuar entendendo de verdade os sistemas que mantemos?
Venho aplicando e estudando meios para manter minha sanidade em meio a essa época que estamos vivendo. É isso que quero compartilhar aqui.
Quanto mais você entende, menos na vibe você está
Quando falamos de vibe coding, entendo que estamos falando de um espectro. Quanto mais você entende do código, menos na vibe você está.
Isso não é de todo mal, dependendo do problema que você está resolvendo. Mas meu ponto é outro. Quanto mais no modo automático você cria, menos entendimento profundo você precisa ter. Talvez nem do entendimento básico você vai precisar, se o seu prompt for só “crie um app para mim”.
Essa automatização gera velocidade, mas gera falta de conhecimento também. E é aqui que eu queria chegar. A quantidade de código que conseguimos produzir ficou totalmente desproporcional à quantidade que conseguimos assimilar. Quanto mais código, menos você entende dele.
E isso não é só impressão minha. Um levantamento que analisou 211 milhões de linhas de código alteradas mostrou que, desde a chegada dos assistentes de IA, o volume de código novo explodiu enquanto o refactoring despencou. Faz sentido. Refatorar exige entender o repositório, aceitar código gerado exige só apertar o enter.
O Kent Beck, criador do TDD e do Extreme Programming, vem descrevendo esse fenômeno na própria rotina com agentes. Quando a IA acelera o desenvolvimento além do ritmo do code review, o gargalo deixa de ser pegar bugs e passa a ser manter a integridade estrutural do sistema. Em outras palavras, o gargalo deixou de ser escrever código. O gargalo agora somos nós, tentando acompanhar.
Código de verdade
No dia a dia de um dev, vibe coding é mais exceção do que regra. Novamente, nada contra, mas nada a favor também. Ele tem o lugar dele, que é todo código sem compromisso com o amanhã. O problema é que código tem a mania de sobreviver ao próprio criador. E código que sobrevive sem que ninguém entenda já tem nome, e é um nome que ninguém gosta de ouvir. Legacy code. Vibe coding em produção é fabricar legacy code na velocidade do modelo.
Você precisa se importar com o que está construindo. Precisa entender o que está entrando na sua base de código, precisa entender o que a IA gerou, precisa entender se encaixa no estilo da sua base de código. A maioria de quem já está no mercado tem bases de código que não são greenfield. São bases que já existem há anos e que agora precisam coexistir com o jeito IA de codar. Não que refatoração e modernização não sejam bem-vindas. Mas, feitas de forma errada, geram outro gap de conhecimento no time.
Falo isso porque se você deixar passar as complexidades do seu projeto sem prestar atenção, isso vai te fazer não aprender. E não aprender significa que a retenção fica muito menor. Você não consegue mais acompanhar a estrutura, não consegue mais raciocinar sobre as decisões que a IA está tomando (ela vai errar, e muitas vezes), não consegue mais debugar quando der problema (sim, vai ter bugs ainda), não consegue mais evoluir algo que não foi você que fez.
Esse problema, aliás, não nasceu com a IA. Em 1985, muito antes de existir LLM, um ensaio clássico já argumentava que um programa é, na prática, a teoria que se forma na cabeça de quem o constrói. A teoria não está no código nem na documentação, está na cabeça das pessoas. Quando o time que entende o sistema vai embora, o programa morre, mesmo que continue rodando. A novidade da nossa época é que agora dá para produzir código sem formar teoria nenhuma.
Se a gente for honesto, escrever código sempre foi a parte fácil do trabalho. O difícil é entender, operar e evoluir esse código pelos anos de vida que ele vai ter. A IA resolveu a parte fácil. A difícil continua sendo toda nossa.
O caminho que venho seguindo
Utilizar IA de forma assistida me parece um caminho muito mais benéfico para manter um projeto. Você não deixa a IA seguir sozinha, você guia ela. Não é o mesmo que escrever código pensando em cada linha, mas é muito melhor do que não ver código algum durante o processo. E isso não quer dizer que você não possa usar o modo automático. Use e abuse para tarefas tediosas.
O valor vem quando você consegue acompanhar o output e ter consciência de aspectos que não são evidentes na hora da codificação. Saber considerar os -ilities do projeto (escalabilidade, resiliência, manutenibilidade e a família toda). Saber quando e como fazer tradeoffs. Saber dizer não para uma solução overengineered. Saber quando seguir com uma solução pontual. Nada disso vem de memorização. Vem de consciência sobre o projeto.
Existe uma observação famosa de que a IA te entrega rápido uns 70% do caminho. O problema é que os 30% que sobram são justamente os edge cases, a integração com o que já existe, a segurança, o debug. A parte que só sai com entendimento do sistema. Se você não acompanhou os 70%, os 30% viram uma parede.
Menos assimilação a gente vai ter, isso parece inevitável no volume que estamos produzindo. Mas isso não quer dizer que você precise produzir código que não entende. Como regra de ouro, pense que todo código que você entrega você precisa saber explicar. Se não consegue explicar, não era pra ter feito commit.
E use as sessões de programação assistida para aprender também. A IA o tempo todo gera padrões ou traz soluções que você não necessariamente conhece. Use esse momento para se aprofundar, aqui mora um ganho fantástico. Não deixe a sessão só rolar, use ela para o seu benefício.
Fazendo a minha cola
Não existe resposta pronta para o momento que estamos vivendo. As ferramentas mudam a cada mês, os modelos melhoram, e o que hoje é boa prática pode ser irrelevante no ano que vem. O caminho está aberto, e cada dev e cada time vai encontrar o próprio equilíbrio entre velocidade e entendimento.
O que me parece cada vez mais claro é que a nossa capacidade de assimilar virou o recurso escasso. Código, a IA produz de sobra.
Aqui na Barte a gente vem construindo isso na prática. O paved road que já contamos por aqui é parte da resposta. Os mesmos guardrails que aceleram o time, os testes, o review, um caminho padrão pra subir código, são o que deixa seguro colocar a IA pra trabalhar sem a gente perder de vista o que está entrando na base. A IA anda rápido, mas ela anda dentro da estrada.
Daqui a dez anos, não sei se vou lembrar dos trechos de código que estou escrevendo hoje. Mas quero continuar entendendo de verdade os sistemas que mantenho. Por via das dúvidas, sigo fazendo a minha cola.