“The S in INVEST”
 Confluence page for ThisWeek @:
 https://kb.epam.com/pages/viewpage.action?pageId=107875299
 Anyone can host a session, just book one in the ThisWeek @ Confluence Calendar
 Me: Zarar Siddiqi
 Agile Coach with a developer’s itch
 http://www.linkedin.com/in/zararsiddiqi
 https://github.com/Arsenalist
 zarar_siddiqi@epam.com
User
Story
Card
Acceptance
Criteria
Constraints
Assumptions
Card
As a Customer Service Representative
I want to view the caller’s account
numbers
So that I can pull up an account quickly
Assumptions
• The caller has entered a phone number
• The caller is using a touch-tone phone
Constraints
• Account number retrieval must take
less than half a second after caller is
connected to CSR
• Must display customer name in French
and English
Acceptance Criteria
• Multiple account numbers are
displayed in a numbered list
• Customers search screen is displayed if
no account number is found
• No inherent dependency on another user storyIndependent
• Until iteration, can always be changed and
rewrittenNegotiable
• Must deliver “value” to the end-userValuable
• Must be able to be sized so that it can be
plannedEstimable
• Small enough to be planned inside a sprintSmall
• Must have a way of knowing when the story is
completeTestable
As a website user, I want to add an item to the
shopping cart, so that I can later buy it
As a fantasy football player, I want to draft a
player, so that I can add them to the active
roster
As a Words with Friends user, I want to play a
word, so that I can get points for it
Basic Idea: Examine the workflow of a process, and
create stories for steps in that workflow
 Before
 As a grocery store cashier, I want to checkout a customer,
so that I can complete the sales transaction
 After
 As a grocery store cashier, I want to…
 …calculate the total amount that will be charged to customer
 …specify the method of payment preferred by the customer
 …enter the credit card details
 …print a receipt for the customer
Identify and disaggregate the
workflow
Basic Idea: For complex data or user interfaces, write
stories for related elements
 Before
 As a Student, I want to view my grades for this semester’s
courses, so that I can see how I’m performing.
 After
 As a Student, I want to view
 …my numeric grade for this semester’s courses, so that I can
quantify my performance.
 …my letter grade for this semester’s courses, so that I can
calculate my GPA easily
 …the class average for this semester’s courses, so that I
understand my relative performance.
Create stories specific to data
elements
Basic Idea: If a program must handle processing of
multiple items, write a story which deals with zero input,
size one input, and multiple input.
 Before:
 As a website user, I want to delete items from the
shopping cart, so that I will not be charged for them
 After:
 To remove a single item from my shopping cart, as a
website user, I click on the ‘X’ icon next to each item in
the shopping cart
 To remove multiple items from my shopping cart, as a
website user, I select the checkbox next to each item to
be removed and click the ‘Remove from Cart’ button
A story for each case
Basic Idea: For complex workflows, create a story to
complete the happy path, i.e., the case where
everything goes perfectly, and then create stories which
deal with the deviations from the happy path (i.e., the
exceptions).
 Before
 As a Dispatcher, I want to view information about a train,
so that I can track its movement
 After
 As a Dispatcher, I want to view information about…
 …an on-time train, so that I can track its movement
 …a derailed train, so that I can track its movement
 …a delayed train, so that I can track its movement
 …a cancelled train, so that I can plan alternate routes
A story for the “happy path” where
little goes wrong, and stories for the
rest
Basic Idea: Create a story for the difficult part of the
work where key learnings will happen; then create
stories which complete the work
 Before
 As a Salesforce user, I want to create revenue, profit, and
growth reports, so that I can perform monthly forecasting
 After
 As a Salesforce user, I want…
 …to create a revenue report for February 2013, so that I can
view the revenue generated in February 2013
 …to create revenue, profit, and growth reports for all months,
so that I can perform forecasting for the next month
Do the core, then enhance
Basic Idea: For work which has an interface (user or
system) and a storage component (e.g., database), create
stories for the “pass-through” cases where only the
interface is invoked, but nothing is stored.Then add other
stories which persist information.
 Before
 As an airline customer, I want to view available flights
between two airports, so that I can pick the best option
 After
 To view available flights, as an airline customer, I want to
provide two airport codes
 To view available flights, as an airline customer, I want to
provide the number of passengers travelling
 To view available flights, as an airline customer, I want to
view an Available Flights page (structure only, no flights)
 To view available flights, as an airline customer, I want to
view the Available Flights page populated with real-time
flight information
Stories that invoke the UI but don’t
store data; other stories that store
data
Basic Idea: For cases where parameters are dynamic
(e.g., drop down lists), create a story for the work using
static hard-coded parameters.Then create stories
which make the parameters dynamic based on content.
 Before
 As a Rona website user, I want to search for lawn mowers,
so that I can find one that is suitable for me
 After
 As a Rona website user, I want to search for lawn mowers
 …over $500 or under $500, so that I can view expensive and
cheaper lawn mowers
 …in all available price ranges, so that I can find the right
