It will come as no surprise to any agilist that one of the hardest parts of agile development is the ability to split valued, useful work into stories small enough to fit in a sprint. Indeed, team after team has commented on this challenge and they are constantly looking for ways to make this easier, or at least have a variety of techniques to draw on. When you back off a bit for perspective, you also immediately recognize that splitting all user value work, whether it be business or architecture epics, user features, or user stories is actually the primary working metaphor for agile development in general, as building valuable, working, tested increments of code in a short time box, whether sprint or release timebox, requires it. If you can’t do that, then you can’t leave a timebox with potentially shippable code, else you have “hanging chads” littering the development or master code line and you can’t make a sharp turn (be agile) without having to first finish what you should have finished in the last sprint.
So we split and split and split again. The better we are at splitting, the more agile we become.
It’s an important topic, and I’ve provided hints and techniques for splitting user stores and architectural epics in Agile Software Requirements. That’s the best I could do given my experience and what I’ve gleaned from others.
However there is more to be written on this topic, and my colleague, Alex Yakyma from Kyiv, Ukraine has been elaborating on ways to split stories on his website at www.yakyma.com. Alex is an experienced agilist, mathematician and coder, (the parts of my brain I used to use for coding have apparently atrophied over time, oh well….) so he has much in-depth perspective to share through categorizing and examples. He has divided the problem into five categories (types of things to be split). The first post, describing incremental implementation of complex algorithms can be found here: Splitting User Stories. Part 1: Incremental Development of Complex Algorithms.
Today he posted the second post, Evolving Rich UI.
Future posts are intended to cover:
Splitting User Stories. Part 3: Incremental Architecture.
Splitting User Stories. Part 4: Simple Steps in Implementing Complex Scenarios.
Splitting User Stories. Part 5: Evolving APIs, Protocols, Interfaces.
If you are an agile developer or architect in the trenches, you might want to keep your eye on this series.