Software Estimation Doesn’t Work

Definitions

The phrase “software estimation” means estimating tasks to answer the question “when will this thing get done”.

“Done” means it’s delivered and some end user (a customer, for example) is getting value from it. Those are the general meanings for these terms for this discussion.

Why do we try to estimate software?

Maybe there is a deadline (“This has to be ready for Big Client by December 10th, so they can use it for their end of year accounting period.”) or cash flow consideration (“We need to sell this feature to meet our revenue expectations for the 2nd quarter.”). There may also be dependencies on the work where the expected completion is important for those items.

How Estimations are Typically Given and Used

Example 1, A very common conversation between a product manager and an engineer:

Product Manager: “How long do you think it will take to do this feature? Last week the team pointed this as an 8…”

Engineer: “Well, yeah it’s a lot like that other feature we did 2 months ago, but there’s a change in the data format, I’m not sure we actually handle that yet, and I’ve still have to make sure that the fix we deployed on Tuesday is working. I guess I could get that done by Friday.”

Product Manager: “Ok, so 4 days?”

Example 2, a manager discusses an ongoing bug fix with a customer facing team:

Support Manager: “I can see that this bug fix was started on Monday, but the client is asking about it and we have a call with them at 3pm! Can we get an estimate on when this will be done?”

Engineering Manager: “We don’t know what the root cause is yet, for sure. But we think it’s a problem with an code change we rolled out last week, which changed the APR calculation for all of those reports. We hope to have this fixed in a few days.”

The person trying to plan for a large project will use this information to schedule future work. They will try and calibrate the personal estimate to a real date on the calendar. They are trying to answer the question “When will X be done?” with a concrete answer: “May 7th”.

This is particularly important when establishing trust between a product team and a client. If the answer is wrong, the product will lose the client’s trust. They will perceive the product as less trustworthy. If enough trust is lost, the client may decide to stop buying the product!

What’s Wrong with Estimations?

Information from any estimate will be incorrect because of local safety. Local safety refers to the tendency of the persona giving the estimate of adding time to ensure that they are not late. No one wants to be perceived as being unprofessional and delivering software late would look bad.

Never mind that the person giving the estimate has almost no control over the entire process involved with delivery, may not understand the problem completely, or that the goals of the task will be changed while it’s being worked on. The person will still be stigmatized with being late.

If you doubt this, observe any team using classic Scrum methodology. The typical understanding is that the team doing the work commits to completing a set of work in the given sprint cycle. It is the engineers who are committing to this, no one else. It is the engineers who will be blamed for not meeting the commitment.

This is a perverse incentive that guarantees estimations on “when will X be done” will probably be wrong.

Are Estimations Worthless?

“Plans are worthless, but planning is essential.” – Dwight D. Eisenhower

There are of course plenty of situations where estimations are useful. A person tasked with doing the work may find it a valuable exercise to thoroughly plan their work for a task. The effort to construct a plan, even if flawed, may reveal critical assumptions that can be corrected or raised to management for clarification.

So estimations are not worthless but they are potentially counter-productive for planning a software construction schedule.

What to do instead of estimating?

The short answer is “yesterday’s weather”, a term that refers to using actual data to forecast future conditions.

One of the best tool sets for forecasting can be found here, at the Focused Objective site. The site also features classes and workshops where the math behind the tools is explained in a very approachable manner.

Know when software will be done. Install this free plugin for JIRA now with a free plugin that generates a forecast report current and planned issues.

Leave a comment