price/value one for me
Stories that make use of dummy
data; other stories that make data
dynamic
Basic Idea: For work where a program must support
multiple options (e.g., USD, CAD), create a story for
each type of option.
 Before
 As a SportingBet.com customer, I want to view the betting
odds for UEFA Champions League matches, so that I can
place an informed bet
 After
 As a SportingBet.com customer, I want to view the betting
odds for UEFA Champions League matches
 …in American format, so that I can see odds relative to $100
 …in Fractional format, so that I can calculate relative payout
 …in Decimal format, so that I can use multiplication to
calculate payout
Stories for each option
Basic Idea: If the team finds that the acceptance criteria
for a story are growing, make each acceptance criteria
its own story (or group them to create stories)
 Acceptance Criteria using Given/When/Then
 Given the /Product/GetStatuses.json endpoint
 …when a blank or null order ID is passed, then a Service
Exception wrapped in an <error> element is returned
 …when a non-existent order ID is passed, then an Order Not
Found exception, wrapped in an <error> element is returned
 …when a valid order ID is passed, then an empty JSON
message containing the word ‘OK‘ is returned
 Soft acceptance criteria
 A business process diagram showing the workflow for
new users is created, reviewed by John, and stored in
SharePoint
 Written communication has been sent to the Service
Management Team notifying them of the upcoming
change
Split stories based on Acceptance
Criteria
Basic Idea: For cases where the story cannot be
disaggregated due to limited insights about the work,
create an investigative story, i.e., a spike, to analyze or
research the work, and another to develop it.
 Before
 As an Amazon.com customer, I want to view products
related to the product I am currently viewing that may
interest me, so that my shopping experience is enhanced
 After
 Research the optimal algorithm for displaying related
products which considers tandem purchases, similar
buyers, price, purchase history, and availability.
 As an Amazon.com customer, I want to view products
related to the product I am currently viewing that may
interest me, so that my shopping experience is enhanced
Knowing the unknown,then develop
 http://www.richardlawrence.info/2009/10/28/patterns-for-splitting-user-stories/
 http://www.richardlawrence.info/wp-content/uploads/2012/01/Story-Splitting-
Flowchart.pdf
 http://www.agileforall.com/2009/12/new-to-agile-learn-how-to-split-stories/
 http://www.agilelearninglabs.com/2013/05/user-story-splitting-four/
 http://www.jbrains.ca/permalink/how-youll-probably-learn-to-split-features
 http://gojko.net/2012/01/23/splitting-user-stories-the-hamburger-method/
 http://www.discovertodeliver.com/
Ten Concrete Techniques to Split User Stories

