7 pontos por GN⁺ 2024-11-15 | 4 comentários | Compartilhar no WhatsApp
  • 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

 
savvykang 2024-11-21

Parece que o inchaço do software é um destino inevitável

 
koreaisbest 2024-11-21

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.

 
kallare 2024-11-18

não tem como escapar do garbage in, garbage out, né

 
GN⁺ 2024-11-15
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