Aug 11, 2021
A Good User Story
Part 2: Vertical Slices
Written by Shane Oswald, Director of Delivery
In my previous post, I covered why it’s important to focus on business value instead of solutions when writing user stories. Another important aspect of a good user story is making sure it’s decomposed into the smallest possible vertical slice while still delivering value.
So, what is a vertical slice? A vertical slice contains all the application layers necessary for a user to perform a specific action, end to end. For example, let’s say a sales rep needs a way to update and maintain customer information such as: address, contact information, and projected revenue. One could potentially break down stories horizontally where the user interface for editing customer details is fully developed first, and then another user story is created to make sure that information entered into the screen is saved to the database. Doing so would require that both user stories are completed before the sales rep can start using it and experience the value. Alternatively, we could decompose these stories into 3 small vertical slices. Each vertical slice would involve building all the necessary layers to allow the sales rep to update and save information to the database. We could tackle the address functionality first, followed by two additional vertical slice stories for updating and saving contact information and projected revenue.
Decomposing user stories into small vertical slices provides several benefits. Most importantly, the customer gets to experience the value sooner. Subsequently, it provides the opportunity to get consumer feedback much quicker. It also mitigates risk for the delivery team by establishing and validating their implementation patterns early.
Agile Scrum is obviously an iterative process that focuses on delivering frequent incremental value. That same mindset should be maintained when breaking down user stories. What’s the smallest piece of functionality that can be provided to the business user as soon as possible?