Artifact: User Story
A brief description of some functionality provided by the system from the point of view of a user of that system.

A User Story represents a small piece of functionality of the system being built. It is not a complete specification of a feature. It is a promise to discuss a feature or a reminder of the discussion that has already taken place.

Main Description

A User Story is only a token of past and future conversation between the customer and the programmers. XP's on-site customer practice minimizes the need to document extensively each story as the programmers can simply walk over and ask their questions to the customer as needed. User Story details are captured in automated acceptance tests that are then used to validate the implementation of the story.

It may not be necessary to write a description for all stories as the name of some of the stories might already offer enough information.

What makes a good User Story?

  • The customer should care about it. The story should have business value in the customer's eyes so it can be prioritized. Sometimes a story needs to be broken down into smaller pieces to fit into an iteration. If by itself the story does not provide business value, it should at least provide demonstrable progress toward a feature with business value.
  • Stories vertically slice through the product's architecture. They are not usually focused on a specific subsystem.
  • Test cases can be written to verify that the programmers have implemented it correctly.
  • It can be reasonably estimated by the developers. Stories that can't be estimated are rewritten.
  • It can be completed within one iteration. A story that does not fit in an iteration is broken down into two or more smaller stories.
Representation Options

Here are some sample stories for a typical on-line store application:

If the customer has entered a valid Tax Exemption ID, do not charge sales tax.

If the Customer ID is on the Preferred Customer list, do not charge for shipping, except for Next Day service.

On the System Status Page, show the number of orders in the past 24 hours, the total revenue, and list the top ten items in order of quantity ordered.

If the delivery address of a purchase is in any of the states in the attached table, calculate, display, and charge sales tax using the corresponding percentage.