Na matemática fuzzy, números podem ser representados por “triângulos” que indicam a possibilidade de um número ter um valor específico. Por exemplo, o número fuzzy [1,2,5] significa um número que tem uma possibilidade que vai crescendo de 1 (onde é 0%) até 2 (onde é 100%) e depois vai decrescendo novamente até alcançar 0% em 5. Dizemos que [1,2,5] é um número 2 fuzzy. Outro número 2 fuzzy seria [0,2,4].
Isto serve para trabalhar quando temos alguma incerteza. Por exemplo, quando dizemos que algo vai demorar “umas quatro horas para fazer” podemos querer dizer que vai durar uma quantidade de horas entre 3 e 6. Isso pode ser representado pelo número fuzzy [3,4,6]. Um gráfico desse número está na Figura 1.
Fig. 1– O número fuzzy [3,4,6]
Chamamos esses números de números fuzzy triangulares, porque eles ficam parecendo triângulos em nosso gráfico. Podemos usar outras curvas, mas para esse artigo é mais fácil trabalhar apenas com triângulos.
E o que isso tem a ver com o Scrum?
Quando fazemos nossas previsões da quantidade de pontos de uma história estamos na prática trabalhando não só com o conceito um pouco difuso de “pontos de história”, mas também com um conceito fuzzy de número. Não estamos realmente certos do valor de cada número, estamos apenas “indicando” o valor que nos parece mais razoável ou possível.
Estabelecendo a série de números (0,1,2,3,5,8,13,20,40) para nossos pontos de história, o que temos na verdade são “chutes”, ou seja, quando dizemos que algo “custa” 8 pontos de história para ser feito não temos certeza absoluta desse valor, mas avaliamos que é algo entre 5 e 13, em torno de 8, pois caso contrário teríamos escolhido um desses dois outros números. Pode, porém, se fizermos as contas detalhadamente, custar 9 pontos.
Essa nossa incerteza pode ser representada por números fuzzy. Vamos chamar esses números de F0, F1, F2, F3, F5, F8, F13, F20 e F40 e escolher os seguintes triângulos para eles: F0=[0,0,2], F1=[0,1,3], F2=[1,2,4], F3=[2,3,5], F5=[3,5,8], F8=[5,8,13], F13=[8,13,17], F20=[15,20,40], F40=[30,40,100]. A Figura 2 mostra a representação gráfica desses números fuzzy triangulares.
Fig. 2- Os números fuzzy que representam os pontos de história, divididos em dois gráficos por questão de escala
Quando escolhi essa sequência, usei o bom-senso humano e não a matemática pura. Assim, F1+F1=[0,2,6] e F2=[1,2,4], logo F1+F1≠F2, porém F5+F3=F8, pode verificar. Escolhi baseado na minha incerteza pessoal em relação a esses números. Outra pessoa ou equipe pode escolher outros números fuzzy.
Podemos dizer que quando estamos falando 8, na verdade estamos falando F8 e esperamos que seja 8, mas admitimos, com diferentes graus de possibilidade indicados pelos gráficos que mostrei, quaisquer números entre 5 e 13, porém nenhum número fora desse intervalo. Isso porque escolhi modelar F8 como [5,8,13], mas podia ter escolhido algo com menos incerteza, como [6,8,12] ou com mais incerteza, como [4,8,14].
Para somar dois números fuzzy basta somar cada posição do triângulo, assim:
F1+F2=[0,1,3]+[1,2,4]=[0+1,1+2,3+4]=[1,3,7].
De que isso serve? Bem, serve para entender que quando somamos dois números fuzzy, temos também que somar as incertezas! E as incertezas indicam nossos riscos.
Vamos supor que estamos planejando um Sprint e ele contenha 4 tarefas de 3 pontos e 1 tarefa de 8 pontos. Quantos pontos tem a Sprint?
Se usarmos simplesmente números comuns, ficamos com 20 pontos. Porém, analisando o erro indicado pelos números fuzzy que escolhi o que temos é F3+F3+F3+F3+F8=[13,20,33]. Ou seja, mesmo que nosso foco seja 20, podemos estar errando algo e no final ser algo entre 13 e 33.
Adicionalmente, se estivéssemos somando uma tarefa de 13 com uma de 8, nosso total seria F8+F13=[13,21,30]. Veja que nas contas feitas sem colocar a incerteza 3+3+3+3+8=20 e 13+8=21, mas quando introduzimos a incerteza, F3+F3+F3+F3+F8 admite 33 como resposta e F13+F8 admite no máximo 30.
A que conclusão chegamos? É que quando estamos trabalhando com números incertos 3+3+3+3+8 pode ser maior que 13+8. Isso significa que não podemos trocar uma tarefa por um grupo de tarefas sem pensar o que vai acontecer com a incerteza da previsão.
Vamos usar um exemplo “grande”: supondo uma velocidade de time de 33, é diferente escolhermos 33 histórias de 1 ponto, que resultaria no valor [0,33,99] ou uma de 20 e uma de 13, que resultaria em [23,33,57]. Apesar da soma ser a mesma, a incerteza é muito diferente, não só nos valores, mas também na forma. Veja esses dois números no gráfico a seguir.
Fig. 3 – Diferença de incerteza entre duas possíveis Sprint que somam a mesma quantidade de pontos de história
Incerteza maior significa risco maior. Assim, a conclusão é: devemos prestar atenção não só nos valores que predizemos, mas também na incerteza desses valores quando estiver trabalhando com os riscos de uma Sprint.
Sabendo isso, você pode ficar atento ao risco quando negociar uma Sprint. Não é necessário trabalhar diretamente com números fuzzy, mas é importante saber que quando somamos valores difusos como os que usamos no planning poker não necessariamente 1+1=2.
Se você quiser trabalhar o risco com números fuzzy, não é difícil. Uma planilha simples pode ajudá-lo a prever a incerteza de cada Sprint, ou tentativa de Sprint durante o planejamento.
No começo de um projeto é interessante trabalhar com a incerteza alta. Ao longo do tempo, percebendo que a equipe erra menos com certos tamanhos, podemos diminuir a incerteza.
Isso também pode ser feito caso a caso. Quando a equipe imediatamente concorda em um número e pode mapear em uma história já feita, diminua a incerteza daquele número específico. Quando a equipe demorar em decidir, use uma incerteza maior. Por exemplo, se durante o planning poker você tiver que decidir pelo voto e ficar com 3 votos para 8 e 2 para 13, é razoável colocar o número fuzzy [5,8,20], fixando no 8, mas mostrando que a incerteza do 13 é possível.
Bem, a mensagem é essa: cuidado quando fizer contas com seus pontos de história, ou com qualquer tipo de número previsto. Lembre que previsões contêm erros e que os erros se somam (ou pior, se multiplicam em alguns casos). Nunca troque seis por meia dúzia sem antes pensar no risco associado a cada um desses números.
Por outro lado, quando trabalhamos com itens mais pulverizados (menores), a estimativa tem menos risco (aliás, esta é uma das principais razões pelas quais devemos trabalhar com estórias “pequenas”). Assim sendo, no exemplo das 33 estórias de valor 1, o risco total pode não ser maior do que o de trabalhar com duas estimativas de estórias “grandes”.
Desvios padrão não se somam simplesmente!