Home > Sample chapters > Software Engineering > Software engineering practices

Demystifying the Black Art of Software Estimation: What Is an "Estimate"?

Relationship Between Estimates and Plans

Estimation and planning are related topics, but estimation is not planning, and planning is not estimation. Estimation should be treated as an unbiased, analytical process; planning should be treated as a biased, goal-seeking process. With estimation, it’s hazardous to want the estimate to come out to any particular answer. The goal is accuracy; the goal is not to seek a particular result. But the goal of planning is to seek a particular result. We deliberately (and appropriately) bias our plans to achieve specific outcomes. We plan specific means to reach a specific end.

Estimates form the foundation for the plans, but the plans don’t have to be the same as the estimates. If the estimates are dramatically different from the targets, the project plans will need to recognize that gap and account for a high level of risk. If the estimates are close to the targets, then the plans can assume less risk.

Both estimation and planning are important, but the fundamental differences between the two activities mean that combining the two tends to lead to poor estimates and poor plans. The presence of a strong planning target can lead to substitution of the target for an analytically derived estimate; project members might even refer to the target as an “estimate,” giving it a halo of objectivity that it doesn’t deserve.

Here are examples of planning considerations that depend in part on accurate estimates:

  • Creating a detailed schedule

  • Identifying a project’s critical path

  • Creating a complete work breakdown structure

  • Prioritizing functionality for delivery

  • Breaking a project into iterations

Accurate estimates support better work in each of these areas (and Chapter 21, “Estimating Planning Parameters,” goes into more detail on these topics).

Communicating about Estimates, Targets, and Commitments

One implication of the close and sometimes confusing relationship between estimation and planning is that project stakeholders sometimes miscommunicate about these activities. Here’s an example of a typical miscommunication:

Executive: How long do you think this project will take? We need to have this software ready in 3 months for a trade show. I can’t give you any more team members, so you’ll have to do the work with your current staff. Here’s a list of the features we’ll need.

Project Lead: OK, let me crunch some numbers, and get back to you.

Later...

Project Lead: We’ve estimated the project will take 5 months.

Executive: Five months!? Didn’t you hear me? I said we needed to have this software ready in 3 months for a trade show!

In this interaction, the project lead will probably walk away thinking that the executive is irrational, because he is asking for the team to deliver 5 months’ worth of functionality in 3 months. The executive will walk away thinking that the project lead doesn’t “get” the business reality, because he doesn’t understand how important it is to be ready for the trade show in 3 months.

Note in this example that the executive was not really asking for an estimate; he was asking the project lead to come up with a plan to hit a target. Most executives don’t have the technical background that would allow them to make fine distinctions between estimates, targets, commitments, and plans. So it becomes the technical leader’s responsibility to translate the executive’s request into more specific technical terms.

Here’s a more productive way that the interaction could go:

Executive: How long do you think this project will take? We need to have this software ready in 3 months for a trade show. I can’t give you any more team members, so you’ll have to do the work with your current staff. Here’s a list of the features we’ll need.

Project Lead: Let me make sure I understand what you’re asking for. Is it more important for us to deliver 100% of these features, or is it more important to have something ready for the trade show?

Executive: We have to have something ready for the trade show. We’d like to have 100% of those features if possible.

Project Lead: I want to be sure I follow through on your priorities as best I can. If it turns out that we can’t deliver 100% of the features by the trade show, should we be ready to ship what we’ve got at trade show time, or should we plan to slip the ship date beyond the trade show?

Executive: We have to have something for the trade show, so if push comes to shove, we have to ship something, even if it isn’t 100% of what we want.

Project Lead: OK, I’ll come up with a plan for delivering as many features as we can in the next 3 months.