Posso derivar Story Points em horas?
Pensei em várias formas para iniciar esse post, falando sobre “os dias de hoje”, sobre a implantação do agile nas empresas, sobre questões contratuais relacionadas ao agile… mas o fato é que quando o assunto é matemática, não tem outra forma de introduzir senão conceituando.
Para isso, convidei o Pato Donald para nos mostrar aplicações da Sequência de Fibonacci, utilizada nos Story Points. Veja o vídeo antes de continuar, por favor.
Como pôde ver, esse conceito está em toda parte, na flora, na fauna e no próprio universo. A sequência de Fibonacci representa matematicamente essa proporção, tão difundida nesse “negócio estranho” chamado natureza.
Medição em horas
Mas,como sempre faz, o ser humano tenta mudar as leis naturais e “resolveu” que o tempo deveria ser medido em parte iguais e fixas… o que no final acabou sendo bem mais complicado, como explica nosso outro amiguinho, o “guru da ciência”:
É, amigo. Imagino como sua cabeça esteja explodindo agora. Me desculpe por abrir sua mente sem pedir autorização, mas como pôde ver o tempo é tão relativo que nem mesmo a Terra é capaz de girar exatamente na mesma velocidade.
Temos evidências mais simples da complexidade do tempo, a definição da semana é uma delas. Uma semana de 7 dias, um número primo, não demonstra bem claramente que “algo está errado”?
_ Ah, Eli, mas dois dias são do fim de semana! Os dias úteis são apenas 5.
_ Hum… até onde sei o 5 também é primo, amigo.
_ É primo, mas se juntar com mais 4 semanas dá 20 dias.
_ Certo, então se eu juntar 20 dias úteis + 4 vezes os 2 dias do fim de semana (=28), chegarei a um mês?
_ Não… o.O
Pois é, os 28 dias na verdade representam o tempo necessário para completar um ciclo lunar, que deveriam corresponder aos meses, mas até os ciclos da Lua também variam (entre 29 a 30 dias). Uma forma bem clara de notar quão caótica é a variação entre o tempo de nossos calendários e o tempo real, é observar os anos bissextos. Veja mais um vídeo explicativo (bem “antiguinho”, mas muito bom).
O fato é que vivemos num ritmo completamente equivocado, tentando ajustar nossas vidas às sequências que nós mesmos sentimos não fazerem sentido.
Quem de nós nunca sentiu que 1 minuto após uma grande perda pareceu horas? E quantos não sentimos que um dia na praia pareceu passar tão rápido?
“Gastar tempo contando o tempo é perda de tempo”
É uma frase boba, porém foi a mais ilustrativa que encontrei.
Escalas não-lineares
Então, eis que surgiram os “papas do agile” e, do alto da sua iluminação, resolveram incorporar uma forma mais natural para lidar com o tempo. Sim, adotaram a sequência de Fibonacci (1, 1, 2, 3, 5, 8, 13, 21 …) para medir a complexidade de um trabalho e, por consequência, de um projeto.
Usando esse mecanismo, a equipe consegue desligar um pouco do conceito ritmado do tempo para enfocar-se nos resultados que terão que alcançar.
Se “isso” é 4x mais complexo que “aquilo”, mas não existe o número 4 na escala, o time terá que escolher entre 5 ou 8 (observe novamente que a escala não é linerar). Ao fazer essa escolha, poderiam superestimar, mas como a estimativa é feita de forma recursiva, por um grupo de pessoas que devem chegar a um consenso, a probabilidade é muito menor.
Posso derivar Story Points em horas?
Depende do seu objetivo. Você quer medir resultados ou a passagem do tempo? Escolha uma das opções a seguir.
Opção 1 – Quero medir a passagem do tempo e pronto!
Bem, os time boxes existem justamente para retirar da equação a preocupação com o tempo, mas já que você insiste…
Imagine que você, arbitrariamente, definiu que cada story point equivalha a 17 horas. Na tabela abaixo, você poderá observar como a multiplicação dessa constante se comporta numa escala linear (colunas 1 e 2) e numa escala não-linear (colunas 3 e 4).
Agora atente para os itens marcados com colchetes. Perceba que na escala não-linear existem saltos entre os números 3-5 e 5-8. No primeiro colchete, a diferença soma 34 horas (85-51) e no segundo colchete, a diferença sobe para 85 (221-136).
A soma de 34 horas é uma diferença 2x superior a constante estabelecida, de 17 horas, mais que suficiente para gerar “acusações de traição e morte”.
Mas quando chegamos a pontuações entre 8 e 13, a diferença alcança patamares de 85 horas, depois 136, 221, 357 etc, mais que suficiente para recomeçar as “guerras napoleônicas”, especialmente se multiplicarmos essa quantidade de horas por dinheiro, seja lá qual for o fator.
Tenho certeza que já entendeu que multiplicar story points por um número fixo de horas gera “erros catastróficos”. Imagine gerenciar essa diferença num projeto de centenas de story points? entre múltiplos projetos? dezenas deles?
Opção 2 – Quero medir resultados!
Meus parabéns, aqui o jogo é mais fácil!
- As sprints tem uma quantidade fixa de dias, certo?
- A equipe também é fixa, certo?
- Então quantidade de dias x quantidade de pessoas = esforço total, certo?
Pois é, lá está você perdendo tempo de novo. Se toda a composição de tempo é fixa, então pra que calcular?
Meça quantos pontos a equipe realizou ao final de cada sprint, é mais produtivo. Mas lembre-se de três coisas:
1. A diferença continuará existindo, então numa sprint a equipe fará uma certa quantidade de pontos e na outra poderá fazer mais ou fazer menos. Não existe exatidão, existe acurácia (faixas superior e inferior), algo muito parecido com uma carta de controle.
Então, amigo. Se você deseja fazer algum tipo de medição com story points, seria algo relacionado ao grau de variação aceitável ou não.
2. Cada projeto tem sua própria medição. Toda a dinâmica utilizada para medir story points faz com que cada time meça do seu jeito, existem diversas pesquisas científicas na área de psicologia social que comprovam isso.
Se a pontuação estimada por uma pessoa é influenciada pela opinião do grupo, o mesmo acontecerá em outro grupo. Deste modo, 1 story point para uma equipe pode representar o “monte Everest”, enquanto para outra pode representar o “gigante adormecido da baía de Guanabara”.
3. Comparar a produtividade das equipes por story points não faz sentido, muito menos transformá-los em horas, o que daria no mesmo. Fazer essa comparação é equivalente a comparar uma frase em diferentes idiomas e julgar que um povo é mais produtivo que outro pela quantidade de letras, vamos testar?
Idioma | Caracteres | Frases |
português | 46 | Eu controlo a produtividade medindo resultados |
ingles | 43 | I control productivity by measuring results |
espanhol | 52 | Controlo resultados por la medición de productividad |
eslovaco | 41 | Aj ovládať produktivitu merania výsledkov |
norueguês | 52 | Jeg kontrollerer produktivitet ved å måle resultater |
Luxemburgues | 49 | Ech Kontroll Produktivitéit vun Resultater Moosse |
Irlandês | 40 | Rialú mé táirgiúlacht ag torthaí tomhais |
Seguindo essa tabela, o país mais produtivo do mundo deveria ser a Irlanda, mas na verdade é Luxemburgo. O segundo lugar, pelo quadro deveria ser a Eslováquia, mas é a Irlanda. O terceiro deveria ser a Eslováquia, mas é a Noruega, que leva 52 letras para dizer a mesma frase (se é que a tradução do Google saiu correta).
A produtividade de um país é medida através do PIB por hora trabalhada. O cálculo utiliza o PIB Total, a quantidade de pessoas empregadas e a quantidade média de horas trabalhadas por semana. Evidentemente trata-se de uma média, já que o número de pessoas empregadas não é fixo (sim, as pessoas ganham e perdem empregos ao longo do ano), a quantidade de horas semanais varia com feriados (absenteísmo etc) e o PIB (ah, o PIB!) pode sofrer com variações cambiais, especulativas e inflacionárias.
Mas eu preciso comparar meus fornecedores…
Então use uma medida fixa, que não é o tempo e nem a percepção de complexidade.
Uma boa opção é calcular pontos de função, existe um método bem simples do instituto NESMA que permite calcular rapidamente. Meça no começo, para estimar e no final do projeto, para guardar o histórico.
Como calcular a produtividade de cada fornecedor?
A produtividade é calculada da seguinte forma:
- Conta-se a quantidade de pontos de função
- Anota-se quantos dias foram trabalhados em cada projeto
- Anota-se a quantidade de pessoas em cada equipe
- As “horas úteis” são calculadas a partir da multiplicação dos itens 2 e 3
- A produtividade é calculada pela divisão dos itens 1 e 4
Pronto! Está calculado o comparativo entre fornecedores. Não foi preciso levar em conta os story points, nem transformá-los em horas.
Só não esqueça que se trata de um indicador médio e que a produtividade pode se alterar conforme o entorno do projeto. Existem vários fatores como o desafio tecnológico, a coesão da equipe que podem impactar a produtividade e não seria legal ser injusto com nenhum fornecedor.
Como identificar esses fatores?
Moleza, basta um pouquinho de estatística. O trabalho abaixo mostra um exemplo de avaliação completa realizada em projetos de desenvolvimento de softwares móveis.
O passo a passo para replicar a análise é o seguinte:
- Anote os números de todos os projetos
- Anote os “fatores suspeitos de influenciar a produtividade”
- Realize um teste de qui quadrado para saber quais são estatisticamente relevantes
- Rode um teste ANOVA para saber a direção de cada fator (opcional)
- Rode uma regressão linear saber o peso de cada fator
- Pontue os fatores
- Aplique a equação gerada para identificar a produtividade esperada
- Compare a diferença percentual entre a produtividade esperada e alcançada (e não o número absoluto)
Os resultados tomam a seguinte forma (com dados ilustrativos):
No quadro anterior, o “fornecedor D” parecia ser mais o mais produtivo. No entanto, quando adicionamos uma produtividade estimada para cada tipo de projeto, a situação se reverte e os fornecedores B e E estão cerca de 13% acima da velocidade inicial. Ou seja, estes são os fornecedores mais produtivos e não o D.
Deste modo, o que podemos concluir é que o valor absoluto da produtividade pouco importa, mas a diferença da produtividade estimada para cada tipo de projeto (cálculo: [produtividade alcançada – produtividade estimada]/produtividade estimada).
Do que estávamos falando mesmo? de medir horas?
Eli Rodrigues