Many new Agile teams have difficulty splitting their user stories small enough to work well with Agile techniques. In several articles, members of the Agile community provide guidance on how to split user stories effectively.
Are there general guidelines we can follow when trying to split larger user stories into smaller ones? Rachel Davies recommends slicing each user story so as to produce software that:
- works
- delivers value
- can potentially generate user feedback
Richard Lawrence provides these techniques he has found useful for splitting large user stories:
- Divide a story into the workflow steps involved—perhaps putting a simple end-to-end case as one story, then having other steps in the workflow as their own separate stories.
- Divide a story so each variation in business rules is its own story.
- Divide a story into "implement the first [X]" and "implement the rest of the [X]s". This can be applied when the effort involved in implementing the first [X] will be much larger than the effort of implementing any of the subsequent [X]s.
- When faced with a complex story, split off the simplest version of the story as a separate story.
- Divide a story by the types of data it manipulates.
- Divide a story by differentiating between a simple data entry method and a more complex one.
- Shift performance considerations out of the current story into one or more new stories.
- Divide a story along create-read-update-delete (CRUD) boundaries.
- As a last resort, create a spike story to figure out how to implement the feature.
Rachel Davies provides more detail around how to split stories with regards to input/output data:
- You can make a story per input screen.
- You can make a story per enabled elements of an input screen.
- You can make a simple (not pretty) UI.
- You can make a command line interface.
In addition, Bob Hartman provides these techniques for splitting stories:
- In a story that involves multiple personas, divide it by persona.
- Divide a story so that the more-risky parts are separated from the less-risky parts.
- Divide a story to maximize the number of developers that can work on each story.
- Divide a story to help with testing.
What ways of splitting user stories have you found to be most useful?
Community comments
Vertical Slices
by Theron James,
Does this get too fragmented?
by Tormod Varhaugvik,
The simplest way to split user stories
by George Dinwiddie,
More Story Splitting articles
by Mark Levison,
Acronyms supporting splitting
by Thomas Karlsson,
Re: Acronyms supporting splitting
by paulo caroli,
Vertical Slices
by Theron James,
Your message is awaiting moderation. Thank you for participating in the discussion.
www.objectmentor.com/resources/articles/IIDII.pdf
blogs.msdn.com/b/progressive_development/archiv...
Does this get too fragmented?
by Tormod Varhaugvik,
Your message is awaiting moderation. Thank you for participating in the discussion.
My worry is that requirements are long lasting. The development itsef is often less than 10% of the lifetime costs.
What about maintenance for the last 90%?
My comment at : tormodv.blogspot.com/2011/04/requirements-are-l...
The simplest way to split user stories
by George Dinwiddie,
Your message is awaiting moderation. Thank you for participating in the discussion.
blog.gdinwiddie.com/2011/05/01/splitting-user-s...
Also listed there are some pointers to a few of the classic articles on splitting stories.
More Story Splitting articles
by Mark Levison,
Your message is awaiting moderation. Thank you for participating in the discussion.
agilepainrelief.com/notesfromatooluser/2010/09/... and
agilepainrelief.com/notesfromatooluser/2010/12/...
Acronyms supporting splitting
by Thomas Karlsson,
Your message is awaiting moderation. Thank you for participating in the discussion.
Good post, it's interesting to get a collection of techniques on this challenging topic!
On top of what's already been mentioned I recommend Bill Wake's INVEST acronym:
xp123.com/articles/invest-in-good-stories-and-s...
That is really helpful for slicing functionality. For situations when this is not enough I have created an additional acronym which might be helpful, Splitting User Stories using SOUND advice:
agile-management.com/wordpress/splitting-user-s...
Re: Acronyms supporting splitting
by paulo caroli,
Your message is awaiting moderation. Thank you for participating in the discussion.
Great post!
Here I give a sample and links on splitting CRUD stories
agiletips.blogspot.com/2010/11/splitting-crud-s...