Coding, Fast and Slow: Developers and the Psychology of Overconfidence
This is an excellent take on why (we the) developers suck at time estimations. Ā Basically, it boils down to two reasons: unknown details of the project and overconfendence.
First off, there are, I believe, really two reasons why weāre so bad at making estimates. The first is the sort of irreducible one: writing software involves figuring out something in such incredibly precise detail that you can tell a computer how to do it. And the problem is that, hidden in the parts you donāt fully understand when you start, there are often these problems that will explode and just utterly screwĀ you.
And this is genuinely irreducible. If you do āfully understandā something, youāve got a library or existing piece of software that does that thing, and youāre not writing anything. Otherwise, there is uncertainty, and it will often blow up. And those blow ups can take anywhere from one day to one year to beyond the heat death of the universe toĀ resolve.
Read the whole thing, it’s worth it.

