menu

Começando a estimar a duração de um projeto

Por

Em nossos últimos posts, temos falado bastante de Planejamento e Estimativa e vamos dar sequência no assunto neste post. A ideia é falar um pouco de uma técnica/ferramenta que ajuda a identificar, em um nível bem macro ainda, quantas pessoas seriam necessárias para desenvolver um projeto dada uma duração desejada. Bom, vamos lá?

Sistema de sistemas: estimando o projeto

Começando a estimar a duração de um projeto
Uma das características interessantes da Lei de Little é que ela se aplica tanto a um sistema inteiro quanto a seus subsistemas. Assim, podemos falar do sistema de desenvolvimento como parte de algo maior, como por exemplo, o projeto.

“… os resultados aplicam-se a qualquer sistema e, particularmente, a sistemas dentro de sistemas. Assim, em um banco, a fila é um subsistema e cada caixa é também um subsistema. A Lei de Little poderia ser aplicada a cada um, assim como ao todo.” Dimitar Bakardzhiev

O projeto é quebrado em itens que formarão uma fila chamada de “Backlog”. O tamanho dos itens normalmente tem pouca importância (veja nosso post sobre Eficiência do Processo). O que mais importa neste ponto é que temos duas filas, a do projeto (Backlog) e a do desenvolvimento (Pronto para desenvolvimento) e que a vazão dos dois sistemas são iguais.

Estimando o tempo do projeto

Calculamos o tempo total do projeto com a seguinte fórmula:

T = N x (LTd/WIPd)

Vamos lá, só para entender esse primeiro passo.

Para um projeto com 100 itens no backlog (N), um Lead Time médio do desenvolvimento (LTd) de 10 dias e 5 itens em progresso em média (WIPd), teremos a projeção de tempo total do projeto (T):

T = 100 itens x (10 dias / 5 itens)

T = 100 itens x 2 dias por item

T = 200 dias

Estimando o número de pessoas necessárias

Vamos mexer um pouco na fórmula para isolar o WIPd, de forma que permita colocar um Lead Time desejado e ver quantos itens teremos acontecendo em paralelo. Com isso, teremos uma ideia do número de pessoas necessárias.

WIPd = N x (LTd/T)

Vamos imaginar que o backlog do projeto conta com os mesmos 100 itens anteriores, o Lead Time médio de desenvolvimento é de 10 dias, e achamos que 200 dias era demais, precisamos que o projeto seja entregue em 150 dias. Tá, tá, provavelmente a coisa correta a se fazer seria cortar escopo, mas não tem graça para nosso exemplo… ah, e qual cliente aceitaria isso facilmente? 😉

N = 100 itens

LTd = 10 dias

T = 150 dias

WIPd = 100 itens x (10 dias / 150 dias)

WIPd = 100 itens x 0,667

WIPd = 6,67 itens

Desconte desse número o tamanho da fila de desenvolvimento, na imagem mais acima é a coluna “Pronto para desenvolvimento”. Se o limite do número de itens (WIP Limit) dessa coluna for 5, descontando dos 6,67 você terá em média algo próximo de 2 itens. Portanto, duas pessoas seria um bom número para se começar. Ah, só uma opinião, gosto de equipes que adotam a prática da programação em pares, então nesse caso, eu colocaria quatro pessoas para formar duas duplas.

Tipos de trabalho

Se você colocar os dados de distribuição de Lead Time em um histograma, deve perceber que em geral eles são multimodais, pois existem itens de diversos tipos, como por exemplo, Histórias de usuário sem dependências, Histórias de usuário com dependências externas, Defeitos etc.

Você deve isolar os dados de cada tipo e projetá-los de forma separada.

Derivação da fórmula

Ah, se você estiver curioso em como derivamos a fórmula utilizada, veja essa seção, senão, basta pular esse trecho 😉

Começando a estimar a duração de um projeto

Primeiro, vamos rever a Lei de Little

Lead Time médio = WIP médio / Vazão média

O primeiro passo é isolar a Vazão média, portanto a fórmula pode ser reescrita da seguinte forma:

Vazão média = WIP médioLead Time médio

O pulo do gato está em entender que a vazão do projeto é igual à do desenvolvimento.

Então, se a Vazão média do projeto é igual à Vazão médio do desenvolvimento temos:

WIP médio do projeto/Lead Time médio do projeto = WIP médio do desenvolvimento/Lead Time médio do desenvolvimento

O WIP do projeto é o tamanho do backlog (N), e o LT do projeto é o tempo total dele (T):

N/T = WIP médio desenv. / LT médio desenv

Como os dois lados da equação eram a mesma Vazão, portanto:

T =N x (Lead Time médio do desenvolvimento / WIP médio do desenvolvimento)

Previsões determinísticas

Já falamos no nosso post “Trabalhando com poucos dados” para tomar cuidado com previsões determinísticas, o mesmo cuidado aqui é importante. A ideia deste post é apenas dar uma ideia inicial para o planejamento. Outro post que trás esse ponto à tona é o do Raphael Albino “Power of the metrics: Don’t use average to forecast deadlines” (em inglês), vale a pena dar uma lida.

Como já escrevemos muito sobre formas determinísticas, apesar de já ter dado uma “palhinha” no referido post sobre Trabalhando com poucos dados, prometo que finalmente vamos ver como levar em conta a variabilidade e ter formas mais adequadas de passar datas em nossos próximos posts.

Muito obrigado pela preferência e volte sempre 😉

Referências:

About the author: Leonardo Campos

Leonardo Campos trabalha na área de TI desde 2000, atuou boa parte deste tempo como desenvolvedor Java, mas também desenvolveu profissionalmente com Ruby, .NET, VB, PHP e ASP. Desde do começo de 2009 vem atuando com Agile e hoje trabalha na ThoughtWorks Brasil. É estudioso de processos e entusiasta de Lean e Agile, sendo um dos organizadores do Lean Coffee São Paulo e editor da InfoQ. Leonardo é advogado por formação (Universidade Presbiteriana Mackenzie).
LinkedIn
@leonardocampos

Leave your reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Go to top