Ten Concrete Techniques to Split User Stories
Upcoming SlideShare
Loading in...5
×
 

Ten Concrete Techniques to Split User Stories

on

  • 1,429 views

Techniques to ensure that user stories remain small and adhere to INVEST.

Techniques to ensure that user stories remain small and adhere to INVEST.

Statistics

Views

Total Views
1,429
Views on SlideShare
1,422
Embed Views
7

Actions

Likes
2
Downloads
49
Comments
2

3 Embeds 7

http://www.pearltrees.com 5
http://teams.ctc 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Great examples!!! Very useful.
    Are you sure you want to
    Your message goes here
    Processing…
  • Nice job, tanks for shared
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ten Concrete Techniques to Split User Stories Presentation Transcript

  • 1. “The S in INVEST”
  • 2.  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
  • 3. 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
  • 4. • 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
  • 5. 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
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16.  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/