Monte Carlo: A resposta (quase) definitiva para a pergunta: Quando é que fica pronto?

Compartilhe

Monte Carlo: A resposta (quase) definitiva para a pergunta: Quando é que fica pronto?

13/03/24 - 6 minutos de leitura

Quando fica pronto? Quanto vai custar? Embora não sejam as perguntas mais importantes, são perguntas que costumamos ouvir com certa recorrência. Quando estudamos e utilizamos Kaban, o nosso Customer Lead Time é um bom indicador de quanto tempo levamos para entregar 1 item do nosso backlog. Se adicionarmos métricas como taxa de entrega e gráficos como Histograma e outras ferramentas, podemos ter uma boa ideia de quanto tempo levará para entregarmos alguns itens do nosso backlog. 

Alguns avisos importantes sobre previsão (forecasting)

Entretanto, em muitos casos precisamos de uma estimativa um pouco mais precisa e fazer uma previsão (forecasting) com bastante antecedência. Antes de prosseguir nesse assunto gostaria de fazer alguns avisos importantes: 

1) Toda estimativa é uma estimativa, não uma assertiva, logo sempre haverá margem de erro; 

2) Toda previsão é no máximo uma distribuição de probabilidades baseada nos dados históricos disponíveis, sem histórico a previsão será incipiente; 

3) As perguntas e respostas que podem ser feitas dependem inteiramente dos dados históricos disponíveis. Por exemplo, se você não tem dados de onde possam ser extraídas informações sobre a performance do seu time, nem Monte Carlo ou qualquer outro método, inclusive Inteligência Artificial, conseguirá responder perguntas sobre a performance do seu time.

3) A resposta nunca será determinística (exata), por exemplo: O projeto terminará no dia 25/08/2024 com o custo de $132.456,67; 

4) A resposta será sempre um intervalo probabilístico, por exemplo: Com 85% de probabilidade, o projeto terminará entre as últimas semanas de agosto e o início de setembro custando algo em torno de $100K e $150K. Qualquer previsão que fuja desse formato de resposta é mentirosa

Para que serve Monte Carlo?

Ele se baseia em amostragens aleatórias massivas para obter resultados numéricos. Basicamente, em situações de grande incerteza como construção de produtos, nós informamos ao algoritmo dados históricos e ele nos dá como resultado previsões do que pode acontecer. Em projetos normalmente ele é utilizado para responder perguntas de prazo e custo, mas também pode ser utilizado para prever potencial de clientes de produtos, comportamento de compra, distribuição demográfica de clientes entre outros. 

A origem de Monte Carlo

O algoritmo foi criado durante a Segunda Guerra Mundial, mais especificamente, durante o famoso Projeto Manhattan. O objetivo era melhorar a tomada de decisões em condições incertas. Monte Carlo é uma homenagem à cidade de Mônaco, famosa pelos seus cassinos, pois o acaso é um elemento principal na abordagem de modelagem, semelhante a um jogo de roleta.

Como funciona Monte Carlo?

Simplificando bem o funcionamento, podemos dizer que ele funciona da seguinte forma:

  1. Você informa os dados históricos que servem de insumo para responder à pergunta que você deseja. 
  2. O Algoritmo fará centenas, milhares, milhões de jogadas aleatórias baseadas nos dados que você forneceu. 
  3. Após terminar as jogadas ele mostrará a resposta para a sua pergunta baseada nas jogadas que ele realizou, respeitando as restrições que escrevi no início do texto.

Exemplo: dados de entrada

Vamos direto ao ponto através de um exemplo. Imagine que você trabalha no Time Las Vegas. Você tem apenas as seguintes informações: 

  1. O seu backlog possui 50 itens. 
  2. A sua taxa de entrega nos últimos três meses foi de no mínimo 2 itens entregues por semana e no máximo 5 itens entregues por semana. 
  3. Hoje é o dia 05/02/2024 (segunda-feira)

Exemplo: Executando 1 rodada

Vamos simular uma rodada de execução do Algoritmo de Monte Carlo jogando aleatoriamente com os dados de entrada. A tabela se lê da seguinte forma: a primeira coluna é a segunda-feira de cada semana. A segunda coluna é o número da semana. A terceira coluna são quantos itens faltam no início da semana. A quarta coluna é o algoritmo de Monte Carlo fazendo uma jogada totalmente aleatória baseada na taxa de entrega que obtemos do nosso histórico (no mínimo 2 e no máximo 5). A última coluna são quantos itens permanecem no backlog após o término da semana. 

