AGILE IN ACTION

Wednesday, 8 February 2006

User stories part 1: What is a user story and who writes them?

Posted by Simon Baker

What’s a user story?

A user story is a distinct unit of customer-visible functionality, which does not have to represent value to the business but must represent progress to the customer. It’s meaningful to both the customer and the developers. Ron Jeffries uses 3 Cs to describe a user story:

1. Card: The name of the user story (no more than a word or two) used to facilitate collaboration between the customer and the developers.

2. Conversation: Collaboration and discussions that drill-down into the details of the desired functionality.

3. Confirmation: Acceptance tests capturing the details and used to determine when a user story is complete.

Think of user stories as representing a collaboration between the customer and the developers, as opposed to documenting customer requirements. The purpose of this collaboration is to reveal and understand the details of the user stories, which are recorded in the confirmation. Some people write a short description of the user story on the index card, while others like a statement of the format: [Role] can [capability], so that [benefit] . I prefer Rachel Davies’ suggestion, and put just the name of the user story on the index card. A verbose story card encourages people to think of them as requirements documents. A simple name, written in large capital letters, encourages collaboration that continues throughout the iteration

William Wake advises us to INVEST in good user stories :

1. I ndependent: Dependencies between user stories should be avoided because they can lead to prioritisation and planning difficulties.

2. N egotiable: User stories are reminders to collaborate. Collaboration between the customer and the developers involves a negotiation to balance the desired functionality with the cost of implementing it.

3. V aluable to the customer: Whether a user story represents value to the business or simply conveys progress it must inherently be valuable to the customer. This enables the customer to intelligently prioritise user stories. Avoid user stories that have only technical value.

4. E stimatable: There are three reasons why user stories may not be estimatable:

  • Developers lack domain knowledge. In this situation, collaborating with the customer will help them understand a user story.
  • Developers do not possess the right technical knowledge. They should split the user story into a spike to gather information, and a user story to do the real work. A spike is an experiment that allows the developers to learn just enough about the technology to be able to estimate the user story. A spike must be time-boxed. This defines the maximum time that will be spent learning and fixes the estimate for the spike.
  • A user story is too big. It should be split into smaller user stories during collaboration between the customer and developers. When development starts on a user story, it should take between one and two days to complete (including acceptance tests).
5. S mall: If user stories are too big they are difficult to estimate and cannot be planned into a single iteration.

6. T estable: User stories must be testable. A user story that passes all its acceptance tests (and all its unit tests) can be considered complete (subject to a final visual approval by the customer). Without this capability, developers will not know when they’re done .


Who writes the user stories?

The customer writes the user stories because she’s in the best position to know the desired functionality. Each user story must be written in the language of the business. This enables the customer to prioritise the user stories according to their value to the business and their cost, and select the user stories for each iteration. The developers can assist the customer but the responsibility for writing stories must reside with the customer.


Next post in this series:
User stories 2: Adaptive planning

References:
[1] Mike Cohn ’s User Stories Applied For Agile Software Development
[2] Kent Beck ’s Extreme Programming Explained, Second Edition

2 Comments

Are spikes billable within a project? To me it is a necessary item that should be not be forgotten and is very important but I guess the customer should nit pay for this?

Comment by Claudio Capo

You'd typically carry out a spike to find out more information about something to be able to provide an estimate (or maybe to explore options to find what seems to be the best path to follow towards a solution). So, I would say a spike is billable because it usually precede a user story - it is part and parcel of that user story. How big are your spikes? They should usually only be in the order of 1 or 2 hours, tops.

Comment by Simon Baker

Creative Commons Licence

Recent Posts

  1. System failure is inevitable so design for a fast recovery
  2. Delight comes as a surprise in unexpected places
  3. Help create business agility. Bake quality in
  4. Governance - Friend or Foe?
  5. 70% Forum
  6. Measuring purpose. Measuring customer delight
  7. Stop pushing features and start delighting users
  8. Lost without a goal
  9. Emotion creates the common language
  10. Five sneaky ways to kill an initiative

Archives

  1. 2012 (16)
  2. 2011 (24)
  3. 2010 (31)
  4. 2009 (41)
  5. 2008 (69)
  6. 2007 (152)
  7. 2006 (128)
    1. December (16)
    2. November (26)
    3. October (7)
    4. September (11)
    5. August (7)
    6. July (7)
    7. June (4)
    8. May (4)
    9. April (4)
    10. March (4)
    11. February (14)
      1. Don't be afraid to make mistakes
      2. APLN and collaborative leadership
      3. Scrum ba
      4. Ten-minute build, continuous integration and developer rhythm
      5. User stories part 3: Using spikes to help estimate user stories
      6. User stories part 2: Adaptive planning
      7. User stories part 1: What is a user story and who writes them?
      8. Ba
      9. Watch out for the mini-series
      10. Ideal time vs. story points
      11. Making the quality-factor visible
      12. User stories and tasks
      13. Knowing when you're done
      14. Switching pair-programming partners
    12. January (24)
  8. 2005 (63)
  9. 2004 (2)

Tags

agile (43) big visible chart (15) conference (40) culture (18) extreme programming (21) leadership (18) lean (47) people (26) planning (17) retrospective (18) scrum (41) story (19) team (30) testing (19) xpday (19)