Summary, in case you don't want to read the wiki article:
- Get a list of tasks you want to do for the upcoming iteration
- For each task:
2.1 Discuss with the group what it entails
2.2 Everyone writes down / selects an estimation of how much effort is required for the task
2.3 Everyone reveals their estimation
2.4 The highest and lowest outliers explain their reasoning
2.5 Repeat until a consensus is reached
Usually something similar to numbers from the Fibonacci sequence like 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100 are the allowed values, so you don't get long arguments over close values like 23 vs 27.
Further, the numbers represent a unit-less value of effort, whose value is determined by a baseline task that everyone agrees equals about a 1, and all else is relative to that.
Ultimately, the goal is to get a good feel for a given team's "velocity", which is the number of these points that can be completed in a given iteration. With that, it's possible to make reasonably accurate estimates of how long any given feature will take.
We did this at iteration planning meetings at one company I worked at, and I thought it was one of the few good things about that particular company. So, what I'm wondering is, has anyone used this? Do you think it's a useful tool for estimation? Does it work in all situations, or does it lend itself to certain teams, projects, etc?