Human beings are terrible at accurately estimating the time required to carry out work, even for tasks that they carry out on a regular basis. So in the software industry, why do we waste so much time and effort trying to estimate projects?
As an experiment, think about something you do every day like taking a shower. Now write down how many minutes you think it takes. The next time you take a shower, actually time yourself using a stopwatch and spot the difference. I'd wager you spent a lot more time showering than you actually think.
The reason for this estimating blind spot is simple: most people, or at least those that work in the software industry that I have met, are generally optimistic and therefore tend to underestimate how long it takes to do things. We therefore unfairly appear to be consistently late when our project estimates don't reflect the reality of the outcomes.
As a thought experiment, picture the following scenario:
You are standing beside an enormous cake, that is taller than you and curves over the horizon to the left and right. From where you stand, you cannot see the whole cake, and can only guess at it's size based on it's height and curvature. What should you do next, spend time trying to estimate the size of the cake, or just start eating?
The cake represents your project of course, and the longer you spend trying to figure out how big it is, the more you delay actually starting. Agile methodologies tell us that it is okay to start a project without all of the information required to complete it (unlike waterfall), but yet somehow I still find organizations stressing to estimate a whole project even when they can't see the far side of the cake, which is at best an optimistic guess. So why bother?