O que é produtividade de software

Essencialmente, é simples, resulta ao longo do tempo.

Produtividade = Resultados/Tempo

No entanto, a parte complicada é encontrar uma medida adequada para os resultados. Os resultados no contexto do software são difíceis de padronizar. Na maioria dos casos, podemos pensar no resultado de um empreendimento de software como valor comercial e/ou capacidades reconhecíveis pelo usuário entregues.

Por que muitas empresas desejam medir a produtividade de software

Os gestores têm o dever de buscar quantificação e alguma certeza sobre custo, cronograma e escopo para um determinado empreendimento de software. Procurarão também meios e medidas para:

  • Comparação com outras organizações
  • Acompanhe o progresso ao longo do tempo
  • Avalie a produtividade da equipe e individual
  • Use a produtividade para determinar decisões de terceirização
  • Use a produtividade para informar decisões de priorização

Medidas Gerais de Produtividade

Nosso foco principal é a produtividade do desenvolvedor, já que os desenvolvedores tendem a fazer mais e custar mais em um projeto de software. Mas também é útil compreender a produtividade de outras pessoas envolvidas, incluindo testadores, analistas, gerentes de projetos, designers, arquitetos e outras pessoas envolvidas em projetos de software.

Critérios de boa métrica de produtividade de software

Não existe uma métrica perfeita para o “resultado” do trabalho de software, por isso temos que encontrar indicadores substitutos alternativos que possam nos ajudar a chegar perto da quantificação do “resultado”.

Idealmente, para software, queremos uma “métrica de saída” que atinja o seguinte:

  • está fortemente correlacionado ao valor do negócio
  • é injogável e consistente, objetivo, repetível e verificável de forma independente
  • é independente, independentemente da linguagem de programação
  • é válido para comparar um projeto com outro.
  • pode explicar o trabalho mais complexo atribuído a membros da equipe mais capazes
  • que podem ser coletados de forma barata e fácil.

Observe que as métricas ideais para produtividade individual variam ligeiramente daquelas ideais para determinar a produtividade da equipe.

Classificação de métricas de software

A tabela a seguir foi produzida por Steve McConnell e é discutido nesta apresentação para classificar métricas de produtividade de software adequadas. Os pontos de função COSMIC eram menos conhecidos e o dimensionamento automatizado não estava disponível quando Steve criou esta tabela pela primeira vez. Adicionei a coluna para pontos de função COSMIC. Esta coluna extra é subjetiva e, em nossa opinião, não faz parte da avaliação original de Steve.

LOC/SM
FP/SM
PCP/SM
Pontos de história/SM
360 avaliações por pares
Avaliação do Gestor
Previsibilidade de conclusão de tarefas
Casos de teste aprovados
Taxas de defeitos
A medição reflete verdadeiramente a produtividade 3 4 4 4 3 2 1 4 3
Direta ou indiretamente é responsável por toda ou a maior parte da produção de trabalho 4 4 4 5 5 5 2 4 3
Útil para medir o trabalho de não programadores 1 4 4 4 5 5 5 4 4
Resiste ao “jogo” de colaboradores individuais 2 5 5 4 3 3 4 4 5
Fortemente correlacionado com o valor do negócio 2 3 4 4 3 4 2 4 3
Objetivo, verificável de forma independente 4 4 5 3 2 2 4 4 4
As medidas têm a mesma saída, independentemente da linguagem de programação usada 1 5 5 3 5 5 5 5 5
Suporta comparações pessoa a pessoa dentro de uma equipe 3 4 4 4 5 4 4 4 4
Considera que as melhores pessoas recebem as tarefas mais difíceis 2 4 5 4 5 5 1 5 2
Os dados podem ser coletados de forma fácil e barata 3 1 5 3 3 4 3 3 4
25 38 45 38 39 39 31 41 37
Classificação 9 5 1 5 3 3 8 2 7

Na avaliação original de Steve, a conclusão foi uma disputa acirrada entre diversas abordagens, com “Casos de teste aprovados” como a mais alta. Agora, com o advento de a) uma abordagem mais simples para o dimensionamento funcional (pontos de função COSMIC vs pontos de função IFPUG) eb) dimensionamento automatizado, parece haver uma métrica líder clara para avaliar a produtividade – Pontos de Função COSMIC.

Medidas de produtividade enganosas

Não existe uma métrica única perfeita para o trabalho de software, mas existem algumas que são úteis e válidas. Existem também alguns que podem enganar, sofrer abusos ou instigar comportamentos inúteis.

Linhas de código

