Slicing
User
Stories

Press <ESC> for overview
and again <ESC> to go back

 

Use arrow-keys or swipe to navigate

by Ulf Schneider

ulf.codes 

User Stories are about Users

Real Life Users, like

  • Cashier
  • Shopper
  • Store Admin

Writing User Stories

The User Story Syntax

As a <user>
I want a <function>
So that I can do <value>

User Centric

The thing is called User Story, because the user is being put into focus.

 

A story written in a way “As a user I want to be able to change the database system” does not make sense. Is the user a shopper? A retailer? A cashier? The shop admin? To explain who will use the function provides the context to do the story right.

 

A technical story without any user taking notice needs to have a parent story which is noticeable by a user.

Make it short

The written text is short. It tells what, not how.

 

The important part about a User Story is the conversation between Dev team, QA and the Product Owner.

 

A User Story is not a specification. Of course, during the conversation you can add more info, if you need, but the starting point is crisp.

Answer Why

Answer why the User Story should be implemented.

Tell more about the context!

 

Where does the value come from?

 

If you are not able to answer the question, you probably haven´t unerstood enough about the motivation for the story or the Story is not needed at all.

INVEST

The ideal User Story fulfills the INVEST criterias

INVEST

Independent

Negotiable 

Valuable 

Estimable 

Small 

Testable 

means

to be ranked independent

a token for a conversation

the Why-question is answered

know if it´s small, medium, huge

to be delivered within a Sprint

validate if the Story is really done

INVEST NOT FULFILLED?

Try
These
Patterns

Workflow

Does the User Story describe a workflow?

Thin slice through workflow

I can publish an essay to the corporate website and

  • have an approval by editor and legal (just pressing approval/reject button).
  • allow to comment the approval/rejection.

Beginning and end first,
work to middle

I can publish an essay to the corporate website.

  • I can publish an essay directly to the corporate website.
  • I can publish an essay with editor review.
  • I can publish an essay with legal review.

CRUD

Does the User Story contain operations like Create, Read, Update, Delete?

Deeper

Slice into C, R, U and D parts

I can manage my account.

  • I can sign up for an account.
  • I can edit and modify my account settings.
  • I can cancel my account.

Simple / Complex

Can you split the story in a simple core and complex enhancements?

Deeper

Simple core first, enhancements later

I can search for flights between two destinations.

  • I can specify a max number of stops.
  • I can include nearby airports.
  • Ican use flexible dates.

Data

Does the story do the same thing with different kinds of data?

Deeper

One kind of data first, enhance with other kinds later

I can create essays

  • in English.
  • in Japanese.
  • in Arabic.

Data entry

Can you achieve the same output with different kinds of data entry methods?

Deeper

Simple data entry first, enrichment later (special case of simple/complex)

I can search for flights between two destinations

  • by using simple date input.
  • with a fancy calendar UI.

Non-functional

Does the story get max of its complexity from non-functional requirements like performance?

Deeper

Do functionality first, later optimize for non-functional requirements

I can search for flights between two destinations.

  • Slow, just get it done, show a “searching” animation.
  • In under 3 seconds.

Interface

Does the story process the same kind of data over different interfaces?

Deeper

Split the story into handling the data over one interface first, enhance later with other interfaces

Sell articles.

  • Via Mobile POS.
  • Via Stationary POS.
  • Via Web Shop.

Break out a Spike

Last resort.

Deeper

Still not clear how to split the story?

As a user, I can pay by credit card.

  • Investigate credit card processing.
  • Implement credit card processing (as one or more stories).

Back to ulf.codes