Why do we need split user stories?
Easier to understand
Smaller stories provide faster feedback
Small stories increase progress
Split conditions:
What this is - if a story has multiple items listed in "what" make each a separate story.
When to use it - words such as "and" or "or" appear.
Helpful questions - Are all of these conditions helpful?
Example: As a customer I want to create an order and pay for the order using ApplePay:
As a customer I want to create an order
As a customer I want to pay for the order using ApplePay
Workflow
What this is - identify the specific steps in a workflow. Implement the workflow in stages, creating multiple stories for the incremental implementation.
When to use it - the initial story describes a workflow or a process
Helpful questions - What steps does a user perform? Are all these steps necessary? Can steps be simplified?
Example: As a customer I want to create an order
As a customer I can view the items on the menu
As a customer I can select the want in my order
As a customer I can review my order
As a customer I can submit my order
Use case scenarios.
What is this - similar to the workflow pattern, one story represents the happy path, different stories for the alternative paths.
When to use it - the initial story refers to an interaction described by a use case
Helpful question - What does the happy/alternative flow look like? Are all the alternative flows necessary? Can the alternative flows be simplified?
Example: As a customer I want to create an order want to create an order
As a customer I want to order 1 item
As a customer I want to order multiple items
As a customer I want to cancel my order
Operations
What is this - splitting a story based on the different operations done on an entity (Create, read, update, delete).
When to Use it - The story is about managing or configuring something.
Helpful questions - What operations does the story entail? All of these operations necessary?
Example: As a restaurant owner I want to manage my restaurant profile so that people can order from my restaurant:
As a restaurant owner I can create a restaurant profile
As a restaurant owner I can update a restaurant profile
As a restaurant owner I can view a restaurant profile
As a restaurant owner Ican delete a restaurant profile
Zero->One->Many
What this is - splitting a story that deals with multiple instances of the entity into stories that deal with one instance, and then multiple instances.
When to Use it - You are working with an entity where multiple instances are allowed
Helpful questions - Do we need to be able to handle multiple instances, or 1 instance is sufficient.
Example - As a restaurant owner, I want to view customer order.
As a restaurant owner, I want to view customer order with no menu items.
As a restaurant owner, I want to view customer order with 1 menu item.
As a restaurant owner, I want to view customer order with multiple menu items.
Core functionality Vs Enhancements.
What this is - Splitting a story to deal with the simple core conditions and then enhancing the functionality with additional user stories.
When to Use it - When the story has a simple core that provides most of the learning.
Questions: What's the simplest version of this? What data types are supported? What parameters are relevant?
Example: As a customer I want to see my past orders so that i can see what I have eaten before
As a customer I can all of my orders
As a customer I can see orders for a given location.
As a customer I can see all the orders in the past 3 month
As a customer I can orders in revers date order
Major effort
What this is? Splitting a story in the way that requires substantial effort for the first story and less effort for all subsequent stories.
When to use it? When you apply the most obvious split, any story you do first is the most difficult.
Questions: Can we create the necessary infrastructure and deliver value at the same time?
Example: As a customer I can pay for my orders with VISA, MasterCard, UnionPay so that I don't have to deal with cash
As a customer I can pay with one debit card type (VISA, MasterCard, UnionPay)
As a customer I can pay with all debit card types, given one card type already done.
Acceptance criteria
What this is? Split a user story into multiple stories to handle different scenarios in the Acceptance criteria.
When to use it? When the team identifies the multiple scenarios for the story, or accurate, but not entirely relevant acceptance criteria identified.
Questions: What tests are used to verify this story? What acceptance criteria apply? What scenarios are relevant? Are all test scenarios are necessary?
Example: As a customer I want to create an order so that i can have something to eat.
As a customer I want to create an order with an approved debit card.
As a customer I want to create an order with a declined debit card.
As a customer I want to create an order with an in-stock item.
As a customer I want to create an order with an item not in stock.
Variations in data
What this is? The story does the same thing to different types of data. Create a story for each option.
When to use it? When a solution has to support multiple options.
Questions: Are these options necessary right now? What is the most common option we need to care for right away.
Example: As a customer I want to view the menu in my native language, so i can decide what I Want to eat.
As a customer I want to view the menu in English
As a customer I want to view the menu in Kazakh
As a customer I want to view the menu in Russian
Data Boundaries
What this is - Splitting a story dealing with several attributes of the same entity. Support a few key elements first and introduce remaining data elements later via additional stories.
When to use it - When s story dealing with several different pieces of data.
Questions - What are the essential data elements we need to have? What data elements are not needed right now.
Example: As a customer I want to view menu item information so I can decide what I want to eat
As a customer I want to view dish name & description
As a customer I want to view dish ingredients
As a customer I want to view nutritional information
As a customer I want to view picture of dish
Interface variations
What this is - Splitting a story dealing with a complex interface with addition stories to incrementally add in complexity
When to use it - When the user story deals with a complex user interface where a simpler one will work in the meantime
Questions - What is the simplest user interface we can use?
Example: As a customer I can view the menu so I can select what I want to eat.
As a customer I can view the menu as .PDF
As a customer I can view the menu as a searchable web-page
As a customer I can view the native in a browser
Platform options
What this is? Split a story adding a new user interface by the various platforms thar are applicable
when to use it? When adding a new user interface that may be accessed by multiple different platforms
Questions - which platforms are supported? Are all platforms required? Are some platforms more difficult to support than others.
Example: As a customer I want to create an order so that i can get something to eat
As a customer I want to create an order on my android device
As a customer I want to an order on my iPad
As a customer I want to an order on my iPhone
Business rules
What this is? Split a user story so that complex business rules are handled by separate business rules. A special case of this is deferring input validation to a later story.
When to use it? When a story has a variety of business rules, often identified by a large number of examples.
Questions - What rules apply to this story. Are all of this rules necessary. Can simpler rules suffice.
Example: As a customer I can use a credit card to pay for my order.
As a customer I want to know when I didn't provide a properly formatted CC number.
As a customer I want to know when I didn't provide a proper expiration date.
As a customer I want to know when I didn't provide a proper expiration date.
Role
What this is? Split a story so that the functionality is implemented at different times for different roles.
When to use it - When a story impacts multiple roles, and the impact is different for each role.
Questions - What roles are involved in this story. Are any roles necessary now.
Example: As a customer I want to create an order, so that I can get something to eat.
As a customer I want to create an order
As a restaurant owner, I want to create an order for a customer.
Defer system qualities
What this is? Split the story to deliver the necessary functionality, then include extra stories to improve performance, scalability, usability or precision.
When to use it? When the base functionality does not exist, implementation is not that hard, the team can learn a lot from it, and the hard work is in making it better.
Questions. Is it necessary to have the optimal performance now?
Example: As a customer I want to know that the restaurant received my order so that I'm sure I'll get some food.
As a customer I want to know that the restaurant received my order.
As a customer I want to know that the restaurant received my order within 5 seconds.
Spikes
What this is? Split the story for some research and investigation on functionality before implementing.
When to use it? When the team finds they are uncertain about the implementation of a story and they need to do some research.
Questions. What are the 1-3 questions you have about the story.
Example: As a customer I want to see the menu in the language of my choice so that I can pick something I want
Spike: Investigate translation functionality
Spike: Research on performance optimization
Low Fidelity/High Fidelity
What this is? Split the story into gradual increase of quality.
When to use it? When getting to the optimal level of quality or usability is too expensive to deliver a solution immediately.
Questions. What is good enough for this functionality
Example: As a customer I would like a recommendation of what food to order so that I can know I'm getting a good dish.
As a customer I want to see a numeric rank of top selling menu items.
As a customer I want to see the aggregate ranking of customers.
Transient then persistent
What this is? Split the stories based on actions to pass data along and those necessary to save data.
When to use it? When the story deals with functionality that includes storing data but does not require storing data.
Questions. Do we have to store this data
Example: As a customer I want to use a credit card to pay for my order so that I don't have to carry cash.
Collect credit card info and use to gain authorization but not store it.
As a customer, I want to save my credit card information to my profile.
Dummy then Dynamic data
What this is? Split stories to first use static data and then add stories to make the data dynamic.
When to use it? When the story covers parameters where the values differ depending on conditions.
Questions. Does the data need to be dynamic.
Example: As a customer I want to search for menu items.
As a customer I want to search for menu items
As a customer I want to search for menu items less than $5 or over $5.
As a customer I want to search for menu items by food type.
Manual then automated
What this is? Split stories that utilize an existing manual process. Implement the functionality that does not exist.
When to use it? When functionality you are developing interacts with an existing manual process, develop the functionality but tin the short term, do not automate the manual.
Questions. Is it necessary to automate the manual process right now.
Example: As a customer I want to use multiple credit cards to pay for my order.
As a customer I want to use a credit card to pay for my order.
Defer Error Handling or logging
What this is. Split a story so that you focus on functionality first, then go back and provide functionality to log errors and handle them
When to use it. When you need to gain feedback on functionality quickly to determine whether to keep it.
Questions. Is it necessary to deal with exception for this functionality.
Example: As a restaurant owner I want to authorize the customer's credit card payment
As a restaurant owner I want to know when the authorization process encountered errors.
As a restaurant owner I want to know what errors the authorization process encountered.
Top comments (0)