How To Split User Stories
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:
- 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?
Does this get too fragmented?
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
Also listed there are some pointers to a few of the classic articles on splitting stories.
More Story Splitting articles
Acronyms supporting splitting
On top of what's already been mentioned I recommend Bill Wake's INVEST acronym:
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:
Re: Acronyms supporting splitting
Here I give a sample and links on splitting CRUD stories