I'm thinking of buying a new car. So I've put together a list of cars to consider. Here they are in priority order:
- Bugatti Veyron Super Sports
- Pagani Zonda Clinque Roadster
- Lamborghini Reventon
- McLaren F1
- Koenigsegg CCX
- Porsche Carrera GT
- Aston Martin Vanquish
- Toyota Prius
- Toyota Camry
- Tata Nano
Unfortunately, though, I'm not sure I can afford my top priority car. So let me put some points on each car. I'll start with the least desirable car and put a 1 on it, a 2 on the next car, etc. That reorders our list so with points on each car we get:
- Tata Nano
- Toyota Camry
- Toyota Prius
- Aston Martin Vanquish
- Porsche Carrera GT
- Koenigsegg CCX
- McLaren F1
- Lamborghini Reventon
- Pagani Zonda Clinque Roadster
- Bugatti Veyron Super Sports
Now I think about my personal spending limits and I can spend between $25-$50k on a car. I'd like to be closer to $25k but a good salesman might get $40-50k out of me. Since the Tata Nano (at one point) goes for about $2500 that means I can afford between 10-20 points. So, looking at the list again and the points assigned to each car, I think I'm going to buy a Bugatti (10 points), a Pagani (9) and a Tata (1 point). Unfortunately, when I show up at the Bugatti dealer, I am somewhat informed that the Veyron lists for $2,400,000. What went wrong here? The problem is that points are not a ranking. When we rank product backlog (or car backlog) items we use ordinal numbers (such as first, second, third). We cannot add ordinal numbers together. We cannot say that the distance between first and second is the same as from second to third. The Bugatti in this example is not ten times the cost of the Tata. Ranking stories (or cars) like this is worthless. We want story points to instead reflect the relative effort involved. For cars we could put points on as follows:
Tato Nano | 1 |
---|---|
Toyota Camry | 12 |
Toyota Prius | 14 |
Aston Martin Vanquish | 102 |
Porsche Carrera GT | 193 |
Koenigsegg CCX | 218 |
McLaren F1 | 388 |
Lamborghini Reventon | 640 |
Pagani Zonda Clinque Roadster | 740 |
Bugatti Veyron Super Sports | 960 |
These points are of course based on the relative costs of these cars. I need to be able to do the math on these estimates that someone would want to do. Someone can afford 20 points on a car--which should they buy? Should I buy this item for 10 points or those other two for 5 points each? You can't do that when points are assigned via a ranking. Story points on an agile product backlog represent the effort to implement the backlog item. Since cost on most software projects is made up almost exclusively of labor (rather than buying parts), we can think of a story point estimate on the product backlog as being the cost, as in the car example here. And, when I look at the relative costs here, I can tell I belong in the Toyota dealership rather than the Bugatti dealership.