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 A promise for a future conversation Specifying in writing doesn’t work well Think about requirements differently http://www.cakewrecks.com/ http://www.cakewrecks.com/ User Stories A promise for a future conversation Think about requirements differently Specifying in writing doesn’t work well Shared documents aren’t shared understanding User Story Cadence As a <role>, I want to <action>, so that <value> Are user stories enough? Card As a <role>, I want to <action>, so that <value> Conversation Confirmation As a <role>, I want to <action>, so that <value> What about use cases? A user story is to a use case… …is as a gazelle is to a gazebo. Live by INVEST INDEPENDENT NEGOTIABLE VALUABLE ESTIMABLE SMALL TESTABLE User story anti-patterns Too large Too technical Actually just a task UI-focused Not userfocused Describes implementation Decomposition strategies By Operation By User Interface Model By Workflow Steps By Data Entry Method By Persona Split out spikes Examples As a user, I want to view my dashboard page As a customer svc rep, I want to manage a customer’s account As a product owner, I want the password to have complexity requirements As a developer, I want to refactor the database connection code Acceptance Criteria Can include: PO expectations on what will be delivered Functionality, look/feel, nonfunctional 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: Ref 1 Field Promo Code 2 Promo Code 3 Promo Code 4 Promo Code Rules The promo code, itself cannot be altered during the time between the Promo Start Date and Promo End Date. Allow the start date of the promo to be modified if the current date is <the start date (i.e. if the promo code is not yet active, the start date can be changed) All promo codes can only be used once and cannot be reused for another promotion. The Total Limit of a promo code for a particular promotion can be modified if the Current Date <End Date. 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. As a mobile app user I want to view my current medications so that I can be informed of duplicate therapy conflicts. 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 Parting words Work to split stories to the smallest consumable portion. Think Asteroids. Groom often and with vigor. Don’t get hung up on making a story absolutely perfect. Focus on the conversation. Thank you!