In the previous blog in this series, The Art of Guesstimation: Estimation on Software Projects, we explored the differences between guesstimates and estimates, and in this blog I will use the term estimate to refer to both. Because estimation isn’t limited to projects I will use the term endeavor to refer to efforts that are organized either as a project or as a non-project. As Simon Sinek suggests in Start With Why: How Great Leaders Inspire Everyone to Take Action we should start by explaining why something is important. From that point of view, it makes sense to ask why should invest the effort to estimate the time or cost of an endeavor?
Estimates are often required for several reasons:
- We want to allocate funding for an endeavor. We are often asked to estimate the cost of the next stage of an endeavor, be that the work required to build the next release of a system or the work for the next stage of a project. Cost estimates are often required as input into the decision process around fund allocation within your organization’s portfolio management efforts.
- We want to financially govern our endeavors. Allocating funds to endeavors is an important initial step but we should also monitor how those funds are spent over time. Organizations that are new to financial governance will often choose to track actual expenses against estimated costs, perhaps calculating the cost performance index (CPI) from Earned Value Management (EVM). EVM is a common strategy for teams taking a traditional/serial approach, sometimes called a “predictive” approach, and some organizations will apply EVM to agile teams as well. As organizations mature and adopt more effective ways of working, such as those captured in the Disciplined Agile (DA) toolkit, they learn it is better to focus on tracking value delivery rather than cost. Instead of asking “Will we be on budget?” they instead ask “Are we investing our money wisely?” These are two very different questions, the latter producing better outcomes through greater discipline.
- We need to coordinate our efforts with others. Other teams will have dependencies on what our team delivers, and as a result we will need to estimate the time required to produce what they require and when we expect to make it available to them. This is particularly common when our customers need to do their own planning around our delivery dates. For example, if we’re a construction company building a new home for someone our customers will want to know when it will be ready to be moved into. Or perhaps our team is building a system where some of the software components will be reused by other teams. In this case these teams may want to know when the interface for the component will be defined, when the test harness for that component is in place, and when the team intends to deploy the working component into production.
- We want to govern our timelines. Just like we want to govern our financials we also need to govern our timelines. EVM’s Schedule Performance Index (SPI) calculation can be applied to determine a team’s variance from their estimated timeline. This can be particularly important when our team has a hard date to hit, perhaps due to regulatory compliance or a contractually promised delivery date. Unfortunately SPI can give a false sense of security to teams following a traditional/serial strategy, particularly traditional software teams because they tend to push a lot of their risks to the end of the lifecycle. On traditional software projects CPI and SPI indicators can be tracking well until you get to system integration testing (SIT) or user acceptance testing (UAT) where (surprise!) your project runs aground because when you finally detect serious quality problems that prevent you from shipping. Disciplined organizations have instead shifted from the question “Are we on schedule?” to instead focus on answering “Are we deliver value to our customers when they actually need it?” The latter question motivates better behavior by the team because it reflects that fact that the needs of our customers will evolve as their situation changes over time. In other words, delivering something on schedule that people no longer want should hardly be considered a success.
To summarize, there are several reasons why we should consider investing the time and money required to produce estimates. In the next blog in this series I will explore reasons for why you don’t want to invest effort in estimating.