Olá a todos,
Se são como eu e gostam de ler artigos no Linkedin, tem reparado que nos últimos anos, com o avanço das ferramentas de inteligência artificial (IA) para desenvolvimento de software, um fenômeno chamado “vibe coding” tem ganhado popularidade. O termo, cunhado por Andrej Karpathy, refere-se à prática de programar de maneira informal e exploratória, confiando fortemente em IA para gerar código sem planeamento rigoroso.
No entanto, esta abordagem pode e trás sérios problemas para empresas e equipes de desenvolvimento. Neste artigo, irei dar a minha opinião sobre os riscos do “vibe coding” e como ele pode impactar gravemente uma organização.
O Que é “Vibe Coding”?
“Vibe coding” é um termo usado para descrever uma abordagem de programação onde os developers geram código rapidamente – move fast, break stuff – sem um planeamento sólido, utilizando principalmente em ferramentas de IA para preencher lacunas técnicas. Em vez de escrever código com base em um design ou arquitetura previamente definida, os programadores baseiam-se em tentativa e erro, ajustes iterativos e comandos descritivos fornecidos à IA á lá carte.
Embora essa prática possa parecer eficiente em um primeiro momento, permitindo a geração rápida de funcionalidades, ela irá resultar em código mal estruturado, dívida técnica e problemas graves de segurança.
Riscos do “Vibe Coding” para Organizações
Para mim, uma das principais ameaças do “vibe coding” é a superfície limitada de entendimento sobre o código gerado e promovido. Quando os developers confiam excessivamente em modelos de IA para escrever código, o risco significativo deles não compreenderem completamente sua lógica e funcionamento. Não compreender o código que temos a frente dos nossos olhos, leva-nos a cenários como estes:
- Incapacidade de identificar e corrigir bugs.
- Incapacidade de implementar melhorias futuras.
- Incapacidade para garantir a segurança e a conformidade do software.
As soluções criadas desta forma tornam-se em “caixas-pretas”, dificultando a manutenção, suporte e correção.
Aumento da Dívida Técnica
O código gerado sem um planeamento estruturado e fio condutor, tende a ser desorganizado e ineficiente. Isto por sua vez, leva ao acumular de dívida técnica, tornando futuras melhorias e correções extremamente difíceis.
A longo prazo, a falta de padronização e documentação adequada é o suficiente para tornar um projeto insustentável.
Vulnerabilidades de Segurança
A segurança é um aspecto crítico em qualquer projeto de software. Seja localmente no nosso homelab, numa empresa com 3 empregados, ou numa empresa com 30 mil.
Quando código é gerado automaticamente sem uma revisão detalhada, vulnerabilidades vão passar despercebidas, traduzindo-se em exposição de dados sensíveis, brechas de segurança exploitaveis por atacantes e sobretudo violações de conformidade regulatória.
Sem um olhar humano atento para rever, auditar e validar a segurança do código, estas ameaças se tornam ainda mais graves, podendo causar problemas como os visto recentemente em Portugal.
Dependência Excessiva de IA
Sim. Isto é um problema que já se começou a notar. A IA é uma ferramenta poderosa para assistência no desenvolvimento, mas confiar cegamente nela vai ter consequências negativas. A primeira lei de newton diz-nos que “um objeto permanecerá em repouso ou em movimento uniforme em linha reta a menos que tenha seu estado alterado pela ação de uma força externa”. O mesmo se pode aplicar ao cérebro humano quando só pensa através de AI.
Um dos riscos é a perda da capacidade analítica dos developers, que passam a aceitar o código gerado sem questionar sua eficácia ou segurança. Isto levará a soluções mal otimizadas ou inadequadas para as necessidades específicas da empresa, para não falar da ideia absurda que IA pode substituir equipas de developers que alguns CEOs estão a experimentar implementar.
Dificuldade na Escalabilidade
Creio que depois de ler o ponto acima, conseguem entender que projetos que utilizam “vibe coding” frequentemente carecem de documentação adequada e boas práticas de engenharia de software. Isto se torna um problema crítico quando a empresa precisa escalar sua solução, pois novos developers têm dificuldade em compreender e modificar o código existente sem causar um conjunto totalmente novo de novos problemas. Acham que estou a exagerar? Vejam o que aconteceu com o paralelismo da tentativa do fim do cobol. Vai morrer já para o ano que vem, assim que eles conseguirem portar tudo… o que? Não se consegue? Oh…
Mas nesse caso como posso mitigar os riscos do “Vibe Coding” na minha empresa?
O caminho para a integração consciente da IA no desenvolvimento, ou na cadeia de software factory é extremamente simples: A IA deve ser usada como uma ferramenta auxiliar, não como substituta do conhecimento humano.
Algumas das best practices para garantir um uso adequado incluem (mas não exclusivamente):
- Sempre rever manualmente o código gerado.
- Utilizar IA apenas para tarefas específicas, como automação de testes e refatoração.
- Treinar os developers para questionar e otimizar as soluções propostas pela IA.
- Fomentar pensamento critico: Será que esta é a melhor forma de fazer mesmo o processo? Poderá dar problemas no futuro quando alguém o tentar escalar?
- Garantir que no processo de entrega de releases e versões de código novas, é dado tempo suficiente aos developers para implementar o que foi pedido, sem a obrigatoriedade de cortar cantos para respeitar prazos.
Ainda, para garantir a implementação de padrões de código para evitar código desorganizado e de baixa qualidade, é essencial estabelecer padrões de codificação e boas práticas, como:
- Uso de convenções de nomenclatura padronizadas.
- Documentação obrigatória para cada novo módulo criado.
- Revisão de código entre pares antes da implementação.
- Testes exaustivos ao código gerado em AI. Não tanto para ver se funciona, para quem esteja a testar, compreenda o que está e como está a ser feito.
Garantir que o código gerado seja funcional e seguro exige um processo de testes rigoroso. Algumas estratégias que recomendo são:
- Escrita de testes unitários para cada funcionalidade.
- Testes automatizados para detectar vulnerabilidades de segurança.
- Monitoramento contínuo de desempenho e erros em produção.
E finalmente, e de importância suprema, as empresas devem investir em formações para que os seus developers melhorem as suas habilidades de análise de código e segurança. Isto evitará que se tornem excessivamente dependentes de IA e fortalece a capacidade da equipe de desenvolver soluções robustas e escaláveis. Falo por experiencia quando digo que um colega com 60 anos de idade, consegue escrever código de forma mais elegante, eficiente, e que executa mais rapidamente que qualquer IA que eu já tenha encontrado.
Chegamos ao fim do post desta semana, desta vez em estilo de cautionary tale. O “vibe coding” pareça uma forma rápida e eficiente de desenvolver software, gerir ou implementar comandos automáticos, mas seus riscos superam os benefícios quando aplicado sem controle. Empresas e elementos que adotam esta abordagem sem um plano de mitigação irão eventualmente enfrentar problemas graves, incluindo vulnerabilidades de segurança, dívida técnica e dificuldades na escalabilidade. A solução não é rejeitar a IA, mas sim usá-la de forma consciente, mantendo um compromisso com boas práticas de engenharia de software. Ao fazer isso, as nossas organizações podem aproveitar o potencial da IA sem comprometer a segurança e a qualidade de seus sistemas.
E sabem? A vossa carreira ainda vos irá agradecer por pensarem assim.
Até ao post da próxima semana, e já sabem, se não concordarem, quiserem debater o tema ou enriquecer o post, sabem onde me encontrar.
Um abraço,
Nuno
Ps: não acreditam que o perigo é assim tão real?