Why are software development estimates regularly off by a factor of 2-3?
So the article tries to describe the hidden complexity of software with a hiking analogy but then it leaves a huge part missing.  Let's extend the analogy somewhat... this isn't your first hiking trip.  In fact, you've been on dozens and dozens of hiking trips.  You're an experienced hiker.  Yet, why do you continue to give meaningless as-the-crow-flies estimates of how long it will take you to get to your destination?  The reason is that if you miss your estimate, it probably won't matter.  Your sherpas will be there at every stop with your food, water, and tent.  You have nowhere to be any time soon, so estimating your time just isn't important enough to worry about.Developer estimates are regularly off because they seldom impact the developer directly.  Experienced development managers will pad the hell out of the developers who give them the worst estimates.  Most developers will explain all the complexity of what threw their estimate off without acknowledging the huge mistake of not anticipating extra complexity in the first place.My estimates in my early career were no better than anyone else's, ie way off -- especially for more complex projects.  I'd explain what happened to my managers and soldier on.  The very next task that came up, I'd give my manager some best-case estimate of how long something would take and the cycle would begin again.That all changed once I started to do consulting for myself using "not-to-exceed" pricing.  The first multi-month project I did killed me.  My effective hourly rate went down to sub McDonalds levels and took much longer to deliver than I had expected.  After that project, I did a post-mortem on the project to figure out where I went wrong.  I came up with several spreadsheet templates and checklists to run through before giving any more estimates.Mostly I just concerned myself with getting a hell of a lot better at estimating project duration and difficulty.  Like most things, when you really pay attention to it and practice it, you get better at it.