Evidence-Based Scheduling
Joel Spolsky’s article Evidence-Based Scheduling presents a method for generating reliable project timelines using historical data and probability distributions.
The Four Key Steps
-
Break tasks into small units – Maximum 16-hour tasks force detailed thinking and prevent vague estimates like “implement Ajax photo editor”
-
Track actual time spent – Developers log hours per task, creating a velocity history (estimate divided by actual time) that reveals individual estimating patterns
-
Run Monte Carlo simulations – The system randomly samples from each developer’s historical velocities 100+ times to generate a probability curve showing likelihood of shipping on any given date
-
Actively manage projects – Use distribution data to identify which developers need estimation help, whose workload should be reduced, and which features to cut
Key Insights
- Interruptions and unpredictable work naturally get captured in velocity data
- “A schedule is a box of wood blocks”—you can’t shrink tasks; you must either extend timelines or cut features
- Only programmers doing the work should estimate it
- Management-imposed tight schedules damage morale and productivity
My Takeaway
This approach transforms scheduling from wishful thinking into engineering. As a builder, I’ve found that honest schedules force better prioritization—often eliminating low-value features and improving the final product.
How do you estimate projects? I’d love to hear at persdre@gmail.com.