- Existe a crença de que a dívida técnica (tech debt) se tornará menos importante porque a IA ajuda a escrever e organizar código
- Mas, na prática, a IA está tornando o custo da dívida técnica ainda maior
- Em codebases com baixa dívida, o ganho de velocidade das ferramentas de IA é maximizado, mas em codebases legadas com alta dívida a eficiência das ferramentas de IA cai drasticamente
- Como resultado, codebases com muita dívida técnica estão enfrentando dificuldades ainda maiores para aproveitar ferramentas de IA
IA generativa é vulnerável a código complexo
- Ferramentas de codificação com IA como Cursor e Aider reagem de forma muito sensível à complexidade do código
- Em códigos com padrões existentes ou interfaces bem definidas, o ganho de velocidade é grande, mas elas têm dificuldade para gerar respostas válidas em códigos com fluxos de controle complexos e muitas dependências
- Codebases complexas dificultam não só o trabalho dos modelos de IA, mas também a formulação clara das solicitações pelos desenvolvedores
- Por isso, muitos desenvolvedores tendem a esperar até que as ferramentas de IA consigam lidar com a complexidade de nível de produção
Como aproveitar corretamente as ferramentas de IA
- Em vez de forçar o uso de ferramentas de IA em codebases legadas, é importante que especialistas humanos façam refatoração para permitir que a IA funcione de forma fluida
- Se uma refatoração direta for arriscada, é possível usar métodos como o padrão Strangler Fig para desenvolver novos módulos e, por meio deles, aproveitar imediatamente os benefícios das ferramentas de IA
- Com isso, a equipe de desenvolvimento pode se concentrar em níveis mais altos de abstração e dar mais ênfase ao projeto de arquitetura do que aos detalhes de implementação do código
Uma abordagem amigável à IA
- É importante modularizar o sistema para que as ferramentas de IA possam funcionar corretamente e definir as interações entre módulos por meio de interfaces claras
- Manter uma estrutura de módulos que permita explicar em linguagem natural as funções principais e o fluxo de dados é um critério útil
- Ao usar ferramentas como Gauge Tach para estabelecer visibilidade e regras de arquitetura, é possível evoluir para um sistema modularizado
Qualidade determina velocidade
- Manter uma codebase de alta qualidade se tornou mais importante do que nunca
- Ao investir em uma arquitetura modularizada, a equipe pode extrair o máximo das ferramentas de IA e construir ao mesmo tempo funcionalidades rapidamente e software de alta qualidade
4 comentários
Parece que o inchaço do software é um destino inevitável
Parece que alguns gestores e esse tipo de gente viram alguma coisa por aí e ficaram com a mentalidade de que a IA vai resolver tudo. O ChatGPT acabou alimentando muita fantasia. Acho que ainda precisa enfatizar que isso ainda está no nível de uma criança do ensino fundamental, e que é só uma ferramenta auxiliar que ajuda um pouquinho... E também me identifico com a situação mencionada acima: quando fica complexo, ele entende errado. Parece que não consegue captar o fluxo geral do projeto.
não tem como escapar do
garbage in, garbage out, néOpinião no Hacker News
Empresas com codebases jovens e de alta qualidade obtêm os maiores benefícios das ferramentas de IA generativa. Em contraste, empresas com codebases legadas complexas têm dificuldade para adotá-las. Tive uma experiência parecida ao usar LLMs em projetos pessoais. Quando a codebase fica minimamente única, o modelo comete erros e o trabalho se torna mais difícil
LLMs tornam tarefas fáceis ainda mais fáceis, mas cometem erros em tarefas difíceis. Essa lacuna não está diminuindo; na verdade, está aumentando
Em ambientes de "alta dívida", é difícil gerar respostas úteis por causa de fluxo de controle sutil, dependências de longo prazo e padrões inesperados. Em muitos casos, isso não representa "dívida técnica", mas a maturidade da codebase
Em vez de forçar ferramentas de IA generativa a resolver problemas complexos em codebases legadas, especialistas humanos deveriam refatorar o código legado para que a IA generativa possa funcionar sem atritos
Está surgindo a crença de que a IA tornará a dívida técnica menos importante. No entanto, o código gerado por IA é irregular, inconsistente e muito sensível a prompts específicos e entradas de contexto
Código gerado por IA pode de fato ter valor, mas o enquadramento deste artigo é irrealista
Machine learning é como um cartão de crédito com juros altíssimos da dívida técnica. Quanto mais fácil fica gerar código, mais código é gerado, e o custo de manutenção aumenta
Fico impressionado com a capacidade dos LLMs de gerar código, mas o objetivo é reduzir a quantidade de código
A IA lida com tarefas simples e gera mais código, mas também cria bugs difíceis de encontrar. Essas ferramentas podem permitir avançar mais rápido, mas exigem uma forma diferente de operar
A IA pode ajudar a entender e modificar código, mas copiar e colar cegamente não é uma boa ideia. Revisão de código, pedidos de explicação e iteração ainda são necessários