Software Estimation Choices

The process of software estimation is frustrating for software engineers and those who consume their estimates. Consumers often ask “why can these software engineers not just tell me when it will be done?”.

The short answer is the project management triangle, commonly summarised as:

Good, fast, cheap. Choose two.

My software version is slightly different. Instead I’d say:

High quality, full scope, delivery date. Choose two.

Let’s break this down:

⭐ High Quality

This is normally the first to get compromised when engineers are pushed to “work faster”. The compromise is often silent because any bugs or declining code quality are not immediately obvious to the consumer. Constant compromise on quality results in bad software that eventually kills software companies.

Of course, the flip side is that some software engineers will endlessly polish code if given the chance. This is why “high quality” has to be the goal, not perfection.

📦 Full Scope

The “scope” of a software project is generally “how many different use cases do we build this for”. If you want a feature to be everything to everyone: that will take longer.

This can be seen as a “product (manager) decision” instead of a “software (engineer) decision” but it must be a negotiation. There may be things the product manager or customer added to the scope thinking they would take a day but actually take a month. With open, supportive and respectful communication, you can often cut a lot of scope and save a lot of time.

📅 Delivery Date

Software engineers hate inflexible “deadlines”. This is because there are many hidden complexities of software estimation. Most of the time, though, organisations need to know when they can rely on some software being delivered. This becomes a problem only when there’s no wiggle room on quality or scope.

This is also why engineers pad their estimates. “Estimates” are too often treated as “deadlines”. Padding estimates actually makes a lot of sense in low trust/high stakes environments, or with a lot of uncertainty around the work. Good engineers will use the “extra time”, if they have any, to improve quality or scope.


High quality, full scope, delivery date. Choose two.

Remember this and quote this when asked to delivery all three.

The only way you get to not have two is if you demand all three and usually end up with one or zero.

Good luck!