A Story Isn’t a Feature

by Jeff Langr

March 20, 2013

A Story Isn’t a Feature

Image source: AJC1, Flickr

Your business doesn’t want to hear about how you “delivered stories.” The business wants you to deliver value, in the form of what they most likely refer to as features.

A story should trigger a conversation around a feature request. Your software product doesn’t contain stories, it contains features that help users accomplish goals.

Wikipedia describes a user story as “one or more sentences” that capture a user’s needs. Those sentences represent a brief description or summary based on the planning and preparation so far, and they are reminders of the conversation that you must continue to have around the feature you will build. The sentences are not the feature. They aren’t even the full story, in most cases, as it often takes the requester several more oral sentences or even paragraphs to say what they really want.

Why Does This Matter?

If you think about stories as a simplified form of a requirements document (“a couple sentences”), you’re constraining agile to be a small tweak to how you did things before, with a trendier name. That diminishes the most important aspect of how agile can help you deliver software successfully: Through continual collaboration and oral communication. Without understanding of the importance of collaboration, stories end up being another waterfall-like hand-off document.

On another front: Too many teams waste time over the wording of a story. It’s a discussion point, not an artifact. The “standard” story template should help you clarify feature requests by asking you to think about who needs them and why. But otherwise spending time on precise word-smithing of a story writeup misses the point. You’re going to discuss it, and you can iron out any ambiguities as you do.

Stories provide only minimal value as an artifact. The ensuing discussion is where the details come out. Unfortunately, most of us can’t fully recall details from a conversation a half year prior, or even a half month prior. Granted, the details end up embodied in the software, but source code more often than not does a poor job of expressing such details concisely and simply. Even programmers must sometimes spend hours to determine just what the code does for the smallest of features.

We need a better artifact than the few sentences that represent a story. Many successful teams have found that the best way to capture system behaviors is in the form of acceptance tests, best derived by use of acceptance test-driven development (ATDD) or BDD. The acceptance tests supplant the nebulous conversation with real meat. A test’s name describes the goal it accomplishes, and its narrative provides an example that quickly relates the details of system behavior. The set of test names describes the complete set of designed system behaviors. The tests capture the important detail behind the discussion triggered by the story.

A story is not a feature, and it should always trigger a conversation.

Comments

xpmatteo March 20, 2013 at 1:36 pm

Hello Jeff,

I wonder if the “As a… I want …” format was invented by Mike Cohn, or rather by Tim McKinnon and other folks at Connextra


Jeff Langr March 20, 2013 at 3:08 pm

Now that I research it a bit, I see that the story format appears to pre-date Cohn’s popularization of it. Here’s a StackOverflow question: http://stackoverflow.com/questions/3441473/who-coined-the-original-user-story-template

It points to a Dan North posting on the Yahoo XP list from 2003, but that is later than a 2001 date from your Connextra info. I wouldn’t doubt that the Connextra folks came up with it, but do you have any other links (with a bit more info about the XPDay conference)?

Mike is a good guy and a great popularizer of the ideas of others, so I don’t want to discredit him for broadening use of the format, but I will remove the possessive from the above post.

Thanks for the clarification in any case! I hadn’t seen the Connextra card before.


Dale Keener March 30, 2013 at 10:21 pm

Timely post Jeff.

Getting a new PO on our team. Likely going to be filled internally by someone without agile/scrum experience. Probably going to be sent to training and I expect him to come back thinking that he’s just going to be responsible for the “standard story” templates. They’re great for tracking projects, but the meat is in the conversation or other artifact.

I’ve been very apprehensive about what’s going to happen. But, your post gives me hope. We started doing ATDD a couple of years ago. Hoping that by adding acceptance test definition (or at least collaboration on them) it will provide us with enough definition.


Share your comment

Jeff Langr

About the Author

Jeff Langr has been building software for 40 years and writing about it heavily for 20. You can find out more about Jeff, learn from the many helpful articles and books he's written, or read one of his 1000+ combined blog (including Agile in a Flash) and public posts.