A medida de produtividade aqui é o número de linhas de código escritas ao longo do tempo. Dado que diferentes desenvolvedores podem variar em 10x o número de linhas de código para uma determinada funcionalidade, na melhor das hipóteses, o LOC entregue ao longo do tempo pode ser apenas uma aproximação. É fácil de medir, mas não é necessariamente uma boa medida. Diferentes linguagens de programação exigem diferentes números de linhas de código, variando significativamente de uma linguagem de programação para outra. O uso de linhas de código também pode encorajar os desenvolvedores a escrever linhas extras supérfluas, apenas para serem classificados como “produtivos”. Isto tem o efeito oposto ao pretendido, pois pode gerar custos adicionais de manutenção.

Pontos de história

Os Story Points são um proxy subjetivo e não padrão para estimativa de esforço. Alguns dirão que “medim” a complexidade. Na melhor das hipóteses, podem dar uma indicação da dificuldade de uma tarefa específica. Em essência, estes são uma indicação de “dias ideais para funcionários”. Eles são inadequados para trabalhos contratados e não podem ser usados para comparar uma equipe com outra, nem um projeto com outro. Não há “aprendizado” ou “melhoria contínua” alcançável com a adoção de story points.

Contagens de histórias

O tamanho da história do usuário pode variar significativamente, quer você estime o tamanho em pontos de função COSMIC ou em dias de equipe ideais. Uma história pode ser uma tarefa técnica de 10 minutos, enquanto outra história pode exigir um mês inteiro de uma equipe para ser entregue. Na nossa experiência, as histórias variam em tamanho de 0 CFP a 120 CFP.

Outras medidas de produtividade da equipe

A avaliação da produtividade baseada no cartão de pontuação pode ser útil em algumas circunstâncias, especialmente se os valores do cartão forem normalizados entre as equipes e escolhidos para refletir todos os critérios que a organização deseja usar.

É importante escolher critérios que se concentrem nos valores da organização (em termos de qualidade e resultados). Também é importante alinhar as equipes com os verdadeiros objetivos do negócio.

Recomendação

Pontos de função CÓSMICOS

Nossa medida de saída recomendada são pontos de função COSMIC (CFP). Nossas razões para esta recomendação são:

  1. CFP está enraizado em princípios fundamentais de comportamento de software (entradas, saídas, leituras e gravações)
  2. O CFP é focado no usuário – ele se alinha ao que é necessário para agregar valor ao usuário
  3. O CFP é um proxy razoável para o valor comercial.
  4. A PCP alinha-se muito bem com o esforço real.
  5. O CFP tem uma definição para uma unidade individual de tamanho.
  6. O CFP fornece uma medida de tamanho que é o fator mais significativo na determinação do custo e da duração de um projeto.
  7. O CFP permite que os gestores gerenciem atividades não relacionadas ao desenvolvimento usando o CFP também como métrica base.
  8. O CFP é aberto, gratuito e independente.
  9. CFP são adequados para requisitos incompletos (ou seja, Agile)
  10. CFP são adequados para quase qualquer tipo de software
  11. A estimativa antecipada do CFP é principalmente automatizada (pelo ScopeMaster®)

A medição da produtividade do desenvolvimento de software é a atividade de registrar as métricas e atributos de um empreendimento de software para fins comparativos.

CFP é uma forma confiável de avaliar a produtividade de software

Quão produtivos são nossos desenvolvedores de software?

Gostaria de saber se sua equipe é mais produtiva que outra ou que as normas do setor?

Você pode comparar as atividades de uma equipe com as de outra dentro de uma organização, benchmarking interno. A comparação com outra organização semelhante é chamada de benchmarking externo.

Embora os benchmarks do setor possam ser interessantes, os benchmarks locais/internos são os mais confiáveis.

Benchmarking de produtividade de desenvolvimento de software – avalie sua equipe

Se você tem uma ótima equipe, por que não publicar seu índice de produtividade, talvez isso o ajude a ganhar trabalho de desenvolvimento?

Tudo que você precisa é de um conjunto de histórias de usuários de um projeto anterior, cerca de 1 hora e acesso ao ScopeMaster.

  1. Pegue um conjunto de requisitos de um projeto recente. Carregue-os no ScopeMaster. Deixe o analisador calcular o tamanho.
  2. Adicione à calculadora de produtividade o esforço total necessário (em dias pessoais), a duração (em meses) e a remoção de defeitos que você conseguiu.
  3. Em seguida, determinará o índice de produtividade da sua equipe.

E isso é tudo.

Se você estiver acima da média, digamos 6+ para uma equipe da web, então você está no caminho da grandeza. Se desejar, publicaremos o índice de produtividade da sua equipe em nossa tabela classificativa.

Cuidado com métricas enganosas

Pontos de história, linhas de código, tamanhos de camisetas, homens-dia são todos jogáveis ou fáceis de manipular, técnicas geralmente usadas para estimar esforço e tempo. Eles são invariavelmente manipulados para fins próprios. Somente os métodos de dimensionamento funcional do padrão ISO são difíceis de manipular.

Benchmarking de desenvolvimento de software