Como calcular o desvio padrão de suas estimativas

Como eu menciono em um post anterior sobre orçamentos de projetos, em geral é melhor passar um intervalo de tempo e de custo para um cliente do que um valor fixo. Mas como fazer para calcular este intervalo?

A forma como fazemos para criar esta estimativa veio de uma palestra que assisti na Agile Brazil 2011 em Fortaleza, mas que infelizmente não consegui encontrar nenhum link para creditar o palestrante. É basicamente uma aplicação da estimativa de 3 pontos.

A idéia é simples, para cada tarefa ou estória que for estimar faça três estimativas diferentes: uma otimista, uma pessimista e uma realista.

A sua estimativa otimista deve supor um mundo ideal, onde não há interrupções, ninguém fica doente, a comunicação é efetiva e a tarefa/estória é aceita de cara sem alterações,e por aí vai.

A sua estimativa realista, bom, deve supor os problemas que geralmente encontra, como problemas de comunicação, necessidade de alterar a funcionalidade para ser aceita, etc…

Por fim, sua estimativa pessimista deve supor o inferno na terra. Aquela biblioteca que pensou em usar é incompatível e precisará ser escrita do zero, serão feitos vários pedidos de alteração na tarefa, e por aí vai.

Com isso em mãos, você tem que a sua média é:

Média = ( Otimista + 4 * Realista + Pessimista ) / 6

E o desvio padrão:

Desvio = ( Pessimista - Otimista ) / 6

Com a média e o desvio padrão em mãos, você pode construir seus intervalos de acordo com a confiança ( chance do seu projeto ficar dentro deste intervalo ) desejada. Se utilizar 1 desvio padrão, sua confiança será de aproximadamente 68%, com 2 desvios padrões isso passa para 95%, e com 3 desvios padrões isso vai para 99,7%. Isso significa que se você passar um orçamento que custe Média + 3 desvios padrões é muito difícil que extrapole o orçamento.

Mas 3 desvios padrões é um pouco exagerado, então prefiro passar o seguinte intervalo:

( Média - 1 Desvio ) até ( Média + 2 Desvios )

Eu não coloco 2 desvios padrões no mínimo porque geralmente os projetos costumam errar a média para mais, e também porque extrapolar o valor é muito mais problemático que ficar mais barato do que o previsto.

Exemplo

Vamos a um exemplo para ficar mais fácil a compreensão. Digamos que as estimativas foram as seguintes:

Otimista:   20 horas
Realista: 40 horas
Pessimista: 90 horas

Então o cálculo da Média e Desvio Padrão serão:

Média:  (20 +4*40 + 90) / 6 = 45
Desvio: (90 - 20) / 6 = 11,66

Então um bom intervalo ( cerca de 95% de chance de não extrapolar o orçamento ) seria:

45 - 11,66 até 45 + 2*11,66 = de 33 à 69 horas

Este exemplo faz uso de horas como unidade de medida, mas pode ser qualquer coisa, como preço, sprints, homens-hora, etc. Este intervalo costuma ficar próximo do intervalo 0,7 * estimativa até 1,6 * estimativa, então se estiver com preguiça de fazer a conta toda pode usar este intervalo mais simplificado.

Além da própria estimativa, uma vantagem de utilizar este método é que ao colocar o “chapéu” do pessimista ou do otimista acabam sendo imaginados diversos cenários possíveis para o projeto, podendo trazer à tona questionamentos importantes que não haviam sido pensados antes. Esta técnica de “pensar sob um outro contexto” é bastante utilizada também em retrospectivas e em outros processos ágeis.

Estimativas em grupo

Se quiser criar estas estimativas com várias pessoas ao invés de individualmente, é possível fazer um planning poker, onde cada membro da equipe dá sua nota, e é discutido o que cada membro imaginou como o cenário pessimista e otimista ( por exemplo, é possível que alguém pense em um cenário otimista em que já exista uma biblioteca que faça todo o trabalho, e portanto a quantidade de trabalho é zero ).

Eu prefiro que cada membro da equipe dê uma nota para todas as estórias antes de juntar para discutir, ao invés de todos falarem juntos uma nota para a estória em questão. Isso pois neste caso as estimativas anteriores acabam influenciando nas estimativas futuras, fazendo com que todos dêem estimativas muito parecidas no final. No caso de todos estimarem tudo antes de se juntarem para discutir isto não acontece.

Depois de discutido, basta pegar as estimativativas aceitas pelo time e aplicar a fórmula acima.