Ten Concrete Techniques to Split User Stories

  • 1,894 views
Uploaded on

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

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

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,894
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
61
Comments
3
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

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/