The User Story: Demystified

Published:

What is a User Story?

Once upon a time, a software developer who was sick and tired of reading Use Cases, Business Requirements Documents, Technical Requirements Documents, UML diagrams, Interface Design Documents, decided to try a radical idea:

To an end user:
“Tell me a story. (I’ll write it down.)”
— Alistair Cockburn, wiki.c2.com

But, But…That’s Not What I Was Taught!?

I know, I know. You may have been taught that a User Story conforms to this format:

As a  some type of user ,
I want  some sort of feature 
so that  some sort of benefit .

How did that happen?

That was a mistake of history.

Okay, so the idea isn’t quite as simple as annotating the stories end users tell us. Kent Beck, who is likely to have coined the term, asserted there is a difference between a “story” and a capital-S “Story”. Kent explained that:

A capital-S Story is:

  • Testable: you can write automatic tests to detect the presence of the story.
  • Progress: The customers side of the team is willing to accept the story as a sign of progress toward their larger goal.
  • Bite-sized: The story should be completable within the iteration.
  • Estimable: The technical side of the team must be able to guess how much of the team's time the story will require to get working.

— Kent Beck, wiki.c2.com

And given that seed, history shows that the concept grew and evolved. Many others attached their own opinions, patterns, and advice. Then books and blogs, tips and tutorials followed. Some were useful — many were not. Among the best known but most regrettable mutations of the concept of the User Story occurred circa 2001 when a development team at a company called Connextra established a format for notating their user’s stories.

“Best Known…”, I Said

The format Connextra’s team shared with the world became well known.

As a                             ,
I want                             
so that                             .

In the spirit of the Manifesto for Agile Software Development (e.g., “we are uncovering better ways…by doing it and helping others to do it.”), members of that team, such as Tim Mackinnon (sorry, Tim, I don’t mean to single you out), went on to be Agile Coaches, authors, and team leaders. And they shared their wisdom widely.

The format was, I believe, very helpful to them and I’m grateful they experimented with the format and shared it with others. I’ve personally learned a lot from their work and I’ve incorporated many of their ideas in my own practice.

“Most Regrettable…”, I Said

What began as one working agreement in one team in one company, became dogma for generations of developers, business analysts, and product managers.

The Connextra format is easy to describe, easy to teach, easy to copy — too easy. And just as I can warm a pre-cooked Beef Wellington in a microwave without learning anything about protein, pâté, or pastry, anyone can write the Connextra format without learning anything about user-centric iterative & incremental development.

I’ve consulted with teams who diligently and reverently write all their “Stories” in Connextra’s format. Regrettably, they’ve been led to think it’s “best practice” or a rule of Scrum. It is neither of those. There are no rules around User Stories, except perhaps one: listen to your users and write down the words that come out of their face.

Tips for Writing User Stories

With respect to the User Story concept and among all the tips I’ve been given and all the techniques I’ve practiced, these are the most valuable:

people talking to each other in a meeting room, not understanding each other, lots of jargon words, pencil sketch