DiaSemanaQuantos itens faltamJogada AleatóriaQuantos itens faltam após a jogada
05/02/2024150248
12/02/2024248345
19/02/2024345243
26/02/2024443340
04/03/2024540436
11/03/2024636234
18/03/2024734430
25/03/2024830327
01/04/2024927324
08/04/20241024420
15/04/20241120317
22/04/20241217314
29/04/20241314311
06/05/2024141147
13/05/202415752
20/05/202416220
Executando 1 rodada de simulações

Exemplo: Executando N rodadas

Após 1 rodada de jogadas aleatórias, desconsiderando os feriados, podemos dizer que esse backlog não será totalmente consumido até o dia 20/05/2024. Entretanto, essa foi apenas 1 rodada e seria temeroso dar uma resposta com tão poucas repetições, vamos aumentar a quantidade de repetições e ver o que acontece. Removi a última coluna, quantos itens sobraram na sexta-feira, pois essa informação já aparece na linha debaixo de quantos itens faltam. 

DiaSemanaRodada 1Rodada 2Rodada 3Rodada 4Rodada 5Rodada 6Rodada 7Rodada 8
Quantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada AleatóriaQuantos itens faltamJogada Aleatória
05/02/20241502505505505504505504505
12/02/20242483454453454464454462455
19/02/20243452415425423424414442403
26/02/20244433362375405385372422375
04/03/20245404343324363334353402322
11/03/20246362312283315293324382305
18/03/20247344294252284265282363253
25/03/20248303255232264215262335223
01/04/20249273205212232163244282195
08/04/202410244153192182133205262145
15/04/20241120312317513210415424493
22/04/20241217395124956511420565
29/04/202413143428573117215411
06/05/20241411422333255113
13/05/20241575183
20/05/20241622355
8 Rodadas com jogadas aleatórias

Exemplo: Simplificando os resultados

Agora temos 8 rodadas e podemos resumir o resultado da seguinte forma:

RodadaQuantas SemanasSegunda-feira da semana de término
Rodada 11620/05/2024
Rodada 21406/05/2024
Rodada 31406/05/2024
Rodada 41513/05/2024
Rodada 51329/04/2024
Rodada 61406/05/2024
Rodada 71513/05/2024
Rodada 81329/04/2024
Resumo de encerramento da simulação de Monte Carlo com 8 rodadas

Com isso já temos algumas informações valiosas. Primeiro, não prometa nada antes de 29/04/2023, pois nenhuma das simulações realizadas conseguiu ser encerrada antes dessa data. No pior caso, esse backlog será totalmente entregue até a 16ª semana. Já são informações relevantes, mas dá para melhorar, vamos reordenar os itens e observar a frequência cumulativa que cada término representa. 

Exemplo: Avaliando a frequência do resultado

Quantas SemanasSegunda-feira da Semana de TérminoQuantidade de Rodadas com esse encerramentoFrequência cumulativa
1329/04/2024225
1406/05/2024362,5
1513/05/2024287,5
1620/05/20241100
Frequência cumulativa do resultado.

A conta da frequência é: Quantidade de Rodadas com o encerramento dividido pelo total de rodadas. Por exemplo: 2 rodadas terminaram no dia 29/04/2024, então 2 ÷ 8 x 100 = 25%. 3 rodadas terminaram no dia 06/05/2024, a conta é 3 ÷ 8 x 100 = 37,5. Como são cumulativos, então  temos que somar os 25% do dia 29/04/2024 e por isso o resultado é 62,5%. A mesma regra se aplica ao dia 13/05/2024. 2 itens terminaram nesse dia 2 ÷ 8 x 100 = 25%, como é cumulativo, temos que somar com o 62,5% e o resultado é 87,5% e assim por diante.  

Quando fica pronto?

Imagina que o meu chefe, Sr. Corleone, pediu um prazo para terminarmos esse backlog. Qual seria a resposta mais adequada?

Se eu falar que nosso time terminará o backlog até o dia 29/04/2024, segundo o algoritmo de Monte Carlo, eu tenho apenas 25% de chance que isso ocorra e uma possibilidade de 75% de eu estar errado. Se eu prometer que termino até o dia 06/05/2024 eu ainda tenho uma chance de errar muito alta, pois a probabilidade de acontecer é de apenas 62,5%. São 37,5% de estar errado. 

O próximo resultado é bem interessante, pois a probabilidade é bem alta. Com ela já podemos responder ao Sr. Corleone da seguinte forma: Chefe, com 87,5% de PROBABILIDADE nós devemos terminar esse backlog em ATÉ 15 semanas o que seria algo em torno do dia 13/05/2024 (segunda-feira) e 17/05/2024 (sexta-feira).

