A estimativa do esforço necessário para entregar as histórias é um dos pontos em aberto do Scrum que permite mais variação. Como método ágil, Scrum atrai soluções participativas, como o “planning poker”, mas qualquer método que implique no compromisso da equipe com o valor encontrado é um bom método.
É interessante notar que a estimativa pode variar de duas maneiras no Scrum: variando a unidade da estimativa ou variando a forma de chegar a uma estimativa.
Scrum é surpreendente, pois descobrimos que a unidade escolhida não é tão importante. A questão não é realmente “quantos de quanto” estamos fazendo, mas sim qual a nossa velocidade, em uma unidade qualquer, e como as histórias são comparadas umas com as outras nessas unidades.
Uma unidade comum são os “pontos de história”. A prática diz: escolha a menor história do primeiro Product Backlog e determine que ela exige 2 pontos de história. A partir daí, avalie o esforço de todas as outras histórias comparando-as com a história de 2 pontos. Prestando atenção a essa descrição, podemos ver que a cada projeto a menor história poderá ser diferente. Logo, 2 pontos de histórias não significam sempre a mesma coisa.
O que temos de interessante nesse método? Em primeiro lugar, não é necessário realmente conhecer quanto esforço será necessário, apenas qual é a história mais fácil. Em segundo lugar, enquanto estivermos trabalhando com histórias pequenas (entre 0 e 8 pontos de história), será razoavelmente fácil acertar o esforço necessário para executá-las, usando a história de 2 pontos como referência. Em terceiro lugar, quando encontramos histórias muito grandes (20 pontos ou mais), temos imediatamente consciência que estamos falando de um “chute” e é melhor quebrá-las em mais histórias, que podemos estimar com maior certeza.
Relacionado com o uso de pontos de história está o uso de uma série de números fixos para determinar o esforço da história: 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100. Por que esses números? Porque estamos muito interessados nas proporções de dificuldade entre as histórias e pouco interessados em ter uma estimativa perfeita, principalmente para histórias muito grandes, que não serão atacadas da forma como estão definidas no momento. O erro entre 2 e 3 é pequeno, e também não é preciso ficar perdendo muito tempo para decidir se é 4, 3 ou 5. As proporções dessa série numérica são bastante adequadas.
O uso de horas de trabalho para medir histórias também é possível, porém acredito que essa medida é bem mais adequada para estimar as tarefas de uma Sprint do que as histórias.
Outra medida que tomei conhecimento: o uso de “tamanhos de camisa”. Uma história seria então extra-pequena (XP), pequena (P), média (M), grande (G), extra-grande (XG) ou extra-extra-grande (XXG). Uma vantagem dessa notação é que ela tem grande poder de comunicação com o Product Owner. Como os nossos números não significam uma unidade absoluta, apenas a relação entre eles tem significado, podem parecer muito arbitrários para o Product Owner. Usar tamanhos de camisa ou, teoricamente falando, valores nebulosos (fuzzy), pode facilitar a comunicação. No entanto, dificulta um pouco o cálculo da velocidade da equipe.
Qual a sua forma de estimar? Qual a sua opinião?
Boa tarde.
Trabalho em uma empresa onde o mais difícil é estimar os prazos.
Gostei muito deste artigo, porém não consegui entender como vou conseguir estivar a velocidade de um desenvolvedor para fazer 2 pontos sendo que esses pontos variam.
Creio que a velocidade, seguindo a medida de pontuação, seria o total de pontos que a equipe consegue realizar numa sprint, ou seja, se na primeira sprint foram feitos 20 pontos de história, e na segunda sprint 29, a velocidade da equipe aumentou.
Ou superestimaram as histórias na segunda…
Boa noite!
Sou supervisor de uma fábrica de manutenção de software.
Como somos constantemente cobrados pelos prazos, não estimamos as storys, as quebramos em tarefas e estimamos diretamente as tarefas em horas.
Acredito que não seja a melhor metodologia para otimizar a velocidade da equipe, porém ainda estou um pouco confuso sobre como utilizar story points para fazê-lo.
Se alguém tiver alguma dica, será muito bem vinda.
Abraços.
Olá,
Òtima pergunta e temos ótimas respostas que já foram dadas pelos leitores, porém vou aproveitar para apresentar mais uma visão.
Uma característica da previsão de histórias é que ela é propensa a erros. Os Story Points, pontuados apenas pelos números na sequência de Fibonacci (1,2,3,5,8,13,…) absorve esse erro, em camadas. Assim, não vale a pena dizer 4 se há um erro, você escolhe em 3 e 5.
No seu caso, com o projeto andando, você já tem uma ideia do esforço das histórias, porém quebrar as histórias para calcular o tempo e depois dar o tempo das histórias demora mais.
Uma ideia é voltar aos story points, porém usando histórias "paradigmáticas" como exemplos de pontuação. Talvez esse passo a passo te ajude:
1. Pegue um conjunto de histórias que vocês entendem como funcionam
2. Escolha a menor (em número de horas) e dê o valor 2
3. Mapeiem todas as outras, em função das horas trabalhadas em um dos números válidos de Story Points, por aproximação.
Faça tudo isso em uma reunião onde todos vão entender que "histórias de um tipo" tem Story Points parecidos.
Mas lembre-se: projetos diferentes e equipes diferente vão ter medidas diferentes de Story Points.
Abraços,
Geraldo Xexéo
Também prefiro o uso de story points para medir as estórias. Porém, acredito que o uso de medição de horas para tarefas ajuda no “encaixe” das histórias na sprint.
Gostaria de esclarecimentos;
Não entendo como 1 hora de trabalho pode consumir mais USTs mais complexas?
Caros,
Analisando o texto disponível em http://www.cgu.gov.br/Licitacoes/Arquivos/2011/pregao_06_republicado.pdf
1 UST equivale a 1 hora de serviço simples
Trabalhos mais complexos exigem mais USTs (logo, mais horas).
Abraços,
Geraldo Xexéo
Em resposta aos questionamentos: “qual a sua forma de estimar?” e “qual a sua opinião?”, eu uso “story points” para atualizar as estórias do “backlog” e “horas ideais” para planejar cada tarefa da “sprint”. Com os pontos de histórias, facilta-se achar a adequada granularidade das atividades, sua priorização e comprometimento coletivo…depois, é só acompanhar a evolução pelo “Release Burndown”. Com o detalhamento de cada item de trabalho em tarefas, utilizando o conceito das horas ininterruptas, de máxima produtividade (ideais), é possível melhor distribuir a alocação do time Scrum, dentro do escolhido espaço de tempo…aí, para o cálculo da velocidade, vale o forte conceito de “done”. Pronto?! Hehehe! Abs!