Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I would like to improve my user stories writing abilities so I need your experience and guidance. I think that each variable part of a user story can be improved by following certain guidelines.

1. Role

Defining possible roles may be the easiest part. The only problem is that user stories usually just describe functional features that need development.

  • Do you write non-functional stories? And I'm not thinking about technical stories that are related to other aspects of product planning like administrative things. I'm more thinking of additional supporting stories that support the same high-level goal. Like advertising related stories that are related to features?

2. Feature

Defining features seems to be easy but it turns out it's not. Because I can see stories that are heavily related so certain roles can't be developed until others are finished. Example: User registration is a pillar user story that needs to be done first in order to develop other user stories that are related to registered user roles (logged in users and/or admins etc.). This one is very obvious but sometimes relationships are much more subtle.

  • How do you avoid relationships between user stories? Is there a technique to break related stories apart so we can have better development parallelism? Breaking relationships also helps better sprint cycles because one story can't stall the whole sprint.

3. Benefit

This one is the hardest part that I think I have least knowledge how to write good user stories with clear benefits.

  • Do you actually write benefits per story or do you rather provide high level goals instead? Providing these instead of benefits makes it easy to see why certain user story is more important than the other? So it helps prioritisation.
  • Is it wise to have shared benefits/goals between set of user stories?
  • Do you write user stories without benefits part? Is that wise and what do you do instead?
  • Do you write benefits in a way so they can be measurable? Can we do that and is it beneficial?

4. User stories as a whole

  • Have you ever defined all user stories as epics? This would help filter out/prioritise those that give more to the common goals. Then split them into digestible chunks or per single feature user-stories.
  • What additional metadata do you add to user stories? Also talking about user story grouping per higher feature or goal...
share|improve this question
possible duplicate of High level agile product planning alternatives It addresses the exact same issues. Same words. And it's not clear how the answers to this would be any different to the answers to the question it duplicates. – S.Lott Dec 28 '11 at 11:40
@S.Lott: Not a duplicate. The other one talks about alternatives or supporting techniques to Product Backlog user stories, while this one strictly talks about user story improvements. It just seems as if it's a duplicate, but it's not. – Robert Koritnik Dec 28 '11 at 11:48
@S.Lott: I've removed the General part that did make it more duplicate because it introduced other techniques to the question. Without it this question is strictly about user stories. – Robert Koritnik Dec 28 '11 at 11:50
@Robert: I could probably contribute on few of your points, but I wouldn't consider my comments an answer since you asked so much in this post. Maybe consider making separate, more targeted posts? you can always provide links between the posts for people to see the bigger picture. – DXM Dec 29 '11 at 4:00
@DXM. I tried to keep some order with my questions, but you may be right that I should split this question... I'll probably do that. – Robert Koritnik Dec 30 '11 at 10:38
up vote 1 down vote accepted

The user story format is pretty flexible.

“As a (type of user), I want (some feature), so that (some goal)”

I've seen this format used successfully at my workplace. For example:

"As a System Administrator, I want copies of the product catalog sent daily to our Sales Partners so that these partners always have the most current version of our product catalog"

In this example:

  1. A feature is defined. The feature might take the name Partner Extract, for instance. It might be implemented as an ETL job that runs nightly to create data files that are made available to Sales Partners via SFTP.

  2. The user story embeds the roles. The two roles identified are System Administrator and Sales Partner.

  3. Incorporating non-functional requirements is easy. The above example includes one non-functional requirement: the product catalog updates must be daily. Requirements that address how much, how fast or how often are non-functional requirements. I like to refer to these requirements as "quality attributes". Here is another example of a user story that expresses a quality attribute:

As a Call Center Representative, I want customer search to return the result in 2 seconds or less (on average) so that customers are not left waiting on the phone.

Write user stories for reliability, security, capacity or any other quality that is deemed important.

Feature Dependencies

You have identified some legitimate limitations of user stories. They are unordered and there is no guarantee they will be independent. In fact, the might be interdependent-- a chicken-and-egg problem. I believe that all non-trivial projects require documentation to supplement the user stories. I watched the agile team here at work create activity diagrams (flow charts) of the business process. These diagrams were used to analyze the feature dependencies. Another approach might be to create PERT diagram in a big all-day session with the customer. In the end, some other artifacts will be necessary to support the user stories.


A narrative that describes the scope of a project is a good idea. There should be something like a statement-of-work or a project charter. No serious project should be without one. These documents provide a starting place for identifying user stories. These document help answer tough questions like "What should be the priority of this feature?"


After 15 years in the business, I have an opinion about meta-data. In general, it should be avoided. A few reasons include: after a month, no one knows if it is accurate; no one knows if it was updated; it is extra work to create it; you can't predict what metadata will be useful. Most meta-data is a distraction. I like to track owner, author, priority, estimate of effort, and date of last modification. Beyond that, I fight hard to keep meta-data out user stories and use cases.

Benefits (so that...)

I have an opinion about this as well. :-) Including the benefits is vital. Often, users will request a feature without having though about its value. No matter how good an agile team is, the project will fail if it implements unimportant stuff at the expense of more critical functionality. Also as a developer, I do a better job coding a feature if I know how it fits into the big picture. Here is a real-life example of a requirement without justification: "The system shall prevent transactions with EIP and a gift card from occurring.". Huh? What is EIP? Why do I care? Why does anyone care? I don't know. Understanding the context would have been helpful before I went to the business analyst for clarification.

Even worse is when no one remembers why the user story was written. Do we still need this one? Has the business process evolved to the point where this user story is invalid? Does anyone know? These conservations waste time. It gets suckier if the the author of the user story has left the company.


Here is an example of user story that is not measurable:

As a Call Center Representative, I want the system to be fast so that customers are not left waiting on the phone.

How fast is fast? A millisecond? A tenth of a second? Ten seconds? Nobody knows. Nobody wants to be wrong so no one every even makes a guess.

Compare that user story to this one:

As a Call Center Representative, I want customer search to return the results in 2 seconds or less (for average daytime call volumes) so that customers are not left waiting on the phone.

This user story is testable. Average day time call volume can be determined from log files. Performance testing can be conducted to determine if the requirement has been met. Even better, the users and developers have agreed on the success criteria well in advance of the end of the project. Testable requirements are a beautiful thing.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.