Perceba as ênfases do texto nas palavras: probabilidade e até. Probabilidade, porque mesmo com Monte Carlo ainda podemos errar. No caso, temos 100% - 87,5% = 12,5% de probabilidade de errarmos e só terminarmos na 16ª semana. Já o “até” significa que podemos acabar antes, pois a resposta é um período de 1 semana e não uma data específica. 

Monte Carlo na realidade

É importante ressaltar que aqui fizemos apenas 8 rodadas para fins didáticos, o mínimo exigido e mesmo assim não recomendado para Monte Carlo já começa em centenas de rodadas. Algo entre dezenas de milhares e milhões de rodadas costuma ser aceitável. 

Outra coisa é que entramos apenas com informações de limite de taxas de entrega do time e isso pode induzir o algoritmo ao erro. Por exemplo, se nos últimos 3 meses só alcançamos o limite superior uma única vez, é improvável que ele volte a se repetir. O ideal seria fornecer para o algoritmo as taxas de entrega reais semana a semana, assim ele poderia ponderar a frequência de entrada também. 

Além disso, há outros dados que podem ser informados para trazer um cálculo mais preciso, como feriados longos (Carnaval, Semana Santa)e férias dos membros do time. Até mesmo dados de correlação que podem impactar na taxa de entrega como, por exemplo, pessoas que ficam apenas uma parte do tempo no time ou turnover (saídas de pessoas do time). 

Exemplo de uma distribuição de dados de entrada que segue uma Normal utilizando algorítimo de Monte Carlo
Exemplo de Simulação do Algoritmo de Monte Carlo com frequência de probabilidade. Distribuição Normal

Softwares para te auxiliar a fazer Monte Carlo.

Planilha do Troy Magennis

Já é um tanto lendária a Planilha de Simulação de Monte Carlo do Troy Magennis e você pode obtê-la neste link. As instruções estão em inglês, mas é uma planilha bem interessante e gratuita para você começar a fazer suas simulações.

@Risk

O @Risk (lê-se: at risk) é o produto que eu mais utilizei para fazer simulações de Monte Carlo. Com ele você consegue realizar as milhões de rodadas, indicar qual o formato da distribuição estatística dos dados de entrada e conectá-los com correlações. É um produto bem completo que utiliza o Microsoft Excel como base. 

Riskamp

O Riskamp possui uma versão de teste por 30 dias e também roda em cima do Microsoft Excel. Confesso que utilizei bem pouquinho, mas parece ser completo também.

Dá para fazer Monte Carlo sem software de apoio?

A resposta é depende. Se o prazo que você der for algo que não afetará muito a sua imagem e nem a do seu time, as funções dos pacotes de Análise de Dados disponíveis tanto no Excel quanto no Google Spreadsheet podem ajudar bastante. Todavia, se ao dar um prazo no seu contexto é a mesma coisa que assinar um contrato com sangue dando a família como garantia, eu só o faria com uma ferramenta robusta e muitos dados no histórico. Na maioria dos casos, a planilha do Troy já resolve numa boa. 

Minha dica, utilize a planilha do Troy e vá para uma ferramenta como o @Risk ou Riskmap quando você, seu time e a empresa tiverem maturidade nas decisões direcionadas por dados e estatística. Essas ferramentas são relativamente caras para serem utilizadas logo no início.

Até a próxima!

Compartilhe

Escrito por

Avelino Ferreira Gomes Filho

Trainer na K21


Avelino Ferreira é formado e mestre em Ciência da Computação. Teve uma longa trajetória na TI, começando como programador e chegando a gestor de diversos times de criação de produtos digitais. Conheceu e começou a adotar as melhores prática de de Métodos Ágeis em 2008. Desde então, se dedica a auxiliar outras empresas na construção da cultura ágil. Atualmente, é Consultor e Trainer na K21
Esta postagem se encontra sob a licença Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Artigos relacionados

Métricas DORA: 4 indicadores que medem o sucesso do seu DevOps
02/05/24
4 minutos de leitura
Onde está o gargalo? Gráfico de Detalhamento do Tempo de Espera
29/11/23
4 minutos de leitura
Quando fica pronto? O Histograma do Customer Lead Time te ajuda nessa resposta
08/11/23
10 minutos de leitura
Todo mundo odeia métricas
18/10/23
8 minutos de leitura

    Receba mais conteúdos K21

    Deixe seu nome e email que nós te deixamos por dentro de tudo que rola por aqui.

    Ao informar meus dados, eu concordo com a Política de Privacidade.