Most people agree that splitting stories into manageable sizes makes sense: stories should be small enough to be achievable within an iteration, but big enough to deliver something valuable in their own right. (For more on the content of user stories, see this previous post).
But HOW should you split them? Richard Lawrence gives a good suggestion in a user-friendly chart.
But there’s more to it than that: most people agree that we should split stories vertically rather than horizontally – it fits with the agile principle of releasing working software regularly. What is vertical slicing? It’s working on all the necessary components in order to deliver a feature of business value; rather than working on a single component that delivers nothing. For example, to deliver a login function you may need to work on a bit of the database, some business logic, and the UI – you do what you need to on each of these to complete the story. An example of a horizontal slice would be building a database to handle customer information – although a foundation for many features, in itself it delivers no value to the user; you have only worked on a single layer.
I’ve found that, although people understand the concept on paper, they find it hard to do. So I was very excited when I found ‘Elephant Carpaccio’ by Alistair Cockburn (although I found Henrik Kniberg’s instructions better). I raised this recently at a LADG session. Although we didn’t have time to run the dev part, it was useful and has made me want to run the game in full. I won’t spoil it by mentioning any of the outcomes or discoveries that we got from it (because it will ruin the game for you), but I will say that (again!) I have had my understanding and beliefs challenged.
Have you run Elephant Carpaccio? If so, what did you think? Or have you run any other useful games to help your team split stories vertically? Are there any other useful resources that you have found? Please let us know by adding comments below.
Cover image of knife by Marzie