Coding, Fast and Slow: Developers and the Psychology of Overconfidence

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.

Product Management vs. Program Management at Microsoft

Product Management vs. Program Management at Microsoft

Product Management tends to be about answering questions such as why a product should be built and what features should be added to existing products. Program Management is more about answering questions such as when features should be delivered and how they should be exposed to customers. Depending on the division at Microsoft program managers may have more or less influence than product managers on answering the questions about what features are built.

How To Survive a Ground-Up Rewrite Without Losing Your Sanity

How To Survive a Ground-Up Rewrite Without Losing Your Sanity

Developers tend to spectacularly underestimate the effort involved in such a rewrite (more on that below), and spectacularly overestimate the value generated (more on that below, as well).