Unpacking Agile Story Splitting: Making Sense of Vertical and Horizontal
Vertical and horizontal story splitting are two techniques used in Agile and Scrum methodologies to break down large user stories into smaller, manageable tasks. Let's explore the differences between these two approaches:
Vertical Story Splitting
Vertical story splitting involves breaking down a user story into smaller tasks while maintaining the end-to-end functionality. Each task created through vertical splitting represents a thin slice of the overall functionality, covering all layers of the application (UI, backend, database, etc.).
Example
Imagine a user story that involves creating a new user registration feature for a website. Instead of building the entire feature in one go, you could split it vertically into tasks like designing the registration form (UI), setting up user authentication (backend), and storing user data (database). Each task represents a small but functional part of the whole feature.
Advantages
- Each slice created through vertical splitting is potentially shippable and can provide immediate value to the users.
- It helps in getting early feedback from stakeholders as each slice can be demonstrated.
Vertical Story Splitting using INVEST model principles:
Independent: Each vertically split slice of a user story should be independent and deliver value on its own.
Negotiable: Vertical splitting allows for negotiation and adjustments, as each slice can be discussed and refined independently.
Valuable: Each slice, even though small, should deliver value to the user.
Estimable: Since each slice is smaller and well-defined, it's generally easier to estimate the effort required for each.
Small: Vertical splitting inherently results in small, manageable slices of functionality.
Testable: Each slice should be testable to ensure that it meets the acceptance criteria.
Horizontal Story Splitting
Horizontal story splitting involves breaking down a user story based on different layers or components of the system. Each layer/component is developed incrementally across multiple stories.
Example
Consider a user story that involves both creating a new user registration feature and adding a new payment gateway. Using horizontal splitting, you might create separate stories for UI-related tasks (UI layer), backend tasks (backend layer), and database-related tasks (database layer) for both the registration and payment features.
Advantages
- It allows specialists with expertise in specific layers/components to work independently.
- Can be useful when different stories have different architectural or technical requirements.
Horizontal Story Splitting using INVEST model principles:
Horizontal splitting also aligns with the INVEST principles, although some of them might need more consideration:Independent: Each horizontal slice can be developed and tested independently, often based on the specific expertise of the team members.
Negotiable: Just like vertical splitting, horizontal splitting allows for negotiation and adjustments, though it might require more coordination among different layers or components.
Valuable: Each horizontal slice should contribute to the overall value of the user story, even if it's part of a larger technical task.
Estimable: Estimating effort might be trickier for certain technical tasks, but breaking them down into smaller components can make estimation more manageable.
Small: The idea of smallness can still apply within each layer/component, but the overall task might be larger.
Testable: Each horizontal slice should be testable within its own context, which might involve coordination among different layers/components.
Most commonly used approach
Summary
In essence, vertical splitting focuses on delivering small, functional slices of the entire feature, while horizontal splitting divides the feature based on different layers or components. The choice between these approaches depends on the specific needs of the project, the skills of the development team, and the desired release strategy. Sometimes, a combination of both approaches may be used to effectively break down complex user stories into manageable tasks.
The INVEST model outlines qualities that user stories should possess to be effective and well-structured. In summary, both vertical and horizontal story splitting techniques aim to create user stories that follow the INVEST model principles. The choice between these approaches depends on the project's context, team structure, and technical requirements.
While vertical slicing is commonly used, it's important to note that the choice of splitting technique can vary based on the nature of the project, the team's expertise, and the specific requirements of the user stories. Sometimes, a combination of vertical and horizontal splitting might be used to best suit the project's needs.
Comments
Post a Comment