A produtividade do desenvolvedor é uma grande preocupação para a maioria das organizações. Todas as organizações comerciais e não comerciais estão cada vez mais dependentes de software e do ritmo e eficiência da entrega de recursos de software. A produtividade do desenvolvedor é uma métrica que determina o ritmo em que as inovações de software podem ser entregues, e assim é A produtividade do desenvolvedor é a chave para o sucesso organizacional.

Fatores que afetam a produtividade do desenvolvedor

Existem muitos fatores que afetam a produtividade do desenvolvedor e o impacto de cada um varia dependendo do contexto. Abaixo está um parcial lista de alguns dos principais fatores que afetam a produtividade do desenvolvedor:

  • Tamanho da iniciativa
  • Competência técnica e experiência
  • Habilidades interpessoais
  • Conhecimento de domínio
  • Foco/distrações
  • Ferramentas (incluindo o uso de assistentes de código de IA)
  • Reutilização de código
  • Engajamento da liderança
  • Requisitos claros
  • Clareza de objetivo

O que os desenvolvedores fazem

Os desenvolvedores geralmente trabalham em um ou em uma combinação dos seguintes:

  • Novo iniciativa de software (inovadora ou não).
  • Manutenção e/ou consertar software (incluindo reparo de dívidas técnicas)
  • Removendo/substituindo software

Tamanho e produtividade do projeto

O tamanho do projeto é uma das principais considerações quantificáveis que determinam significativamente a produtividade do desenvolvedor. Por esse motivo, nossos benchmarks são agrupados de acordo com o tamanho do projeto.

Tamanho do projeto e produtividade do desenvolvedor

Vejamos primeiro por que isso acontece.  O trabalho de software bem-sucedido requer comunicação próxima entre usuários, desenvolvedores, testadores e outras partes interessadas. À medida que o tamanho da equipe aumenta, a quantidade de tempo e esforço necessários para se comunicar aumenta a uma taxa proporcional ao quadrado do número de membros da equipe. Considere a matemática do número de linhas de comunicação entre os membros da equipe é N x (N – 1) / 2

Tamanho da equipe e sobrecarga de comunicação, fonte getlighthouse.com

A produtividade do desenvolvedor é afetada pelo tamanho do projeto devido à custo de comunicação.  Felizmente o tamanho do projeto (tamanho funcional) é mensurável de forma padronizada e válida. Por esta razão vemos que o a maior produtividade é alcançada por equipes de 7 pessoas altamente competentes ou menos.

Nossos benchmarks de produtividade para desenvolvedores

Produtividade típica do desenvolvedor

Projetos de <1000 CFP

Baixa Competência

Horas por CFP

Competência Média

Horas por CFP

Alta Competência

Horas por CFP

Implementação de pacote 6 2 1
Código baixo 8 3 2
Linguagem de alto nível (típica) 25 8 4
Domínio altamente regulamentado 80 20 12
Linguagem/firmware de baixo nível 80 20 12
Fonte: ScopeMaster Ltd

Esta tabela se refere ao número de horas de trabalho do desenvolvedor por Pontos de Função COSMIC entregues sem defeito, que observamos. Esses benchmarks são apresentados em horas por CFP. Também é legítimo usar o recíproco de CFP por horas trabalhadas. Também é útil olhar para produtividade da equipe em CFP por sprint de 2 semanas de cada equipe.

Embora esses benchmarks possam ser úteis para comparação com outras organizações, recomendamos que você acumule e desenvolva seus próprios benchmarks internos para produtividade do desenvolvedor e outras dimensões do projeto.  

Velocidade significa apenas ocupação

Velocidade é um termo comumente usado entre entusiastas do Agile que dá alguma indicação da taxa de desenvolvedores fazendo coisas. Seja fechando tickets ou entregando “pontos de história”, geralmente significa ter coisas marcadas de uma lista. De um ponto de vista literal, não é realmente sobre velocidade no sentido físico (direção e magnitude), mas mais sobre ocupação ou a taxa de “fechamento de tickets”. Em nossa opinião, esta é uma pseudométrica que tem pouco valor no mundo real. Além disso, a velocidade, como o termo é geralmente usado por equipes ágeis, é inconsistente, subjetiva e jogável.