Sim! Devemos estimar.

Uma das maiores causas de erros em estimativas é a facilidade em errar. Os erros nas estimações podem ocorrer por inúmeros motivos, e neste artigo falaremos sobre os principais.
Ronaldo Bianco | 15 de fevereiro de 2023

Artigo desenvolvido em parceria com Gustavo Motta e Giuliano Bertoncello.

O processo de desenvolvimento de software evoluiu muito ao longo dos anos, e cada vez mais as empresas dependem dele diretamente. Gerentes precisam saber como um projeto será feito, o tamanho da equipe que será necessária e por quanto tempo.

Isso desencadeia um custo, que fica muito mais caro caso seja estimado de forma incorreta no momento que deveria ser oportuno para essa definição.

E nisso está a importância da estimativa de um projeto de desenvolvimento de software. Sem ela, é impossível dizer (sem adivinhar) o quanto será necessário de tempo, custo e esforço para tirar um projeto do papel.

Uma das maiores causas de erros em estimativas é a facilidade em errar. Os erros nas estimações podem ocorrer por inúmeros motivos, como:

Falhas no uso de dados históricos do projeto

A falta de comunicação entre a equipe é um fator crucial que por muitas vezes desencadeia um déficit no levantamento do histórico do projeto. Por isso, é sempre muito importante a equipe técnica manter transparência com a pessoa responsável pelo controle de tarefas e levantamento de dados do projeto.

Otimismo demasiado por parte da equipe

Em alguns momentos tendemos a ser otimistas com entregas que no passado já tiveram atrasos. Ao analisar o período anterior, é sempre importante entender o motivo do atraso da demanda, pois fatores externos sempre afetarão o planejamento.

Pensar empiricamente sempre agregará valor em suas estimativas, pois ao se basear em experiências anteriores e na observação de sua equipe, seu planejamento tende a ser mais assertivo.

Alterações no escopo do projeto durante a execução, sem reestimar

No decorrer do projeto há momentos decisivos quando observamos features, ou fluxos que não fazem sentido ao objetivo final da solução. Logo deve-se reestimar algumas peculiaridades ou regras de negócio do projeto.

Junto à gerência podemos trazer esses pontos com a melhor transparência possível, para que se entenda a importância da mudança e como essa mudança impactará o desenvolvimento da solução. Muitas vezes observamos que a entrega pode atrasar devido a essas reestruturações.

Confusão entre estimar e objetivo do projeto

Ao analisar dados antigos ou comparativos de sprints passadas, deve-se sempre ter muita atenção para que os dados levantados estejam alinhados com a gerência do projeto.

São pequenas ações que vão refletir nos seus indicadores no final do projeto, e garantir uma excelência de entrega.

Conhecendo esses erros, fica mais fácil se atentar e prevenir que eles tomem proporções danosas ao projeto. Uma metodologia TOP-DOWN auxilia a evitar que esses erros se propaguem.

Essa metodologia consiste em visualizar o projeto de forma macro, separando e entendendo tarefas desde o início, considerando dados históricos e sem considerar qual desenvolvedor será responsável por cada feature do projeto.

Isso possibilita a visualização e a simulação de cenários diferentes. Uma ferramenta muito utilizada para entender melhor variações no cenário é o Método de Monte Carlo.

Método Monte Carlo

A simulação de Monte Carlo, também chamada de método de Monte Carlo ou simulação estocástica múltipla, é um conjunto de regras matemáticas para estimar possíveis resultados de eventos incertos. O método de Monte Carlo foi inventado por John von Neumann e Stanislaw Ulam durante a Segunda Guerra Mundial para melhorar a tomada de decisões sob incerteza. Nomeado após o famoso cassino da cidade de Mônaco.

Mas como posso utilizar essa metodologia?

Independente do local onde será aplicado, o método utiliza 3 pontos principais, sendo eles:

  1. Configure o modelo preditivo, identificando tanto a variável dependente a ser prevista quanto às variáveis independentes (também conhecidas como variáveis de entrada, risco ou preditor) que conduzirão à predição.

  2. Especifique as distribuições de probabilidade das variáveis independentes. Use dados históricos e/ou a avaliação subjetiva do analista para definir um intervalo de valores possíveis e atribuir pesos de probabilidade para cada um.

  3. Execute simulações repetidamente, gerando valores aleatórios das variáveis independentes. Faça isso até que você obtenha resultados suficientes para compor uma amostra representativa do número quase infinito de combinações possíveis.

Dentro do nosso contexto de desenvolvimento de software, podemos realizar a estimativa aplicando o método de Monte Carlo sobre um determinado conjunto de itens do backlog do projeto, ou o do projeto todo.

A partir do histórico de lead time, o tempo necessário para um card ser concluído desde a sua priorização na sprint, podemos executar várias simulações sobre a quantidade de itens deste backlog.

Cada simulação atribui um tempo de trabalho aleatório para cada tarefa, contra uma variável que determina o grau de incerteza sobre o histórico de lead time. Executando uma quantidade suficientemente grande de simulações, teremos o mapeamento das possibilidades do tempo total necessário para a conclusão do backlog contra a frequência com que cada possibilidade ocorre.

Desta forma, podemos estimar com um grau de probabilidade desejado a partir das possibilidades resultantes das simulações, qual é tempo necessário para concluir o conjunto de tarefas determinado. No gráfico de exemplo abaixo, observa-se que com 90% de probabilidade, será necessário 54 dias para a execução do escopo estimado.

frequenciaxtempo.png

Ao passo que o projeto evolui, teremos valores mais confiáveis para o lead time, já apurados absorvendo as particularidades do contexto de execução, e novas estimativas podem ser calculadas com esta nova base.

Com estas novas estimativas as atividades gerenciais podem ser realizadas com menor grau de risco, conforme a convergência das simulações do método de Monte Carlo são apresentadas durante sua aplicação ao decorrer da evolução do projeto.

Assim, com um método simples, é possível realizar uma estimativa de um projeto de desenvolvimento de software de modo assertivo e evitando grandes surpresas, possibilitando uma melhor tomada de decisão.

Referências

Ronaldo Bianco
Desenvolvedor full-stack e tech leader | Entusiasta de novas tecnologias e desbravador de novos frameworks. Quando não está programando, gosta de praticar esportes, e, se afundar em cultura nerd.