User story

From Pearl Language
Revision as of 05:22, 2 July 2019 by Martien (talk | contribs) (+= “What can I get by …?”)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


✣  ✣  ✣

{{{wish full}}}

The cost of a story includes providing the capability and maintaining a healthy codebase for future work.
Martin Fowler
If you can't write a user story in a tweet, it's too big.

Ask, “What can I get by …?” rather than “When is it going to be done?” The first opens up a world of options, the second will constrict you into a commitment (and death walk). —Troy Magennis.


Use the story splitter to make all user stories similar-sized items.

✣  ✣  ✣

✣  ✣  ✣

Story Template

In order to safely buy some ice cream and quench my thirst
value, benefit, outcome & behavioral change
when I am in the city
situation, context
as a relaxed, first time tourist here,
(qualified) role
I want to withdraw cash
feature as verb sentence; potential entry in user manual
unlike carrying a thick wallet loaded with cash, prone to theft, making me worried.
contrast with current solution

Different from the “As a role I want to function so that I value.”

Use a formal specification language

Leslie Lamport on Distributed Systems and Precise Thinking:

The benefit of using [a formal specification language] is that it teaches you to think rigorously, to think precisely, and the important point is the precise thinking. So what you need to avoid at all costs is any language that's all syntax and no semantics.
Leslie Lamport



color meaning
black To be implemented in the current variant of the user story.
red Issues that must be researched and resolved before you can start with implementation.
grey Items that will not be implemented in the current variant of the user story (out of scope).

Verb-sentences, please

When composing the title of a user story, use verb-sentences and active language. The verbs are the actions and activities users can do with your product. The nouns are the objects or parts that make up your product.

For example:

  • To send a message.
  • To delete a message.
  • To close a partnership.
  • To view a product’s location. (relationship between product and location)


Describe the context or situation in which this story shows its value at best.


Describe the essence, the ‘gist’ of the user story in its context.

Gojko Adzic pro tip: “In order to…” should ideally be a behavioral change, not just a behaviour, so it's observable and measurable.

Ready to Build

Describe the user’s adventure as a narrative, a story, until everyone can back brief the story crystal clear, lucid way. In short, make sure the user story is ready to build.


Issues that need to be resolved before the user story can be declared ready to build. Color open issues red. Color them black when resolved. For example:

  • How many daily withdrawals are allowed?
  • What is the maximum amount someone can withdraw and on what does it depend?
    • Maximum daily withdrawal amount is minimum(account balance, credit limit, cash in ATM).
  • Offer a loan when the withdrawal amount exceeds the account balance.

To do

Describe what needs to be done to get (a path through) the story ready to build, especially to split them into similar-sized items. Consider using gherkin as a formal language to do so. Remember, the goal of a story is to have a good conversation

Seeing is believing

Tersely describe in steps how the path through the user story will be demonstrated. Pay special attention to edge cases. Steps in grey are excluded from the current revision of the story, and are used to illustrate what the complete story looks like.


Describe the conceptual technical design of the story. Include any diagrams that clarify its implementation direction.


When appropriate, use specification by example and behavior-driven development in conduction with #Seeing is believing to obtain crystal clear acceptance criteria.


Explicitly specify what is in scope, and especially what is out of scope for this revision of the story.

In scope

  • To be discussed.

Out scope

  • To be discussed.


List any decisions and their rationale.

  • To be discussed.


List any assumptions on which the story, its design and decisions is based.

  • To be discussed.

Junk items

Junk can be items that are added while in a hurry. The need to be rewritten as good stories later to get them ready to build, but were initially just tossed into the bin so to remember. Others are things like “Upgrade Linux server” that could be rewritten as a story, but there is little benefit to do that. Also, items like that tend to be well understood and are often short-lived.

A little bit of junk on your wishlist is totally fine, especially when it won’t be there long.

User out of sight

Sometimes, the functionality being described starts to get a little too distant from real users and writing user stories when real users are nowhere to be found feels artificial or even silly.

Borrowing from feature driven development, you can write these stories remote from real users in this format:

action the result [by|for|of|to] object

For example:

  • Estimate the closing price of stock
  • Generate a unique identifier for a transaction
  • Change the text displayed on a kiosk
  • Merge the data for duplicate transactions

All verb-based sentences with at least one noun. Each noun represents an object in your system. Multiple nouns in a single sentence indicate a relationship between the objects.

This can be a particularly good syntax when developing something like an Application Programming Interface (API) and object-oriented systems. It works equally well on other types of back-end functionality.


Also, check out feature driven development. It also uses verb-sentences and is well suited for object oriented development. See e-mail on June 2, 2015, from Mike Cohn, titled “Not Everything Needs to Be a User Story: Using FDD Features”.