Vertical Slice

There are two main approaches to User Story Splitting: Vertical Slice and Horizontal Slice. User story splitting is the process of breaking down a large user story into smaller, more manageable pieces that can be developed and tested incrementally.

In software development, User Stories provide a way to describe the functional requirements of a system from the perspective of the end user. They are used to capture and prioritize the features that are necessary for the system to deliver value to its users. However, when it comes to implementing user stories, they are often too large and complex to be tackled in one go. This is where the concept of user story splitting comes in. Even if the user story is split the new stories should be

  • The user stories should be small enough that can be completed within one iteration.
  • The user stories should preserve the property that each of these user stories separately has measurable business value.

Component teams will build individual components that are used by other teams to string together in order to provide a feature/value to the end user. Typically it will be done in serial (i.e. architecture, backend, middle tier, front end.)

Feature teams will build all the components needed to deliver the feature to the end user regardless of the technology stack in which the code is needed.

From an Agile point of view, the new feature is broken down into vertical slides of user stories and is to be implemented by a feature team, no matter which components are affected.

User story splitting is the process of breaking down a large user story into smaller, more manageable pieces that can be developed and tested incrementally. There are two main approaches to user story splitting: Vertical Slice and Horizontal Slice.

Vertical Slice – User Story

Vertical slice splitting focuses on breaking down the user story into smaller parts that represent the different layers of the application. This approach aims to deliver a complete, end-to-end slice of the functionality, from the user interface all the way down to the data store. Here’s an example:

User Story – As a user, I want to be able to search for a specific book in the library’s catalog so that I can easily find and borrow the book.

Acceptance Criteria:

  • The user can enter a book title, author, or ISBN into the search bar.
  • The system displays a list of relevant search results, including the book cover, title, author, and availability.
  • The user can click on a search result to view more details about the book, such as a summary and user reviews.
  • The user can add the book to their cart and proceed to checkout if the book is available.
  • The checkout process includes entering their personal information and confirming the loan.
  • The system updates the availability status of the book in real-time to prevent multiple users from borrowing the same book.

This user story captures the entire process of searching for and borrowing a book from the library’s catalog and includes all the necessary components, such as the user interface, search functionality, book information, the checkout process, and real-time availability updates.

Advantages of Vertical Slice

  • Early feedback: Delivering a complete, end-to-end slice of the functionality allows for quick demonstrations of the overall functionality, which can be valuable for gaining early feedback from stakeholders.
  • Improved understanding: Vertical slice splitting provides a comprehensive understanding of how the different parts of the application fit together, making it easier to identify any potential issues or areas for improvement.
  • Reduced complexity: By breaking down the user story into smaller parts that represent the different layers of the application, it can make it easier to manage the complexity of the functionality and ensure that all parts are integrated correctly.
  • Faster delivery: The approach of delivering a complete slice of functionality can lead to faster delivery of the final product, as all the parts are developed and integrated at the same time.
  • Increased motivation: Delivering a complete piece of functionality can provide a sense of accomplishment and increase motivation for the development team, as they can see the tangible results of their work.

Horizontal Slice – User Story

On the other hand, horizontal slice splitting breaks down the user story into smaller parts representing different areas of the application. This approach is more focused on delivering a set of related functionalities, such as searching, browsing, and updating, rather than delivering a complete end-to-end slice of the application.

User Story – As a user, I want to build a database API that can search for a specific book in the catalog database using keywords so that I can easily send relevant books to the front end.

Acceptance Criteria:

  • The input can be one or more keywords to the API.
  • The API sends a list of relevant books that match the keywords.
  • The list of books includes the book title, author, and publication year.
  • The API can refine its search by applying filters such as genre, language, and publication date.
  • The API updates the list of books in real time as per the supplied filters.

Disadvantages of Horizontal Slice

  • Lack of end-to-end visibility: Horizontal slicing can make it difficult to see the overall picture and how each part fits into the larger system. This can lead to a lack of understanding of how the user story will work in its entirety.
  • Increased complexity: Breaking down user stories into smaller parts can make it more difficult to understand the dependencies and relationships between each part. This can result in increased complexity and confusion, especially when it comes to testing and integration.
  • Reduced focus: Horizontal slicing can lead to a focus on individual tasks and functions, rather than the larger goals and objectives of the user story. This can result in a lack of clarity and a lack of motivation for the team.
  • Increased overhead: Breaking down user stories into smaller parts can increase the overhead and administrative work required to manage and track each part. This can lead to increased costs and decreased efficiency.
  • Reduced flexibility: Horizontal slicing can make it more difficult to make changes to the user story after it has been broken down into smaller parts. This can result in a lack of flexibility and the need for significant rework if changes are necessary.

Conclusion

In conclusion, the choice between Vertical Slice and Horizontal Slice user story splitting will depend on the specific requirements of your project and the development framework. Both approaches have their advantages and disadvantages, and the most appropriate one will depend on the needs of your stakeholders, the complexity of the functionality, and the constraints of your development process. Regardless of the approach you choose, it is important to regularly evaluate and adjust your user story-splitting strategy to ensure that it continues to support your goals and deliver value to your users.

Scroll to Top