Na pressa de adotar assistentes de codificação como o Amazon CodeWhisperer para gerar novo código para desenvolvedores, não perdemos muito tempo perguntando se esse código é bom. Por algumas medidas, A resposta é claramente não.” De acordo com uma análise do GitClear, “o código gerado durante 2023… se assemelha ao de um contribuidor itinerante”, provavelmente causado pelo aumento do uso de assistentes de codificação.

Isso não quer dizer que os assistentes de codificação sejam ruins. Eles podem ser extremamente úteis. A questão é que agora precisamos investir mais tempo para descobrir maneiras de aplicar IA generativa a tarefas como refatoração de código, conforme abordado em uma entrevista recente da Thoughtworks. As boas notícias? A IA pode ajudar, mas talvez nem sempre da forma que esperamos.

O tipo errado de corrida

Grande parte do foco nos assistentes de codificação tem sido em como eles melhoram o rendimento para os desenvolvedores. Infelizmente, esta raramente é a métrica correta. Afinal, os desenvolvedores gastam relativamente pouco tempo escrevendo novo código. Como Adam Tornhill, fundador e CTO da CodeScene, disse na entrevista à Thoughtworks, até 70% do tempo de um desenvolvedor é gasto na compreensão de um sistema existente, em vez de adicionar código a ele (o que pode representar 5% do seu tempo). A velocidade de desenvolvimento não apenas é uma métrica errada, mas também distrai os desenvolvedores de se afastarem de seu código para fazerem menos e melhores apostas sobre qual código escrever em primeiro lugar, como observei.

O que importa mais do que a velocidade de desenvolvimento? Legibilidade, por exemplo. Como Martin Fowler, cientista-chefe da Thoughtworks, enfatiza na mesma entrevista: “A legibilidade de uma base de código é fundamental para poder fazer alterações rapidamente porque você precisa ser capaz de entender o código para alterá-lo de forma eficaz”. Os assistentes de codificação, embora úteis para aumentar a velocidade de desenvolvimento, podem ser muito mais úteis para explicar o código ou reescrevê-lo em uma linguagem de programação mais familiar, dando assim uma nova abordagem à “legibilidade”.

Outra coisa que importa é a refatoração, que reduz a complexidade e melhora a legibilidade do código, fazendo pequenas alterações no código sem impactar seu comportamento externo. Aqui, infelizmente, a IA tem sido menos útil, como detalha Tornhill. A empresa de Tornhill, CodeScene, usou grandes modelos de linguagem (LLMs) da OpenAI, Google, Meta e outros para refatorar o código, mas descobriu que 30% das vezes a IA não conseguia melhorar o código. Pior ainda, em dois terços das vezes, a IA realmente quebrou os textos das unidades, uma indicação de que, em vez de refatorar o código, ela estava mudando o comportamento externo do código de maneira sutil, mas crítica (“coisas realmente estranhas como mover um 'isto' referência a uma função extraída, o que alteraria seu significado, (ou removeria) ramificações inteiras”, etc.). A IA de melhor desempenho para CodeScene refatorou corretamente o código em apenas 37% das vezes. No resto do tempo, a IA errou na refatoração ou simplesmente não melhorou o código.

Essa não é uma taxa de acerto em que os desenvolvedores possam confiar.

“A IA agora torna muito fácil escrever muitos códigos que nem deveriam ser escritos”, observa Tornhill. Não podemos realmente confiar na IA para escrever código para nós ou para melhorar o código existente (especialmente código legado com funções que executam centenas de linhas de código: “Você coloca isso em um grande modelo de linguagem e ele irá quebrar, garantido, ”declara Tornhill). Em vez disso, precisamos procurar outras maneiras de colocar a IA em uso.

As pessoas são mais importantes do que nunca

A chave é alinhar os desenvolvedores com a IA, em vez de tentar substituí-los pela IA. “Quanto mais rápido conseguirmos gerar um novo código, mais difícil será para a equipe entendê-lo”, observa Tornhill. Ao longo da entrevista, esse tema continuou surgindo; nomeadamente, a necessidade de manter os desenvolvedores inteligentes envolvidos no processo de avaliação e ajuste da IA. Por mais que os desenvolvedores se preocupem com a possibilidade de suas criações robóticas assumirem o controle, isso não acontecerá tão cedo.

Na verdade, em muitos aspectos, as pessoas são mais importantes do que nunca, dada a crescente utilização da IA. Embora você possa ficar tentado a deixar a IA fazer o desenvolvimento por você, a realidade é que isso não é possível. Desenvolvedores fortes, aliados a ajudas tradicionais, como ferramentas linter, revisões de código (para manter a familiaridade com o código), etc., são essenciais para o uso eficaz da IA.

Dada a propensão das ferramentas de IA para acelerar o código, o que mais precisamos é desacelerar um pouco as coisas. Agora é um ótimo momento para descobrir onde a IA pode ajudar a melhorar processos distintos no desenvolvimento de código, sob a orientação de desenvolvedores experientes.