Antes de ir longe demais, deixe-me dizer que a estimativa de software: desmistificando a arte negra é um excelente recurso para as pessoas que olham e pensam em estimativas. Ambas as imagens abaixo são desse livro, assim como o núcleo, se as idéias apresentadas a seguir.
Como você observou, as estimativas são uma parte importante para prever e planejar com precisão o trabalho. Não ter estimativas torna os negócios cegos sobre quanto tempo algo levará. Não é incomum que as empresas tenham uma idéia completamente equivocada de quanto tempo as coisas levarão - o que eles acham fácil leva de seis a oito semanas e o que é considerado difícil é um truque de sexta à tarde.
A primeira coisa é dar uma estimativa. Uma estimativa em si não é um número único - isso é um compromisso. "Quanto tempo o ABC levará" -> "Cerca de 5 dias" significa que são cerca de 5 dias. No entanto, uma boa estimativa é um intervalo em que você tem 90% de confiança de que o terá nesse intervalo. Se você quer dizer "Estou 90% confiante de que levará entre 1 e 5 dias", diga isso. Não trabalhe com "Acho que levará entre 1 e 10 dias, portanto, provavelmente 5 dias é sobre a média" - isso não é uma estimativa e você estará errado 50% do tempo.
Bem, 50% ou mais do tempo, os programadores são subestimadores notórios nos tempos das tarefas.
Considere o cone da incerteza:
Imagem de http://www.construx.com - artigo completo em http://www.construx.com/Thought_Leadership/Books/The_Cone_of_Unertosty/
Perceba que a primeira estimativa nesse intervalo é 16x. É como dizer "acho que vai demorar entre uma tarde e duas semanas" - mas você ainda não sabe. À medida que você avança um pouco no design, o alcance diminui para 4x. Isso não significa que levará uma semana, significa que você estaria dizendo "depois de analisar isso um pouco, levará entre três semanas" - sim, a estimativa subiu, mas também o intervalo da estimativa foi baixa.
Com cada estimativa que você fornecer, você precisa ter 90% de certeza de que a estimativa está dentro desse intervalo. Você pode estar errado - 10% das vezes ele fica fora desse intervalo.
Existem várias maneiras de estimar o tamanho dos projetos. Comparando-o com projetos anteriores, usando um proxy (acho que seriam necessárias 1000 linhas de código que levariam tanto tempo para serem escritas), usando pontos de função (para converter em LOC ...), obtendo estimativas de várias pessoas e depois refinando iterativamente ... alguns trabalhos para alguns projetos, outros trabalhos para outros projetos.
Um capítulo muito importante deste livro que mencionei no topo é o nº 23, que lida com a política de estimativa e com gerentes e executivos.
A chave para uma estimativa é o processo iterativo de refiná-la depois de trabalhar um pouco nela.
Fornecer uma estimativa muito precisa muito cedo no processo pode ser muito propenso a erros. Se você não tiver certeza disso, forneça a estimativa ampla e volte com outra estimativa após algum período de tempo para obter mais informações sobre o problema e, possivelmente, esboçar como você o fará, observando quanto código você o escreveu. o último problema semelhante e outros fatores que impactarão a estimativa.
As estimativas exigem um pouco de reflexão - não exagere nas estimativas do manguito. Eles geralmente têm erros enormes associados a eles em comparação com o que é preciso quando você pensa um pouco sobre isso.
De Como responder quando lhe pedem uma estimativa?
O que dizer quando solicitada uma estimativa
Você diz "eu voltarei para você".
Você quase sempre obtém melhores resultados se atrasar o processo e passar algum tempo executando as etapas descritas nesta seção. As estimativas fornecidas na máquina de café voltarão (como o café) para assombrá-lo.
Do capítulo 4 da estimativa de software:
Observe que, nisso, as estimativas após um pouco de revisão são sistematicamente menos selvagens e propensas a erros do que as estimativas fora do manguito. Não faça as estimativas do manguito. Sente-se, pense na tarefa e faça uma estimativa depois de um pouco de reflexão.