We engineers are terrible at estimating timelines. Here’s a neat trick -
- break it into major pieces and estimate the time for each
- make it 1.5x, because, you know, testing
- now, double it, because your initial estimates were way off :)
Why? Because we almost never account for everything: time to build, test, deploy, people falling sick, holidays, code reviews, iterations, changes in requirements, delays from dependent teams, integrations breaking, compliance, and so much more.
We almost always underestimate the effort required and overestimate our abilities and situations. One time, I gave an estimate of a task to be one week because it seemed simple, but it took me about 4 weeks to wrap up end-to-end.