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.
7.
8. 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
9. 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
10. 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
11. 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
12. 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
13. 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
14. 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
15. 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
16. 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
17. 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