Medindo a desleixo do código

A alegação de que a IA já “resolveu” a programação entra em choque com a preocupação crescente de que modelos de linguagem geram grandes quantidades de código de baixa qualidade e difícil manutenção. Comentadores exploram tentativas de quantificar esse “desleixo” usando métricas como linhas de código, complexidade ciclomática, regras de verbosidade e benchmarks de múltiplas etapas que mostram agentes acumulando dívida técnica ao longo das iterações. Muitos argumentam que, embora os modelos frequentemente consigam produzir trechos corretos rapidamente, a verdadeira qualidade de código — manutenibilidade, arquitetura, segurança e compreensibilidade humana ou por agentes em escala — continua sem solução e é difícil de medir sem cair na lei de Goodhart.

SlopCodeBench e o acúmulo de “slop”

  • O benchmark inverte o padrão usual: várias tarefas iterativas com o contexto apagado entre as rodadas, imitando o uso real por agentes.
  • Más decisões de design no início se acumulam; sob critérios estritos (todos os checkpoints passam), até os melhores modelos supostamente alcançam 0% de resolução.
  • Métricas simples usadas: crescimento de LOC, complexidade ciclomática e “regras de verbosidade” heurísticas para detectar código excessivamente longo ou redundante.
  • Muitos comentaristas apreciam finalmente ter uma forma quantitativa de lidar com um fenômeno que veem na prática.

O que é qualidade de código, afinal?

  • Vários argumentam que correção é apenas uma linha de base; qualidade também inclui eficiência, segurança, manutenibilidade, legibilidade, observabilidade, portabilidade etc.
  • Outros observam que grande parte do código empresarial produzido por humanos historicamente teve baixa qualidade; o slop da IA é visto como “mais do mesmo, só que mais rápido”.
  • Alguns afirmam que a qualidade de código é fundamentalmente difícil ou intratável de medir (comparada ao problema da parada) e inerentemente baseada em vibe.

LLMs são bons programadores? Experiências conflitantes

  • Lado entusiasta:
    • Para muitas tarefas, diz-se que a saída de LLMs é melhor do que a de um dev mediano ou júnior, especialmente com um humano competente guiando.
    • Pessoas relatam maior produtividade com qualidade aceitável, especialmente em linguagens de alto nível e em trabalho greenfield.
  • Lado cético:
    • Agentes produzem código demais, duplicam lógica, evitam apagar código morto e quebram a arquitetura existente.
    • Frequentemente falham em mudanças não locais, sistemas complexos e bugs sutis, ou exigem muita microgestão.
    • Alguns dizem que bases de código escritas por LLMs “speedrunam” a si mesmas até estados impossíveis de manter.

Design global, manutenibilidade e modelos mentais

  • Comentadores enfatizam que os problemas mais difíceis são globais: separação de responsabilidades, camadas, interfaces e evolução de longo prazo.
  • Programar é descrito como uma forma de humanos construírem modelos mentais compartilhados; se agentes fizerem toda a programação, os humanos podem perder entendimento e controle.
  • Outros argumentam que futuras ferramentas podem fornecer “views” sobre bases de código enormes, reduzindo a necessidade de modelos globais mantidos por humanos.

Métricas, lei de Goodhart e ideias de avaliação

  • A mudança em LOC é amplamente vista como uma métrica de mau cheiro surpreendentemente eficaz, mas vulnerável à otimização e ao “code golfing” patológico.
  • Sugestões: combinar LOC/tokens com complexidade ciclomática, churn, acoplamento, coesão, profundidade de indentação, padrões AST e custo de tokens para “grokar” o código.
  • Alguns propõem:
    • “Número de rodadas resolvidas corretamente” iterativo como métrica central.
    • Usar um modelo base separado para julgar se o código de outro modelo é utilizável.
    • Benchmarks de domínio/arquitetura (por exemplo, aplicativos de “contador” progressivamente mais complexos) que meçam qualidade de design, e não apenas aprovação em testes.

Impacto na indústria e questões em aberto

  • Muitos distinguem “programar” de “engenharia de software”; veem o primeiro se aproximando da automação mais rapidamente do que o segundo.
  • Há debate sobre se os modelos atuais já superam “a maioria” dos desenvolvedores ou ainda são muito piores do que profissionais competentes.
  • Custo e limites de tokens são restrições práticas; alguns relatam ter recuado de configurações agressivas com agentes por causa de custo e slop.
  • Sentimento geral: medir o desleixo é valioso, mas definir e otimizar a verdadeira qualidade de código continua sem solução.