Como estimar prazos precisos e imprecisos

4 de março de 2010  |  Opinião  | 

Ilustração de hartboy

Definir quanto tempo será necessário para finalizar uma tarefa ou o desenvolvimento de um software não é (ou pelo menos não deveria ser) algo trivial. Estimar prazos faz parte do nosso dia-a-dia como programadores.

O que muita gente não se dá conta é que a precisão com que um programador prevê a entrega de tarefas e projetos é um poderoso indicador do quão bom ele é.

Para informar de forma precisa o tempo necessário para a realização de algo em desenvolvimento de software é necessário que o programador possua uma certa experiência no assunto, tenha um bom domínio do negócio, seja rápido e produtivo.

Embora muitos de nós não apreciem essa difícil tarefa, estimar prazos é parte do nosso trabalho. Fazer isso bem pode ser a diferença entre um programador profissional e um amador.

Em um dia normal, estamos estimando prazos o tempo todo. Ao colocar a comida no micro-ondas você deve informar quantos minutos serão necessários para esquenta-la. Se você tem um horário fixo para acordar, deve analisar quantas horas de sono serão suficientes e então decidir quando deve ir para a cama.

O segredo não está no tempo, mas em quão precisa deve ser a sua estimativa. Se seu chefe pergunta que horas você entregará o relatório amanhã, ele quer ter uma ideia se será antes ou depois do almoço. Se ele lhe pergunta quanto tempo será necessário para resolver um bug critico e colocar o sistema de volta em produção ele precisa de uma precisão maior.

A escala de tempo é muito importante ao se estimar prazos. Por exemplo, você pode dizer “O projeto será entregue em 25 dias” ou pode dizer “O projeto será entregue em cerca de 5 semanas”. Embora ambas as frases indiquem o mesmo tempo, o efeito sob cada uma delas pode ser diferente. Ao dar a primeira resposta, seu cliente provavelmente anotará na agenda dele o dia exato em que você entregará o projeto. Por outro lado, a segunda resposta fará com que ele lhe procure a qualquer momento daqui a 4 ou 6 semanas.

O livro The Pragmatic Programmer dá uma importante dica que nos ajuda a escolher a escala de tempo apropriada ao estimar prazos. Veja a tabela:

1-15 dias -> dias
3-8 semanas -> semanas
8-30 semanas -> meses
30 + semanas -> pense bem antes de dar uma estimativa

Qual a vantagem disso? O fato é que quanto maior o tempo, mais difícil é a previsão, exigindo que você seja cada vez mais impreciso. Por exemplo, se sua estimativa é que serão necessários 125 dias para terminar um trabalho, é muito mais seguro dizer que precisará de “cerca de 6 meses” para finaliza-lo.

Todas as estimativas que fazemos são baseadas em nossas experiências passadas. Mas, o que fazer quando é necessário estimar algo que você nunca fez ou que não conhece? A resposta é simples: “não estime”. É melhor pedir para que alguém que já tenha feito algo semelhante lhe dê uma ideia do tempo necessário.

Além de considerar o grau de precisão, também é importante entender qual é o problema antes de começar a chutar um tempo. Quase sempre nossas estimativas dependem de outros fatores para darem certo: “Supondo que não haja trânsito dá para chegar aí em 20 minutos”.

Se possível é muito útil testar alguns aspectos do projeto antes de dizer quanto tempo será necessário para cumpri-lo. Se o sistema precisa ser carregado dentro do Facebook, seria muito bom poder gastar um tempo criando alguma coisa bem simples para esta plataforma afim de analisar o grau de complexidade, isto sem dúvida aumentará a precisão da estimativa.

É muito importante levar em consideração que a equipe, sua produtividade e o ambiente afetam diretamente sua estimativa.

Analisando todos estes fatores, a conclusão é que há apenas uma única resposta correta a se dar quando lhe é pedido para estimar um prazo: “Me dê algum tempo para pensar”. Você sempre terá resultados melhores se retardar a resposta e pensar um pouco mais.


15 Comentários


  1. Carlos Brando e sua objetividade cortante mais que um bisturi.

    Parabéns pelo artigo, sempre muito bom!

  2. Olá Carlos,
    Bacana o post… já vi mtos programadores dizem que determinada tarefa pode levar de dois meses a um ano (de pirraça), quando algum gerente insiste em pedir uma data, mesmo que ninguém tenha noção de como fazer algo.

    Abraço

  3. O que complica a estimativa, é que vc não consegue dar um tempo a partir do problema puro. É preciso pensar na solução para dar o tempo e pensar na solução em si já leva um tempo.

    O complicante final é que vc nem sempre consegue prever todas as consequências da solução e algumas deles afetam fortemente a estimativa.

    Wicked Problem na veia :P

  4. Salvo no meu bookmark!

  5. Carlos ótimo artigo!

    Minha opinião e muito interessante se ter uma boa documentação dos projetos , pois são elas que permitem estipular prazos reais e seguros, definir prazos somente baseando-se na experiência, no meu caso foi prejudicial em alguns aspectos, o principal deles foi o fato de que eu e meus companheiros acabamos nos esquecendo de detalhes que tivemos dificuldades nos sistemas que já havíamos construído, e isso levava em alguns casos, a repetirmos o mesmo erro, e gastar tempo resolvendo eles, porém uma boa documentação só ajuda se for pouco burocrática.

  6. Ótimo assunto e sua abordagem foi muito interessante. Estimativas de prazos é uma coisa difícil de fazer. O que vocês acham quanto Pontos de Função?

  7. Os maiores complicadores relacionados aos prazos são na minha opinião: o fator imprevisto, que sempre há, e – como o próprio Carlos disse – o não conhecer a solução do problema.

  8. Parabéns Carlos, esse é um assunto que poucos gostamos de dar opinião. E, aproveitando a oportunidade, uma boa prática que aprendi a duras penas é: “Sempre peça a opinião de pelo menos mais um desenvolvedor”.

    Técnicas como planning poker (http://www.planningpoker.com/) são muito eficientes para, além de pedir várias opiniões, não influenciar uma estimativa a partir da visão de um desenvolvedor mais sênior ou mais influente.

    []‘s

  9. Achei bem legal o artigo. Se me permite, gostaria de acrescenter algo:

    Quando fornecemos estimativas, precisa ficar bem claro pra quem recebe que esse tempo pode falhar caso não corra tudo como o esperado. A alternativa seria colocar uma gordura nesse tempo, o que eu sou totalmente contra. Digo isso pois muitos clientes recebem a estimativa e consideram esta com um prazo, entendendo que é exato. Isso gera muitos problemas. É muito importante esclarecer antes para o cliente a natureza do nosso trabalho (empírico) para evitar dores de cabeça.

    []s

  10. Simplesmente fantástico esse post.
    Convivo com estimativas de tempo diariamente (inclusive, fiz isso 2 vezes hoje).
    Mesmo possuindo uma certa experiência, ainda sinto algumas dificuldades na hora de estimar um prazo.

    Seu post me fez refletir mais a respeito.
    Muito obrigado!

    Abraços

  11. Estimativas de prazos é uma coisa difícil de fazer.

  12. Estimativas de prazos é uma coisa difícil de fazer.
    Thanks.

Trackbacks

  1. Habilidades não técnicas de um DBA :: Tutoriais CTDO - Sua Base de Tutoriais Online

Deixe um comentário