Ten Concrete Techniques to Split User Stories

  • 1.
    “The S inINVEST”
  • 2.
     Confluence pagefor ThisWeek @:  https://kb.epam.com/pages/viewpage.action?pageId=107875299  Anyone can host a session, just book one in the ThisWeek @ Confluence Calendar  Me: Zarar Siddiqi  Agile Coach with a developer’s itch  http://www.linkedin.com/in/zararsiddiqi  https://github.com/Arsenalist  zarar_siddiqi@epam.com
  • 3.
    User Story Card Acceptance Criteria Constraints Assumptions Card As a CustomerService Representative I want to view the caller’s account numbers So that I can pull up an account quickly Assumptions • The caller has entered a phone number • The caller is using a touch-tone phone Constraints • Account number retrieval must take less than half a second after caller is connected to CSR • Must display customer name in French and English Acceptance Criteria • Multiple account numbers are displayed in a numbered list • Customers search screen is displayed if no account number is found
  • 4.
    • No inherentdependency on another user storyIndependent • Until iteration, can always be changed and rewrittenNegotiable • Must deliver “value” to the end-userValuable • Must be able to be sized so that it can be plannedEstimable • Small enough to be planned inside a sprintSmall • Must have a way of knowing when the story is completeTestable
  • 5.
    As a websiteuser, I want to add an item to the shopping cart, so that I can later buy it As a fantasy football player, I want to draft a player, so that I can add them to the active roster As a Words with Friends user, I want to play a word, so that I can get points for it
  • 8.
    Basic Idea: Examinethe workflow of a process, and create stories for steps in that workflow  Before  As a grocery store cashier, I want to checkout a customer, so that I can complete the sales transaction  After  As a grocery store cashier, I want to…  …calculate the total amount that will be charged to customer  …specify the method of payment preferred by the customer  …enter the credit card details  …print a receipt for the customer Identify and disaggregate the workflow
  • 9.
    Basic Idea: Forcomplex data or user interfaces, write stories for related elements  Before  As a Student, I want to view my grades for this semester’s courses, so that I can see how I’m performing.  After  As a Student, I want to view  …my numeric grade for this semester’s courses, so that I can quantify my performance.  …my letter grade for this semester’s courses, so that I can calculate my GPA easily  …the class average for this semester’s courses, so that I understand my relative performance. Create stories specific to data elements
  • 10.
    Basic Idea: Ifa program must handle processing of multiple items, write a story which deals with zero input, size one input, and multiple input.  Before:  As a website user, I want to delete items from the shopping cart, so that I will not be charged for them  After:  To remove a single item from my shopping cart, as a website user, I click on the ‘X’ icon next to each item in the shopping cart  To remove multiple items from my shopping cart, as a website user, I select the checkbox next to each item to be removed and click the ‘Remove from Cart’ button A story for each case
  • 11.
    Basic Idea: Forcomplex workflows, create a story to complete the happy path, i.e., the case where everything goes perfectly, and then create stories which deal with the deviations from the happy path (i.e., the exceptions).  Before  As a Dispatcher, I want to view information about a train, so that I can track its movement  After  As a Dispatcher, I want to view information about…  …an on-time train, so that I can track its movement  …a derailed train, so that I can track its movement  …a delayed train, so that I can track its movement  …a cancelled train, so that I can plan alternate routes A story for the “happy path” where little goes wrong, and stories for the rest
  • 12.
    Basic Idea: Createa story for the difficult part of the work where key learnings will happen; then create stories which complete the work  Before  As a Salesforce user, I want to create revenue, profit, and growth reports, so that I can perform monthly forecasting  After  As a Salesforce user, I want…  …to create a revenue report for February 2013, so that I can view the revenue generated in February 2013  …to create revenue, profit, and growth reports for all months, so that I can perform forecasting for the next month Do the core, then enhance
  • 13.
    Basic Idea: Forwork which has an interface (user or system) and a storage component (e.g., database), create stories for the “pass-through” cases where only the interface is invoked, but nothing is stored.Then add other stories which persist information.  Before  As an airline customer, I want to view available flights between two airports, so that I can pick the best option  After  To view available flights, as an airline customer, I want to provide two airport codes  To view available flights, as an airline customer, I want to provide the number of passengers travelling  To view available flights, as an airline customer, I want to view an Available Flights page (structure only, no flights)  To view available flights, as an airline customer, I want to view the Available Flights page populated with real-time flight information Stories that invoke the UI but don’t store data; other stories that store data
  • 14.
    Basic Idea: Forcases where parameters are dynamic (e.g., drop down lists), create a story for the work using static hard-coded parameters.Then create stories which make the parameters dynamic based on content.  Before  As a Rona website user, I want to search for lawn mowers, so that I can find one that is suitable for me  After  As a Rona website user, I want to search for lawn mowers  …over $500 or under $500, so that I can view expensive and cheaper lawn mowers  …in all available price ranges, so that I can find the right price/value one for me Stories that make use of dummy data; other stories that make data dynamic
  • 15.
    Basic Idea: Forwork where a program must support multiple options (e.g., USD, CAD), create a story for each type of option.  Before  As a SportingBet.com customer, I want to view the betting odds for UEFA Champions League matches, so that I can place an informed bet  After  As a SportingBet.com customer, I want to view the betting odds for UEFA Champions League matches  …in American format, so that I can see odds relative to $100  …in Fractional format, so that I can calculate relative payout  …in Decimal format, so that I can use multiplication to calculate payout Stories for each option
  • 16.
    Basic Idea: Ifthe team finds that the acceptance criteria for a story are growing, make each acceptance criteria its own story (or group them to create stories)  Acceptance Criteria using Given/When/Then  Given the /Product/GetStatuses.json endpoint  …when a blank or null order ID is passed, then a Service Exception wrapped in an <error> element is returned  …when a non-existent order ID is passed, then an Order Not Found exception, wrapped in an <error> element is returned  …when a valid order ID is passed, then an empty JSON message containing the word ‘OK‘ is returned  Soft acceptance criteria  A business process diagram showing the workflow for new users is created, reviewed by John, and stored in SharePoint  Written communication has been sent to the Service Management Team notifying them of the upcoming change Split stories based on Acceptance Criteria
  • 17.
    Basic Idea: Forcases where the story cannot be disaggregated due to limited insights about the work, create an investigative story, i.e., a spike, to analyze or research the work, and another to develop it.  Before  As an Amazon.com customer, I want to view products related to the product I am currently viewing that may interest me, so that my shopping experience is enhanced  After  Research the optimal algorithm for displaying related products which considers tandem purchases, similar buyers, price, purchase history, and availability.  As an Amazon.com customer, I want to view products related to the product I am currently viewing that may interest me, so that my shopping experience is enhanced Knowing the unknown,then develop
  • 20.
     http://www.richardlawrence.info/2009/10/28/patterns-for-splitting-user-stories/  http://www.richardlawrence.info/wp-content/uploads/2012/01/Story-Splitting- Flowchart.pdf http://www.agileforall.com/2009/12/new-to-agile-learn-how-to-split-stories/  http://www.agilelearninglabs.com/2013/05/user-story-splitting-four/  http://www.jbrains.ca/permalink/how-youll-probably-learn-to-split-features  http://gojko.net/2012/01/23/splitting-user-stories-the-hamburger-method/  http://www.discovertodeliver.com/