Este é um tópico complexo e há debates frequentes sobre o assunto. Não gosto do conceito de opinião "canônica" sobre isso: existem várias opiniões com valor. Mas existem valores, princípios e práticas de apoio que devem orientar a abordagem.
O seguinte é baseado em minhas próprias opiniões, trabalhando com equipes de scrum por mais de 10 anos. Mas é apenas a minha opinião.
Pontos da história como um método de previsão O objetivo original dos pontos da história era encontrar um método rápido para estimar o esforço com o objetivo de prever o que uma equipe pode concluir durante um período de tempo. Alguns dos "luminares" afirmam que os pontos são usados apenas para prever o escopo de longo prazo (em uma liberação, por exemplo), e não para determinar a capacidade no nível do sprint. Além disso, o conceito é que as equipes estão aplicando o "dimensionamento relativo" com base em valores históricos (o esforço X é semelhante ao esforço B, que foi de 3 pontos). Isso acelera o processo de estimativa, para que as equipes não precisem dividir o trabalho futuro em pacotes de trabalho detalhados e aplicar horas a todas as tarefas. As equipes de alto desempenho se esforçam para transformar todos os trabalhadores técnicos em membros muito competentes de níveis de habilidade semelhantes. (Este conceito será explorado mais no ponto 4). Quando isso for alcançado, o nível de habilidade individual não será realmente uma variável no dimensionamento. MAS: Geralmente, leva muito tempo e esforço conjunto para atingir esse objetivo. Então ... o que fazemos antes de chegarmos lá?
As horas de tarefa determinam a capacidade de sprint: de acordo com os mesmos "luminares" que afirmam que os pontos são usados para previsões de longo prazo, eles também propõem que as horas de tarefa sejam usadas para determinar a capacidade de sprint, em vez de pontos. Na minha opinião, tudo bem, mas direi que, quando ajudei a treinar equipes para "Alto Desempenho", suas habilidades niveladas atingiram uma média de onde eles poderiam determinar com precisão o que poderiam concluir em um sprint usando apenas Story Points . Novamente, esse pode ser um objetivo pelo qual nos esforçamos, mas as equipes mais novas não estão prontas para isso. Portanto, você pode encontrar em uma única corrida uma história com 2 pontos com 12 horas de trabalho e outra com 25 horas de esforço. Então, o que você faz? Algumas pessoas que chamo de "ágeis-puristas" afirmam que o tamanho da história (em pontos) deve ser agnóstico em relação à duração. Outros discordam. Leia a lógica do item 3 e veja o que você pensa.
- Apontar histórias por consenso: aplicar volume, incógnitas, complexidade e conhecimento
Portanto, as equipes analisam um trabalho e precisam concordar com os pontos que servirão de proxy para o Nível de Esforço. Certo? Supondo que todas as habilidades sejam iguais, é fácil chegar a um consenso. Mas muitas vezes as equipes têm um cara que é um guru de Java, outro que não é tão bom em Java (talvez ela fosse uma pessoa em C # ou .Net ou Cobol e esteja aprendendo Java). Portanto, a tarefa X para Bob é muito simples. Para Jane, é mais difícil.
As equipes ágeis tentam promover a propriedade coletiva do código e o crescente / crescente conhecimento. Portanto, geralmente não atribuímos histórias às pessoas com base em seus conhecimentos: preferimos que as equipes trabalhem coletivamente nas histórias e aprendam juntas. Isso está alinhado com o conceito de "desacelerar para acelerar": se dedicarmos um tempo para dar a Jane experiência com Java, enquanto isso pode nos atrasar a princípio, mais tarde teremos desenvolvedores Java mais competentes. De fato, se tivermos apenas UM especialista em Java e todos trabalharem em suas próprias áreas de especialização, estamos criando uma situação com vários "pontos de falha" potenciais. O que acontece no sprint quando 90% do trabalho é Java, mas Bob (nosso especialista em Java) está doente ou de férias? Ao expandir as habilidades, eliminamos possíveis gargalos e reduzimos os riscos. Com aquilo em mente: Quando a equipe examina uma história, eles devem ter vários conceitos em mente ao dimensionar. Você pode pensar no acrônimo VUCK para lembrar disso.
Volume: alguns esforços são bastante simples, mas exigem um grande volume de tarefas repetidas. (Eu tinha um cara que tinha que copiar e reformatar mais de 50 tabelas e disse que era 1 ponto porque era simples. Mas, após a reflexão, a equipe percebeu que, embora fosse fácil, consumia tempo e havia um grande volume de tabelas para otimizados, tivemos que reajustar os pontos devido ao volume de trabalho)
Desconhecidos: Às vezes, pensamos que sabemos o que fazer, mas também identificamos alguns desconhecidos - eles representam RISCOS . E isso implica que podemos encontrar problemas inesperados que precisamos resolver, reprojetar ou tentar uma solução diferente.
Complexidade: Este é bastante óbvio. Algumas soluções são tecnicamente complexas. Sabemos exatamente o que fazer, mas isso requer conhecimento técnico. Complexidade também implica algum risco, não é? Portanto, mesmo se todos tivermos habilidades iguais, a complexidade técnica implica que podemos enfrentar desafios imprevistos. Então, podemos tornar essa história maior.
Conhecimento: REALMENTE sabemos o que estamos resolvendo? Às vezes, os clientes não são totalmente claros sobre a solução que desejam, e estamos experimentando um pouco. Ou talvez ninguém nunca tenha implementado essa solução (nova tecnologia nunca usada antes) e, portanto, não sabemos o que não sabemos.
Na minha opinião, cada uma dessas considerações é na verdade um proxy por um período prolongado. História fácil, muito volume? Vai levar mais tempo, ou precisamos dividir a história. Desconhecidos? Adicionado risco, pesquisa, experimentação, pode levar mais tempo ou precisamos dividir a história. Complexo? Risco adicional, necessidade de corrigir bugs, reprojetar etc., para que possa levar mais tempo. Não sei se temos o conhecimento necessário? Temos riscos adicionais, talvez seja necessário experimentar etc., por isso pode levar mais tempo ...
Veja onde isso está indo? Portanto, embora o conceito de pontos da história nos desencoraje a pensar em duração ao estimar, por outro lado, seria ilógico ter uma história de 1 ponto que possamos concluir em 4 horas e outra história de 1 ponto que seja simples, mas exigirá 2 semanas.
- As equipes de alto desempenho eliminam os silos e os gargalos: como as equipes tentam aumentar o nível de todos os membros, às vezes eles têm menos experiência em enfrentar novos desafios ou emparelham códigos para compartilhar conhecimentos para melhorar como equipe. Como mencionado anteriormente, este é um requisito para que a equipe atinja níveis reais de alto desempenho.
Portanto, se Jane se voluntaria para assumir esse esforço de Java e isso faria o esforço 2x ou 3x a duração do mesmo esforço se Bob fizesse isso, o que você faz? Com o tempo, minhas equipes decidiram dimensionar histórias com base no nível de esforço (LOE) / VUCK para as pessoas que trabalham no esforço. Não faz sentido para Bob, o time Guru, dizer "esse é um 1", quando para Jane não será fácil e levará uma semana para ser concluído, além de exigir um pouco do tempo de Bob para codificação e revisão de código em pares. Portanto, aumentamos esses pontos para refletir o verdadeiro LOE. Na próxima vez que uma história semelhante veio, o que era 8 para Jane se tornou um 5. Eventualmente, todos concordaram que era um 3. Fácil. Nesse ponto, sabíamos que estávamos crescendo como uma equipe.