Sunday, November 7, 2010

Real World Agile - Week 3: How I Learned to Stop Worrying and Love the Story Board


Ever have one of those weeks where you were only working on one project, no support or maintenance calls came in and all your customers and stakeholders got exactly what they wanted?

Me neither.

Business As Usual
Without any system to handle customer requests, they just come in as they pop up. One week it's a feature on a product another week, a different feature and maybe in that same week a different customer has a feature she wants added on a different system altogether. Meanwhile, we are also handling bug fixes and regular maintenance requests, answering email and going to meetings.

In this chaotic system estimating how long a feature or product will take is difficult to impossible as we succumb to the tyranny of the urgent or whomever is most vocal and are left with a trail of half finished features, frustrated customers and only the most urgent (but not necessarily most important) things done.

Enter the story board
Under our current Agile experiment, things are a bit different. We still have the requests coming in week after week, we still have requests to handle, bugs to fix and meetings to attend; but we have something else as well - the story board.

If our previous take-it-as-it-comes system was chaotic, the story board is order. It is deceptive in its simplicity: a white board with rows of sticky notes. Green sticky notes on the left representing our stories, or major objectives, for the week and next to each story, a row of yellow sticky notes representing the tasks needed to complete the story.

The board is an artifact of our weekly planning session. We look at all the things that need to get done and choose up to ten stories for the week. But there's a catch - we've allocated a number of points to each story depending on how big or complex we thing it is. We can only choose stories that add up to the amount of points we completed last week; that's our budget. That's the general idea anyway - it's a bit more complicated than that since we're new at this and still trying to figure out what our weekly budget, or velocity, is.

There is one more thing that makes this system work. We have an agreement to only complete the stories on the board. New feature requests can come in during the week, but they won't be started until they get on the board, which could happen during the next planning session. The product owners decide what the most important features are for the week, prioritize the backlog and pick out as many stories as fit the budget.

The payoff: getting stuff done
The story board doesn't change the amount of things we need to get done, but it does help us get the most import things (as defined by the product owners) done. During the week we can see tasks and stories moving into the done column. The developers know that new requests will not interrupt the flow of the current work and requesters know that if it's important enough we'll be working on the story in less than a week. That means we're becoming more predictable, which managers and product owners like, even if they don't necessarily like waiting.

There is another intangible element to this that can't be understated - being energized by success. Seeing tasks and stories move into the done column is a good feeling. The visible indicator that we're actually accomplishing what we said we would is an affirmation that the Agile experiment is working. This is my favorite part of Agile so far - the cats are being herded.

Final thoughts
The story board isn't a silver bullet; we still have challenges. For instance, we've had to plan without the product owners present, making our best guess as to the priorities for the week. We also had to move our planning session a day later for one of the iterations, which throws off the rhythm of the week and made a bit of a hash of the point budget.

Along with the story board, we also use software to track story and task progress. The reason for this is we have a bit of a distributed team. Ideally, we'd all be able to sit where we could see the board and collaborate on the stories face to face. Unfortunately, we have one developer in a different time zone and some organizational distribution that makes true co-location impossible. Software is a good solution, but really isn't a substitute for a white board and sticky notes.

Even with these challenges, the story board has been a huge success in my mind. It gives me focus for the week, helps me prioritize my work and breaks big features down into bite size chunks.

Does this resonate with your experience? What are the challenges you've had with planning and completing stories and how did you overcome them? Share your thoughts - I'd love to hear them and I'm sure others would as well.