Teams often struggle with meeting sprint commitments, properly prioritizing stories, having to manage dependencies across teams, and creating stories that deliver value to the customer. Vertical story slicing is a useful technique to help teams create stories that fulfill the INVEST criteria.
This slide share:
• Discusses the characteristics of a well-formed story
• Introduces nine common patterns for effective story slicing
• Identifies clues for when/how to slice stories
5. Advantages of INVEST
Confusion and
miscommunication
Bottlenecks
Unusable fragments of
code
Carryover to subsequent
sprints (DoD)
Multiple, innovative
options
Simplicity
Full team ownership
Shared understanding
Story readiness
Fast delivery of
shippable increments
Consistency and
predictability
MORALE!
From delivery of specs
to delivery of VALUE
From solutions to goals
7. Story Slicing Patterns
Workflow steps
Simple/Complex
Business Rule Variations
Major effort
Operations (CRUD)
Variations in Data
Variations in
Interfaces/Platforms/Roles
Defer System Qualities
Happy vs. Unhappy Path, Use
Cases/Scenarios
8. Slice by Workflow Steps
Split features or stories into steps
Add to cart
Enter billing address
Enter shipping address
Enter payment information
Review Order
Process Order
Tips:
Start with beginning and end of workflow where the value is
realized then enhance with middle steps
Take a thin slice through the whole workflow
9. Slice by Simple/Complex Functionality
Ship to a single address
Ship to multiple locations
10. Slice by Business Rule Variations
Process transactions in states that don’t collect sales tax
Process transactions in states that do collect sales tax
11. Slice by Major Effort
Create separate stories for each major piece of functionality focusing on the one that
requires the most effort
Add items to Shopping Cart
Add Items to Wishlist
Compare Similar Products
12. Slice by Operations
Add item to cart
View cart
Update item in cart
Remove item from cart
13. Slice by Variations in Data
Show shipping dates for customers with
membership
Show shipping dates for customers without
membership
14. Slice by Interfaces, Platforms, and Roles
Mobile, tablet, PC
IOS, Android
Buyer/Seller; Requestor/Approver
15. Slice by System Qualities
Performance
Logging
UI
Browser compatibility
Usability
16. Slice by Happy/Unhappy Paths, Use Cases, and Scenarios
Pay with
credit card
Credit card
expired
Credit card
declined
Pay partial
amount with
credit card
17. Reduce, Reduce, Reduce!
Can you simplify or reduce even further?
Remember reducing fractions in grade school?
No number, except 1, can be divided evenly into both the numerator and denominator
50/100 -> 25/50 -> 5/10 -> 1/2
18. But Wait, There’s More!
Break out by workflow steps
Enter billing address
Enter shipping address
Enter payment information
Review Order
Submit Order
Break out by variations in data
Billing address same as shipping address
Billing address different than shipping address
Break out by business rule variations
Enter domestic billing address
Enter international address or military base
Break out by simple vs. complex
Enter domestic billing address with no address
validation
Enter domestic billing address with basic address
validation using zip code lookup table
Enter domestic billing address that integrates with
a 3rd party address validation service
As a customer,
I want to pay for my
purchases online…
20. Story Slicing – Matching Game
Instructions: For each statement below, write the letter that best describes the pattern to apply.
• I want to create a quote for a customer on my laptop, my phone, or my iPad
• I want to view a report of total dental claims for my employees by month and by
year and I want to see the breakdown of routine dental claims vs. major
restorative claims
• I need to manage beneficiaries for my life insurance policy (hint: manage)
• I want to run pre-defined reports and create ad-hoc reports
• I want to automatically send files to a client and flag files that failed to send so
the system can automatically retry sending them
• In the new content management system, I need to create new templates, create
content that I can save for later, publish content, and manage permissions for
who sees content
• The system will allow the user to initiate a new expense report, add expenses to
the report, add receipts, and submit for approval
• If the applicant is a smoker, the system should prompt to complete a tobacco
addendum
• The system needs to log all user events in transaction history
A. Workflow steps
B. Simple/Complex
C. Business Rule Variations
D. Major effort
E. Operations (Create, Read,
Update, Delete)
F. Variations in Data
G. Variations in
Interfaces/platforms/roles
H. Defer System Qualities
I. Happy vs. Unhappy Path
21. Story Slicing – Matching Game
A. Workflow steps
B. Simple/Complex
A. Business Rule Variations
B. Major effort
C. Operations (Create, Read,
Update, Delete)
D. Variations in Data
E. Variations in
Interfaces/platforms/roles
F. Defer System Qualities
G. Happy vs. Unhappy Path
• I want to create a quote for a customer on my laptop, my phone, or my iPad
• I want to view a report of total dental claims for my employees by month and by
year and I want to see the breakdown of routine dental claims vs. major
restorative claims
• I need to manage beneficiaries for my life insurance policy (hint: manage)
• I want to run pre-defined reports and create ad-hoc reports
• I want to automatically send files to a client and flag files that failed to send so
the system can automatically retry sending them
• In the new content management system, I need to create new templates, create
content that I can save for later, publish content, and manage permissions for
who sees content
• The system will allow the user to initiate a new expense report, add expenses to
the report, add receipts, and submit for approval
• If the applicant is a smoker, the system should prompt to complete a tobacco
addendum
• The system needs to log all user events in transaction history
Instructions: For each statement below, write the letter that best describes the pattern to apply.
G
F
E
B
I
D
A
C
H
22. Sources & Other Resources
INVEST Criteria (Bill Wake)
http://xp123.com/articles/invest-in-good-stories-and-smart-tasks/
The Hamburger Method (Gojko Adzic)
https://gojko.net/2012/01/23/splitting-user-stories-the-hamburger-method/
Patterns for Splitting User Stories (Richard Lawrence)
http://agileforall.com/patterns-for-splitting-user-stories/
Story Splitting Flowchart (Richard Lawrence)
http://agileforall.com/new-story-splitting-resource
Deeper Dive into Splitting Workflows (Richard Lawrence)
https://agileforall.com/why-most-people-split-workflows-wrong/
10 Useful Strategies for Breaking Down Stories (Christiaan Verwijs)
http://blog.agilistic.nl/10-useful-strategies-for-breaking-down-large-user-
stories-and-a-cheatsheet/
23. Delivering the right product, to the right market, at the right time, with the right
process
Expertise in helping organizations, teams, and individuals achieve their goals
through:
Software product management and collaborative road mapping
Full lifecycle, Lean-Agile software development practices
Organizational transformation and scaling
Engaging certified and non-certified training workshops
CSP Fast Pass: https://cspfastpass.com NEW!
A-CSM, A-CSPO, CSP-SM, CSP-PO
Broad ecosystem of partners and other experts spanning disciplines
Skills transfer through coaching and mentoring
About Applied Frameworks
Editor's Notes
How many people have heard of VSS?
How many Product Owners in the room? ScrumMasters? Dev Team members?
Do any of these statements resonate with you and your team?
“This story is too big to fit into a single sprint. Let’s complete development in this sprint and create a separate story to test in next sprint.”
“We don’t have a set sprint cadence. Sometimes it’s 2 weeks, sometimes it’s 3 or 4 weeks depending on the size of the stories we have.”
“We didn’t meet our sprint commitment (again). We need to carryover these stories to next sprint.”
“I can’t complete story A because it’s dependent on functionality in story B to be finished.”
“The Acceptance Criteria in Story A looks like the Acceptance Criteria in Story B! What’s the difference?”
“I can’t prioritize these stories. They are all equally important.”
“I can’t write requirements/accept/write test cases for this story/. It’s too technical.”
To address these and similar issues, it’s important to remember the INVEST criteria.
The INVEST acronym was intentionally invented by Bill Wake to assist teams in ensuring properly structured stories.
Independent (vertically sliced, focused on the delta)
Negotiable (statement of intent; enough info for the team to execute but fluid and flexible to account for new discoveries and innovation)
Valuable (written in the voice of single Customer)
Estimable (shared team understanding; not understood by a single engineer; full team must understand their role in completing the story)
Small (fits within a single sprint, ideally shouldn’t take the full sprint)
Testable (can be objectively validated; Product Owners shouldn’t accept stories on blind faith!)
A vertical story slice is a cross-sectional slice through the layers that form the structure of the code base needed to provide a fully functional feature.
The term “vertical” came from Bill Wake who used a layer cake analogy to describe a complex system.
Vertical slicing is simple in theory but like Agile, difficult to master. Engineers tend to specialize in horizontal layers and they are accustomed to working in horizontal layers. Vertical slicing requires them to turn things on its head. Rarely do horizontal stories deliver value to the end customer.
Entire Scrum teams need to understand vertical story slicing. Even skilled Product Owners accustomed to vertical story slicing, often meet with resistance from other Scrum team members who insist on making stories horizontal.
Vertical story slicing is made simpler by applying known patterns.
Workflow is an easy pattern to identify but the hardest pattern to employ because there are may ways to define what is valuable.
An advanced approach to using the workflow pattern is taking a thin slice through the layers of the workflow, streamlining and eliminating steps to identify the quickest path to value.
A beginner approach to using the workflow pattern is slicing by each workflow step, prioritizing each step, and focusing on splitting out by steps.
Using this pattern, don’t tackle a more complex task until you have mastered an easier one.
Business rules are an effective way to split stories. We may find we don’t need to enforce as many rules we thought. Start with less and add functionality as needed.
With this approach, the functions are distinct but may leverage or build upon what is done for one. Don’t try to tackle everything at once. Pick one effort that will take the “hit” for the others that come after it and use those learnings to apply to subsequent efforts.
CRUD functions (CREATE, READ, UPDATE, and DELETE) are a common way to define separate stories.
Reports are an obvious way to employ the Variation in Data pattern. Look at the types of graphs being depicted, the columns in a table, and other views to distinguish patterns and add incremental value.
Which interfaces, platforms, and roles are most needed/utilized? Create separate stories and prioritize accordingly using the discoveries to apply to subsequent stories.
Creating separate stories for non-functional requirements does not diminish their importance, rather it allows teams to focus on early feedback, inspection and adaptation. There is no need to worry about optimizing performance if the goal is to simply complete a proof of concept for stakeholder feedback.
Use cases can be translated into separate stories in the form of primary use cases (happy paths) and extended scenarios that often take the form of unhappy paths.
Like fractions, stories can often be reduced by applying multiple patterns.
Notice the multiple patterns applied in this example. In each case, scope was further limited by what is shown in red.
Some common clues that vertical story slicing is likely needed:
Compound sentences – look for “and”, “or”, “if” “then”, etc.
Use the UI as a guide – could the tabs, buttons, sections of the screen, etc. represent valuable slices of functionality?
Error handling – this is a straightforward approach that typically follows the happy/unhappy path pattern. Build functionality assuming that it will be used as designed, then layer on error handling, warning messages, etc.
Must haves vs. nice to haves – not only should these be separate stories but will aid in backlog prioritization as well.
Technical voice – if a story sounds too “technical”, there is a good chance it is horizontally sliced. What is the value that ultimately needs to be delivered? Rewrite the story in the voice of the customer and then apply patterns to slice the story.
Match the patterns on the right to the sample requirements on the left. Write the appropriate letter in the blank.