Estimativas fazem parte integral de projetos de software. Seja em horas, dias, pontos, fibonacci, t-shirt sizes ou qualquer outra medida arbitrária, fazemos elas o tempo todo. Projetos que utilizam scrum, por exemplo, fazem estimativas no início de todos os sprints. Metodologias mais tradicionais costumam estimar o projeto antes da execução, estimando o projeto todo a priori.
Mas, afinal, o que são estimativas? Nada mais do que palpites. Às vezes bem embasados, a maioria sem muita informação. São previsões de quanto recurso é necessário para concluir o objetivo. Quando pedimos um orçamento ao mecânico de um conserto no nosso carro, é uma estimativa (que em 110% das vezes, é abaixo do que realmente acaba custando :().
Estimativas não são compromissos
Estimar é tentar adivinhar quanto tempo leva, uma tarefa. E como toda adivinhação, existe a probabilidade de estar errada. Porém, é comum que as outras pessoas vejam essa estimativa como compromisso. E nesses casos, dar uma estimativa é como assinar um contrato. Tentar voltar atrás é muito difícil e às vezes, bastante desconfortável.
Estimativas são previsões, encare-as como tal. O que puder dar errado, provavelmente vai dar errado.
Estimativas tem um custo
Nenhuma estimativa deve ser tirada do chapéu do mágico. É preciso embasamento, levantamento de informações e uma compreensão dessas informações. Análises devem ser feitas para chegar a uma solução plausível. Estimar antes disso é tão bom quanto jogar uma moeda pra cima.
Executar tudo isso toma tempo, e tem um custo. Isso deve ser levado em conta no projeto.
Estimativas precisam embasar decisões
Exatamente por estimativas terem um custo, que no geral é alto, qualquer estimativa deve ter um propósito. Deve apoiar uma decisão. Ser fundamental em outro processo. Caso contrário, é só desperdício.
Sem um porquê claro, evite.
Esforço não significa progresso
Muitas vezes demoramos muito tempo em algo que acaba por não produzir muito valor ou não tem o resultado esperado. Estimar levando em conta só o tempo de trabalho, e não contamos com o fato de que só fazer o trabalho não é o suficiente. Em desenvolvimento, levar em conta só o tempo em que o código é escrito é um erro tremendo e vocẽ vai estar atrasado 99% das vezes.
Estimativas ignoram outros fatores
A grande maioria das estimativas considera apenas o caminho feliz. Onde tudo está certo, dá certo e o trabalho flui. O que difere muito da realidade. É preciso contar também a possibilidade de termos problemas durante o trabalho, imprevistos, dúvidas.
Especialmente em estimativas de projetos como um todo, é muito comum que o esforço contado seja apenas o operacional, o trabalho em desenvolver o projeto em si, ignorando uma série de outros fatores que são importantíssimos e muitas vezes até maiores do que o próprio trabalho e desenvolvimento, que são os casos do tempo e esforço de planejamento, testes, correções e o principal: comunicação.
Conclusão
Com seus prós e contras, estimativas são ferramentas. Saber usá-las bem é o papel de um profissional. Assim como saber onde não usar. Ter cuidado e considerar as trade-offs é o segredo de qualquer ferramenta. Estimativas não são diferentes.