Evidence-based scheduling

Evidence-based scheduling is a software estimation approach created by Joel Spolsky, a commentator on software engineering principles. Evidence-based Scheduling is based on at least two core ideas: including all time spent, and using a Monte Carlo completion date prediction method. Evidence-based scheduling is an example of an evidence-based practice.

Including all time spent
One of the core ideas of evidence-based scheduling, that adds to the normal estimation practices, is the idea of including all time spent, regardless of relevance.

Most people, when estimating, measure the time they actually spend on a project – classic Time Accounting categories such as cited in McConnell's Software Project Survival Guide do not allow for accounting for non-project activities. While McConnell goes on to include less obvious activities such as holidays, sick days and project support, he and most others identify such as activities to be separately recorded.

However, recording and attempting to budget for secondary activities often leads to political pressure to drop such activities. In practice, people find themselves unable to avoid them and compensate by working overtime. Similarly, as Spolsky points out, your bosses' stories about his fishing trips, or model helicopter, are both a time-sink and politically dangerous to put on a time-reporting system.

The key insight in evidence-based scheduling is that the only thing which needs measuring is the actual delivery of tasks. Over time, it is assumed that all other distractions will average out. For the purposes of estimation, variations due to interruption will show up as inaccuracies in estimation and will be compensated for by statistical analysis. The reasons for anomalies may come out if the organisation wishes to dig deeper into why people have irregular estimates.

The appeal of this idea is simplicity – the amount of evidence to be created is simply the elapsed time between completing tasks and, another vital point, time spent debugging is applied back to the original task.

Monte Carlo method
Another core idea is the use of the Monte Carlo method to predict project completion dates. This method evaluates how reliable previous estimates have been. Instead of a single completion date, the method results in multiple possible completion dates, each with an associated probability of being correct.