IA Não Tem Sabedoria, Nem Você Terá
No último mês, tenho ouvido frases que me fazem questionar o rumo da nossa indústria: "Não escrevo código desde 2025", "Revisões de código estão mortas", "As pessoas não leem mais código". Sem dúvida, a indústria está se transformando, mas as organizações e indivíduos que caem na armadilha de não ler e escrever código estão se colocando em uma posição perigosa.
A verdade é que projetos construídos no "feeling" – ou, como o autor original coloca, "vibe-coded" – inevitavelmente se transformam em uma bagunça impossível de manter. A razão é simples, mas difícil de resolver: a manutenibilidade do código e uma boa arquitetura não possuem métricas que possamos aplicar imediatamente. Leva meses, até anos, para que os efeitos de uma arquitetura ruim ou de um código impossível de manter se tornem evidentes.
A Armadilha da "Sabedoria" Instantânea
Podemos, com certeza, definir o que é um código ruim: aquele que é difícil de ler, difícil de entender, difícil de evoluir para o que quer que o futuro nos reserve. É o tipo de código em que mudar uma coisa quebra o programa de maneiras não determinísticas, ou quebra a lógica em algum outro lugar, distante da sua mudança, lembrando o "efeito borboleta". É o código onde adicionar uma funcionalidade significa um esforço sério devido à necessidade de alterar o código em vários lugares e ainda esquecer de corrigir tudo, levando a inconsistências. É o código onde os invariantes do design não são claros, com seus autores originais não estando mais por perto para proteger contra violações e garantir alguma coerência. E é o código que é difícil de testar, exigindo mocks e expondo detalhes de implementação, levando a testes frágeis que acabam impedindo refatorações significativas.
E, no entanto, sabemos que perceber um código ruim leva tempo. Meses, anos. Claro, engenheiros de software experientes têm um "faro" que pode detectar code smells (sinais de alerta no código) e agir muito antes que os efeitos negativos possam ser observados. Desenvolvedores proficientes, os especialistas, contam com sua intuição construída com suor e lágrimas, trabalhando longas horas tentando depurar e corrigir problemas em produção, jurando nunca mais cometer os mesmos erros. É o tipo de intuição que não pode ser transformada em uma lista de regras rígidas, porque tudo é dependente do contexto. Especialistas são incompatíveis com as mesmas regras e "receitas" que tornam os iniciantes mais produtivos. Especialistas não seguem as regras, eles as criam.
Onde a IA Falha e por Quê
E é aqui que temos um problema com a inteligência artificial. Por um lado, a IA não é treinada no que significa para um código ser manutenível. Por exemplo, qualquer aprendizado por reforço (uma técnica de IA onde um agente aprende a tomar decisões) precisa de um sinal de recompensa que possa ser medido imediatamente, não em meses ou anos. A IA aprende regras de manuais destinados a iniciantes. A IA percebe padrões de código "na natureza" e, sejamos honestos, a maioria do código "na natureza" é bastante ruim. Não há uma função de aptidão que você possa definir para código manutenível, pelo menos não uma que possamos discernir, caso contrário, já estaria incorporada em nossos linters (ferramentas que analisam o código em busca de erros estilísticos ou programáticos).
Você já notou como a IA é terrível em "simplificar" o código? Sim, mesmo os modelos de última geração (SOTA). Ela não consegue nem definir funções corretamente, optando por dividir funções em funções menores que não são realmente reutilizáveis. Extrair uma função menor de uma função maior é uma escolha muito ruim se, para entender a função maior, você também precisa ler a implementação da função menor extraída. Definir funções reutilizáveis e claras é uma forma de arte, uma arte que exige maestria. A maioria dos desenvolvedores, ainda sendo "iniciantes avançados" no modelo de Dreyfus, não consegue definir funções boas, claras e reutilizáveis, e a IA também não consegue atualmente.
Isso não seria tão ruim se as pessoas ainda estivessem no controle e aprendessem com esses erros. Mas estamos vendo uma tendência de pessoas que dependem da IA para escrever e até mesmo ler código. Essas pessoas nunca alcançarão a maestria, porque não tomam mais decisões, não assumem mais responsabilidade pelos erros na codificação e não aprendem mais com esses erros. É a IA que está cometendo erros agora, a IA não aprende com esses erros, e nem as pessoas que dependem da IA para codificar.
Ferramenta, Não Oráculo: O Caminho para a Responsabilidade
Não me interpretem mal, acho que os LLMs (grandes modelos de linguagem) são uma ótima ferramenta. Não sou um ludista; integrei a IA ao meu trabalho diário, enquanto ensino meus colegas o que aprendi. Uso LLMs com prazer para cuidar de todas as coisas chatas e maçantes com as quais temos que lidar. Também estou aproveitando os benefícios de eficiência que estou vendo. Mas, no final das contas, é apenas uma ferramenta, e como todas as outras revoluções, sua luz também se apagará; na minha opinião, já está se apagando, já que as notícias de tecnologia atualmente são francamente bastante monótonas.
As pessoas são realmente terríveis em fazer previsões. Acredito que o futuro nos surpreenderá a todos. Mas, vou fazer uma previsão própria: no futuro, veremos mais e mais empresas ostentando orgulhosamente sua política de "NO-AI" como uma vantagem competitiva. E elas estarão certas.
"Mas as linhas de montagem automatizadas são sempre mais eficientes", dizem as pessoas, exceto que a indústria de software é especial, porque sempre fizemos automação em escala; tudo o que fazemos é automação. LLMs não são os únicos meios para isso e, dependendo do contexto, podem ser uma distração. A "codificação não está resolvida" em nenhum sentido significativo. Claro, você pode instruir o LLM a construir um compilador C/C++, ou você pode simplesmente clonar o GCC ou o LLVM, e obteria um compilador C/C++ melhor, e de graça. E talvez haja maneiras melhores de gastar nosso tempo e recursos do que reinventar os mesmos aplicativos CRUD (as necessidades e desejos humanos são infinitos, não há escassez de novos objetivos para trabalhar).
Se as pessoas e as empresas não começarem a ser responsáveis em relação ao seu uso, haverá consequências.
Por Que Isso Importa para Você
Para nós, builders e líderes de tecnologia, a mensagem é clara: a maestria em engenharia de software não pode ser terceirizada para a IA. Ela continua sendo um produto de experiência, intuição e, sim, dos erros que cometemos e com os quais aprendemos. Delegar a responsabilidade de ler, entender e arquitetar código para ferramentas de IA nos priva do aprendizado essencial que constrói a sabedoria. Invista em suas habilidades e nas de sua equipe para construir sistemas robustos e manuteníveis. A IA é um assistente poderoso para tarefas repetitivas, mas a inteligência e a responsabilidade de criar software de qualidade permanecem profundamente humanas.
Fontes
📬 Gostou? Assine a newsletter do Vaccari's Code e receba as próximas tendências em software e IA direto no seu e-mail: Assinar aqui