Vertical Slicing: The Secret Weapon for Creating Better User Stories
How using slicing features vertically with my team helped us launch and get feedback from our users more quickly.
As a product manager, I've always been on the lookout for ways to improve our development process and deliver value to our users faster. One technique that has changed the way I create user stories is vertical slicing.
In today’s post, I'll share how adopting this approach has transformed our team's ability to release features quickly and demonstrate tangible progress to stakeholders.
The Old Way: Horizontal Slicing
Before we dive into vertical slicing, let's take a moment to understand its counterpart: horizontal slicing. This approach is what many of us were taught and have been using for years.
Horizontal slicing involves breaking down a feature or epic into layers based on technical components.
For example, a user authentication feature might be split like this:
Design the database schema for user accounts
Implement the backend API for user registration and login
Create the frontend UI for the login and registration forms
Integrate the frontend with the backend
While this approach seems logical from a technical standpoint, it comes with some significant drawbacks:
⏳ Delayed value delivery: We can't show anything to users or stakeholders until all layers are complete.
🐞 Increased risk: Integration issues often surface late in the development process.
🚦 Limited flexibility: It's harder to pivot or reprioritize based on feedback.
I remember a project where we spent weeks perfecting the backend for a complex feature, only to realize during UI implementation that we had misunderstood a key user requirement. The amount of rework was painful, to say the least. 👎
Enter Vertical Slicing: A Game-Changer
Vertical slicing takes a different approach. Instead of dividing work by technical layers, we slice features into thin, end-to-end pieces of functionality.
Each slice represents a small, but complete and valuable piece of the feature that can be developed, tested, and potentially released independently.
Here's how we might slice that same user authentication feature vertically:
Implement basic email/password registration (UI + API + Database)
Add login functionality for registered users
Implement password reset capability
Enhance registration with email verification
Add social media login options
With this approach, we can:
⬆️ Deliver value incrementally: After the first slice, we already have a working piece of functionality.
⬆️ Get early feedback: Users can interact with the feature sooner, allowing us to course-correct if needed.
⬆️ Reduce risk: Integration happens continuously, revealing issues earlier.
⬆️ Maintain flexibility: We can easily reprioritize or add new slices based on user feedback.
The difference is striking, isn’t it? Let’s see how you can use this on your favor. 👇
How To Vertical Slicing
In order to walk you through a list of steps on how to implement vertical cutting, I will use one of our team's feature: sending push notifications through our CMS.
🔍 Identify the core user value: We determined that the ability to receive timely updates from the CMS was very important to our customers.
🍰 Define the minimum viable slice: Our first slice included a simple CMS interface to create a text notification, a basic API to send it, and the ability to display it on the mobile app.
🔃 Prioritize slices: We ordered subsequent slices based on user value and complexity, putting scheduling next as it was highly requested by content editors.
👨🏻💻 Collaborate across disciplines: Our team included a frontend developer, backend engineer, mobile developer, and UX designer working together from the start.
🎂 Implement end-to-end: For each slice, we ensured that the functionality worked across all layers before moving to the next slice.
🗣️ Gather feedback early: After implementing the first slice, we released it to a small group of users and content editors for immediate feedback.
⚒️ Iterate quickly: Based on the feedback, we made adjustments to our subsequent slices, such as prioritizing rich media notifications over user preferences.
After we followed these steps, we were able to deliver a working notification system within the first sprint, rapidly iterate based on real user feedback, and avoid the pitfalls of late integration issues.
To identify the core user value, I really recommend story mapping in first place. Story Maps are a great way to identify user stories, after breaking down big epics into smaller tasks.
And if you are interested in how to actually craft user stories, I have a good article for that, where you can also download a template! 👌
Overcoming Challenges
Adopting vertical slicing isn't without its challenges. Like in many other aspects in an organization, you might encounter resistance from team members who are used to working in silos or concerns about the additional complexity of managing multiple small releases.
To address these issues:
Educate your team: Help everyone understand the benefits of vertical slicing through workshops or sharing success stories. Once they see the value in it, everything will change!
Start small: Begin with a single feature or a small project to demonstrate the value before scaling up. Start small, achieve faster.
Invest in CI/CD: A robust continuous integration and deployment pipeline is crucial for managing frequent releases efficiently. This is a great opportunity to identify if your company's configuration is not ideal and how to move forward.
Wrapping Up
Vertical slicing has transformed the way we create and deliver user stories with my team. After focusing on thin, valuable slices of functionality, we've been able to release faster, demo features earlier, and maintain the flexibility to adapt to changing requirements.
As product managers, our goal is to deliver value to our users as quickly and efficiently as possible. I think vertical slicing is a great way for each team to achieve its product goal, but it only becomes powerful when the team realizes it.
Give it a try on your next project, and I'm confident you'll see the benefits for yourself! 😉
Remember, the key is to think in terms of user value rather than technical layers. With practice, this approach will become second nature, leading to more efficient development cycles and happier users.
Have you tried vertical slicing in your projects? What challenges did you face at splitting features? Share your experiences in the comments below! 🚀