200 likes | 211 Views
Learn how to create great user stories that accurately capture project requirements while promoting shared understanding and collaboration. Explore the role of user stories in agile development and discover strategies for effective decomposition. Avoid common user story anti-patterns and gain insights into acceptance criteria and examples.
E N D
As an agilist, I want to write great user stories so that... Ryan Dorrell @ryan_dorrell 08.27.2013 Tampa Bay Agile Meetup
Bio • CTO, co-founder, AgileThought (since 2004) • Started professional career developing using 16-bit VB4 on Win 3.1 at Arthur Andersen in Sarasota, FL • Since then: • OnSphere in Raleigh, NC (VB6, .NET, Java) • PricewaterhouseCoopers in Tampa, FL (Java) • Co-founded AgileThought in 2004 with David Romine, John Wagner • At AgileThought: • Development, technical leadership, plus helping teams and organizations adopt agile and ALM practices and processes • @ryan_dorrell • @agilethought
User Stories Think about requirements differently A promise for a future conversation Specifying in writing doesn’t work well
User Stories Think about requirements differently A promise for a future conversation Shared documents aren’t shared understanding Specifying in writing doesn’t work well
User Story Cadence As a <role>, I want to <action>, so that <value>
Are user stories enough? Conversation Confirmation Card As a <role>, I want to <action>, so that <value> As a <role>, I want to <action>, so that <value> Item 2ITe Item Item Item
What about use cases? …is as a gazelle is to a gazebo. A user story is to a use case…
Live by INVEST VALUABLE NEGOTIABLE INDEPENDENT TESTABLE ESTIMABLE SMALL
User story anti-patterns Actually just a task Too technical Too large Describes implementation UI-focused Not user-focused
Decomposition strategies By Workflow Steps By User Interface Model By Operation Split out spikes By Data Entry Method By Persona
Examples As a user, I want to view my dashboard page As a product owner, I want the password to have complexity requirements As a customer svc rep, I want to manage a customer’s account As a developer, I want to refactor the database connection code
Acceptance Criteria PO expectations on what will be delivered Can include: Functionality, look/feel, non-functional expectations Given… When…. Then… Automation tool support exists
Acceptance Criteria Examples • Given an Existing Promo Code, • When it saved, Then the following rules are applied:
Acceptance Criteria Examples As a mobile app user I want to accept the EULA just once when I log into the mobile app so that I’m legally in agreement with the company. Given when a user logins for the first time When they have never accepted the EULA before Then prompt to read the EULA and click Accept or Decline If user clicks Decline Then logout the user and return to login page If user clicks Accept continue on Also check for the version # of the EULA - if later, get text for latest version and display with accept/decline Since more than 1 user can use a device, track if the EULA has been seen by each user on each device
Acceptance Criteria Examples Group by individual drugs. Sort the ones with problems to the top, then alphabetical order by the "written as" field. Display the "filled as" field also below the "written as" field. Tapping the drug name should take them to the prescription details screen. Select/tap to drop-down the different sections. Lo-fi mockup: [Text block at top indicating what to do] <!> Drug1 <downarrow> Filled as: Drug1a Duplicate Drug 2 Filled as: Drug2a Drug 4 Filled as: Drug4a <!> Drug 2 <downarrow> Filled as: Drug2a Duplicate Drug 1 <!> Drug 4 <downarrow> Duplicate Drug 1 As a mobile app user I want to view my current medications so that I can be informed of duplicate therapy conflicts.
Parting words Groom often and with vigor. Work to split stories to the smallest consumable portion. Think Asteroids. Don’t get hung up on making a story absolutely perfect. Focus on the conversation.