To Split Or Not To Split: When Is It Appropriate To Split Stories?

Why Story Splitting Matters

Story splitting is the practice of dividing large user stories into multiple smaller stories. This practice comes with several key benefits that can greatly improve agility and delivery. The core advantages of effective story splitting include:

  • Improves planning and prioritization – By splitting stories into smaller parts, teams can more accurately estimate, prioritize and plan delivery of business value.
  • Enables focused development – Smaller stories allow developers to focus their efforts on discrete functionality and enable progress to be made incrementally.
  • Facilitates testing and deployment – Split stories enable more targeted testing of functionality. Smaller changesets also reduce risk with production deployments.

Principles for Effective Story Splitting

While splitting stories can help improve development practices, it should be done carefully following core principles:

  • Keep stories independent and deliverable – Each split story should deliver discrete value and be capable of being developed independently.
  • Split by component or functionality – Logical technical components or functional/behavioral areas provide effective ways to split stories.
  • Split complex stories into smaller ones – Big, complex stories should be systematically split into multiple small stories focused on specific details.
  • Keep split stories related to original story – Maintain clear links between split stories and the original overarching need they are fulfilling.

When to Split Stories

Determining the right time to split stories depends on several key factors related to size, scope and team dynamics:

  • Story is too big or complex – The most common reason to split is that the original story is simply too large or intricate to reasonably implement and test.
  • Story covers too much scope – Similarly, stories that try to capture too many different functions or components may need to be divided further.
  • Testing and deployment would be easier – In some cases complexity arises not from implementation but from the testing or deployment required. Splitting these stories can simplify delivery.
  • Team capacity makes it necessary – Real-world team bandwidth, velocity and focus has to be factored in when evaluating story size and priority.

How to Split Stories

When a story has been identified as a candidate for splitting, there are several effective ways that splitting can be done:

  • By frontend and backend components – Splitting the graphical presentation and business logic layers is common, especially for complex web apps.
  • By functionality or features – Breaking stories down by distinct functions or feature sets they aim to implement is often the easiest route.
  • By platform or device – Targeting specific platforms with different technical needs like web vs. mobile is another sound way to split.
  • By release phases – Splitting by product roadmap phases allows for early partial functionality delivery.

Best Practices for Story Splitting

While stories should be split proactively to enable agile delivery, it should be done judiciously. Some key best practices help guide good story splitting practice:

  • Split vertically not horizontally – Break stories down based on functionality or components, not arbitrary divisions like deadline-based phases which hamper progress visibility.
  • Keep original story links and details – Maintain clear relationships between split stories and the original overarching need they fulfil to prevent losing sight of the big picture.
  • Involve whole team in splitting process – Collaboratively derive split stories during meetings like backlog refinement with customer representatives, developers and testers to bring multiple perspectives.
  • Continuously re-evaluate and adjust splits – As work uncovers new details, be ready to re-split stories further if existing splits prove inadequate to enable progress.

Example Story Splitting Scenarios

To better understand story splitting in practice, here are some real-world examples of types of story splits:

Splitting by Component

Original Story: As an HR specialist, I need to be able to upload, view and manage employee documents so I can maintain accurate employee records.

Split Stories:

  • As an HR specialist, I need to be able to bulk upload employee documents in standard formats so I can efficiently add new documentation.
  • As an HR specialist, I need to be able to search documents by metadata like date and employee so I can easily find needed documents.
  • As an HR specialist, I need access permissions to restrict document visibility only to approved HR staff to protect sensitive information.

Splitting by Functionality

Original Story: As a customer, I need to be able to browse items, add them to a cart, purchase items selected, and view order history so I can purchase goods.

Split Stories:

  • As a customer, I can search and filter products so I can easily browse items for purchase.
  • As a customer, I can add multiple items to a persistent cart so I can collect purchases prior to check out.
  • As a customer, I can purchase items in my cart so I can complete the transaction.
  • As a customer, I can view previous order details so I have purchase records.

Splitting Due to Team Capacity

Original Story: As a user, I need the core application infrastructure deployed to AWS including networking, servers, provisioning scripts and CI/CD pipelines so the system can scale.

Split Stories:

  • As ops, I need AWS networking set up to enable core system access and scalability.
  • As ops, I need base OS and core software installed via scripted provisioning to allow rapid server deployment.
  • As ops, I need CI/CD pipelines ready including unit testing automation so continuous delivery can work effectively.
  • As ops, I need scalability restriction and cost alerting in place by default to manage growing resource needs responsibly.

Key Takeaways

Story splitting is a core agile methodology that enables software teams continuous delivery of incremental value. Some of the key lessons around story splitting include:

  • Story splitting improves agility by removing implementation barriers and focusing effort on highest priority value.
  • Effective splitting requires up-front collaboration and continuous reassessment of priorities.
  • Teams should establish clear principles and criteria guiding when and how large stories are split into deliverable increments providing value.

Leave a Reply

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