Percepção de Produtividade com Ferramentas de IA
Me siga no X | Me siga no LinkedIn | Apoie a Newsletter | Solicite uma consultoria
Não é segredo que ferramentas que fornecem recomendações automática de código têm o potencial de aumentar a produtividade dos desenvolvedores.
No atual cenário do desenvolvimento de software, a percepção atual é que essas ferramentas podem ajudar os desenvolvedores. Reduzir o tempo de codificação ou até as taxas de erro, são frequentemente mencionadas por essas ferramentas, que pode impactar diretamente tanto a eficiência quanto a qualidade da produção de desenvolvedores de software.
Mas como esses benefícios são percebidos e/ou avaliados?
Em uma pesquisa conduzida pelo time do GitHub, o objetivo era avaliar o impacto do GitHub Copilot na produtividade dos desenvolvedores. Este artigo analisa as interações dos desenvolvedores com a ferramenta, focando em métricas como a taxa de aceitação de sugestões e sua persistência.
Nesse texto de blog, fornecemos um pequeno resumo deste artigo.
Recomendação de código
Recomendação de código, especialmente no contexto da síntese de código neural (neural code synthesis), envolve o uso de um modelo de linguagem para prever e sugerir segmentos de código que um usuário provavelmente digitará em seguida, com base no contexto atual de seu trabalho.
Ao contrário dos métodos tradicionais que podem sugerir pequenos conjuntos de tokens, a síntese de código neural pode prever seções de código mais complexas e extensas, potencialmente abrangendo várias linhas.
De fato, técnicas de síntese neural utilizadas para recomendação de código constitui uma das pedras fundamentais das ferramentas baseadas em IA, como GitHub Copilot, Kite e TabNine. Essas ferramentas utilizam redes neurais sofisticadas para geração de código, fornecendo sugestões de código mais sensíveis ao contexto do que as abordagens baseadas em regras anteriores.
Quando integradas em uma IDE, tais ferramentas podem potencialmente aumentar a produtividade do usuário ao oferecer sugestões de trechos de código.
Essa evolução marca um avanço significativo na assistência automatizada de codificação, tendendo a melhorar a eficiência das ferramentas de desenvolvimento de software.
Produtividade percebida
Medir a produtividade do desenvolvedor no processo de desenvolvimento não é uma tarefa fácil, já que engloba várias dimensões. Kent Beck e Gergely Orzosz já escreveram em detalhes as espinhas dessa atividade.
Pesquisas recentes indicam que, embora as ferramentas de recomendação de código possam aumentar a produtividade e o fluxo de trabalho dos desenvolvedores, métricas tradicionais (como o tempo para conclusão de uma tarefa) não são capazes de capturar totalmente esses benefícios.
Isso acontece porque, enquanto tais ferramentas fornecem pontos de partida úteis e podem reduzir, por exemplo, a necessidade de pesquisas online, os participantes do estudo relataram diversos desafios, como no entendimento, edição e depuração dos trechos de código gerados. Essas dificuldades, por sua vez, podem afetar a eficácia de pessoas desenvolvedoras na resolução de tarefas de código.
Todavia, o estudo reforça que é difícil medir objetivamente a produtividade no desenvolvimento de software, e deve-se também considerar dados auto-reportados pelos usuários, que são subjetivos. Neste contexto, o foco passa a ser a produtividade percebida.
O artigo revisado correlaciona dados de interações do desenvolvedor com o GitHub Copilot com suas percepções auto-reportadas, como tentativa de prever os níveis de produtividade.
Métricas Coletadas
O estudo coletou várias métricas diretamente da IDE dos desenvolvedores, incluindo “oportunidade”, que é quando a IDE sugere que uma recomendação pode ser apropriada; “exibido”, que se refere a recomendações exibidas aos desenvolvedores; “aceito”, recomendações que são incluídas no arquivo fonte; “principalmente_inalterado_X”, recomendações com mudanças mínimas após um certo tempo; e “(ativo) hora’, que é a quantidade de horas de uso ativo da IDE com o plugin.
Além disso, segundo os pesquisadores, a taxa de aceitação (e, portanto, a recomendação) pode não capturar totalmente a utilidade dessas ferramentas. Por exemplo, uma pesquisa sobre ferramentas baseadas por IA descobriu que desenvolvedores às vezes valorizam até mesmo sugestões que são errôneas.
Assim, a abordagem do artigo para medir a produtividade vai além da mera contagem de atividades, considerando a complexidade do desenvolvimento de software. Os autores usaram o framework SPACE para combinar dados de produtividade auto-relatados com telemetria de uso, oferecendo uma visão mais abrangente da produtividade do desenvolvedor. Utilizando este framework, o artigo enviaram um questionário para 2.047 desenvolvedores que usam a ferramenta.
Taxa de Aceitação como um Proxy de Produtividade
O estudo investigou a conexão entre o comportamento quantificável do usuário (pela IDE) e as percepções de produtividade auto-relatadas (pelo questionário), usando métricas de uso principais.
O artigo aplicou vários métodos estatísticos para entender o poder preditivo dessas métricas sobre a produtividade percebida. A métrica taxa de aceitação emergiu como o preditor mais forte, embora com alguma variância inexplicada, sugerindo que existem outros fatores em jogo.
O estudo também observou que o desempenho do GitHub Copilot varia entre as linguagens de programação, sendo TypeScript, JavaScript e Python as mais usadas entre a base de usuários analisados. JavaScript e Python apresentaram taxas de aceitação mais altas, sugerindo que estas ferramentas podem ser mais eficazes com linguagens fracamente tipadas. Usuários pesquisados mostraram uma taxa de aceitação marginalmente mais alta em comparação com a base de usuários mais ampla, independentemente da linguagem usada.
Além disso, métricas de persistência mostraram que períodos mais curtos se correlacionam melhor com a produtividade percebida, indicando que a imediatidade da aceitação é significativa. No entanto, essas medidas foram menos correlacionadas do que a taxa de aceitação, indicando uma relação complexa com a percepção de produtividade.
Produtividade Percebida != Produtividade Real
A produtividade percebida do ponto de vista do usuário pode não ser equivalente a ganhos reais de produtividade, como a redução no tempo de conclusão de tarefas.
Maximizar a taxa de aceitação de código recomendado pode agradar um desenvolvedor sem necessariamente acelerar seu trabalho. Apesar do feedback positivo dos desenvolvedores, estudos mostraram que ferramentas como o GitHub Copilot nem sempre reduzem os tempos de conclusão de tarefas.
Além disso, enquanto estudos controlados podem não refletir o processo de codificação no mundo real, estudos como o referenciado tendem a capturar a atividade genuína do desenvolvedor.
Concluindo
Ferramentas automatizadas de conclusão de código, como o GitHub Copilot, estão posicionadas para aumentar a produtividade do desenvolvedor. Embora mostrem promessa na redução do tempo de codificação e dos erros, seu impacto real na produtividade precisa ser melhor estudado.
A pesquisas revisada mostrou que a taxa de aceitação de sugestões de código, embora seja uma métrica chave, pode não capturar o cenário completo, uma vez que desenvolvedores podem valorizar as sugestões por motivos além dos ganhos de produtividade objetivos.
Isso destaca a complexidade de medir a produtividade no desenvolvimento de software, que não pode ser totalmente compreendida apenas por métricas quantitativas, mas requer também a consideração das experiências subjetivas dos desenvolvedores.