I like celebrating on successes, whether it is making a test pass, finishing a task on a story or finishing the story itself. I also love celebrating what we have achieved in an iteration. If we complete 15 story points in one iteration - Great :). If we completed 20 points in the last iteration, well it was still great - we added 15 points worth of value to the application.
It is because of this love of celebrating successes that I really hate signing up to delivering a certain amount of points or certain stories at the start of an iteration (commonly in IPMs).
I have heard the reasons for signing up to what you deliver in the iteration including having a clear goal about what will be achieved that week; knowing how many stories we think we can cover so that the BAs can plan and define the stories for the next iteration; and you won’t know how fast you can go if you don’t say how many points you will achieve. I have counter-arguments to these (of course).
The first: having a clear goal about what will be achieved in that iteration. If you don’t sign up to stories, how will you know what goal you are working towards? Easy - we are working on the current release. Our goal for the iteration is actually to complete as many stories for the release that we can achieve. The business can still prioritize top stories, so we know which stories we should deliver first, but our actual goal of the iteration is to work through as many stories in the backlog as possible.
The second: knowing how many stories we think we can cover so that the BAs can plan and define the stories for the next iteration. If you have a look at how I would run a IPM-less project, you can see that the BA will always have know when they need to start defining the next lot of stories, governed by how full the bucket is.
The third: You don’t know how fast you can go if you don’t say how many points you will achieve. Agh, my favorite argument, worthy of its own post. I will just touch briefly on it. Sometimes, people say “last iteration we said we would complete 20 stories, but we only completed 17 stories. This week, lets say we will achieve 20 stories again so we can improve on last iterations effort”. That is all very well, but this is just an arbitrary number. Without the goal of completing 20 points, I could say “so far in this iteration, we have achieved 12 points. We have 2 more days left - hey if we work well then we can beat that this iteration”. Knowing how fast you can go is only relevant when working out when the release will be deliverable, and this can always be done with yesterday’s weather.
How would I do it?
At the beginning of the release, you have a backlog of the stories for the release with estimates on them, so you can gauge how long you think the release will take to complete (there is no difference here). Then, you identify which stories are the most risky to play (which will deliver value) and ones which have to be played first and you prioritize the top 10 (at this stage this is just an arbitrary number, depending on the number of pairs you have). You then have a bucket which holds top 5 (again, arbitrary) stories.
Working in this manner has many advantages:
I would still hold weekly showcases, where you celebrate all that you achieved that week and weekly retrospectives, where you can talk about what will make us go faster.
I still believe in iterations: just not IPMs.