6 brilliant ways to slice user stories

from-big-to-small-vertical-user-stories-1024x489

Some time ago on my personal blog I was writing about Impact Mapping, a tool to evaluate your assumptions regarding your product. The result of this technique is a product backlog with big stories prioritized by business value. In this post I would like to show you 6 simple ways how to split your big user stories vertically.

One of the biggest challenges is to slice features vertically. Normally teams aren’t used to think about problem decomposition this way, so I hear a lot of comments like “The system is too complex” or “we need to ship this features as a whole or our users won’t get what they need”.

What is a vertical story?

There are two approaches for breaking down big features:

  • in an agile environment we try to follow Bill Wake’s INVEST model which says that a story has to be independent and valuable. Never the less the first and traditional approach is the horizontal splitting and involves breaking down the features into the work that has to be done at architectural layers: web-Service, Interface, database, front-end and back-end is split up into groups of sub-tasks.
  • The second and more useful approach is the vertical splitting which makes more sense in an agile environment like scrum. If a user story is split vertically, it is split in such a way that the small story still brings business value.

Why you should create vertical slicesvertical-slicing-300x300

Slicing up your stories vertically can speed up your feedback loop with your customer. You can measure results and react fast on the needs of your users. On a long-term you can avoid cost of delay significantly. If you are doing scrum each slice should go through your definition of done within one or two days.

6 techniques for vertical slicing:

 

Pattern #1 – Split into operations or actions

Split big features into separate actions or operations the user  can execute:

As a user, I can manage courses, so that …

smaller vertical stories

As a user, I can view (read) a course, so that …
As a user, I can add a course, so that …
As a user, I can delete a course, so that …

 

Pattern #2 – Split based on business rules

If your user story includes different business rules, there are variations or exceptions on the flow based on specific input parameters:

As a user, I receive an electronic invoice right after registering for a course, so that …

smaller vertical stories:

As a german user, I receive an electronic invoice right after registering for a course, so that …

As an abroad user, I receive a physical invoice, so that …

As a user registering +2 participants together, I get to choose how my invoice is constructed (separate or comined invoice), so that …

 

Pattern #3 – Simplify business process (workflow)

Focus on the minimal and mandatory parts of your business process or workflow and deliver a minimal viable solution first. Later you add additional or optional steps in the workflow.

As a user, I can publish courses online, so that …

smaller vertical stories:

As a  user, I can directly publish courses online, so that …

As a user, I can publish courses including a marketing review, so that …

As a user, I can publish courses including a trainer review, so that …

 

Pattern #4 – Reduce options or complexity

Define the most simple solution of a certain functionality first, adding more options or complexity later.

As a user, I can search for courses online, so that …

smaller vertical stories:

As a  user, I can search for courses on keywords in course title only, so that …

As a user, I can also search for courses on location and date, so that …

As a user, I can also search for courses using exotic and complex criteria, so that …

 

Pattern #5 – Focus on major effort first

Focus on the most important subset of data or information first by investigating the usage of the product.  Add exceptional or less used information (other languages, other platforms or devices) later.

As a user, I can pay my course online, so that …

smaller vertical stories:

As a  user, I can pay my course using wire transfer only, so that …

As a user, I can also pay my course using Paypal, so that …

As a user, I can also pay my course using VISA or Mastercard, so that …

 

Pattern #6 – Deliver basic user interactions first

Assure working functionalities first, and only then add user stories for improving the user experience (validations, look & feel, performance)

As a user, I can register for a course, so that …

smaller vertical stories:

As a  user, I can register for a course providing my data in a very basic way and without data validation, so that …

As a user, I can register for a course and my registration data is automatically validated, so that …

As a user, I can register for a course on beautiful screens and provide my data in a very intuitive way, so that …

 

If you want to learn more approaches, read also the article of Richard Lawrence about story slicing!

Let me know how it works for you 🙂 Send me a feedback. I would love to hear from you!

Dominic Krimmer | Follow me on Twitter: @dkrimmer

4 thoughts on “6 brilliant ways to slice user stories”

  1. Fantastic article, you are totally right. A lot of development teams have a passing understanding of what vertical slicing is but have a real problem actually doing it because it goes against everything they think about when they build software.

    I’m going to have to put these somewhere so I don’t forget them, so the next time someone says to me “We can’t make this one vertical” I will have the perfect response.

    Thanks.

  2. Thanks for having clear examples of each pattern. That made this article more usefull than the 15 others I’ve read today 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *