Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News How To Split User Stories

How To Split User Stories

Leia em Português

This item in japanese


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:

  1. works
  2. delivers value
  3. can potentially generate user feedback

Richard Lawrence provides these techniques he has found useful for splitting large user stories:

  1. 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.
  2. Divide a story so each variation in business rules is its own story.
  3. 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.
  4. When faced with a complex story, split off the simplest version of the story as a separate story.
  5. Divide a story by the types of data it manipulates.
  6. Divide a story by differentiating between a simple data entry method and a more complex one.
  7. Shift performance considerations out of the current story into one or more new stories.
  8. Divide a story along create-read-update-delete (CRUD) boundaries.
  9. 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?

Rate this Article