Skip to content

What makes a good story

April 10, 2009 by Jack Milunsky

Introduction
Leading on from last week where I described that their are two main parts to user stories, the user (or persona or role) and the story (a short description of the intended functionality), this weeks blog is intended to focus on specific details on how to write good stories.

The three C's
Most of you are already aware of the 3 C's i believe originally conceived by Ron Jefferies - Card, Conversation and Confirmation.

Card
The card is important in that User Stories are meant to be written on Cards. My interpretation of the card metaphor is that Stories need to be short and concise enough so that they can fit on a single card. It's imperative that Stories are small enough such that they can be estimated, can be completed in a single iteration. When teams struggle to come up with estimates, this is usually a good sign that the story is too big and should be broken down. It's good sometimes however for longer term planning to have large stories i.e. epics or themes. But these need to be broken down into small enough chunks as they get closer to being prioritized into a sprint. Another great feature of the Card metphor is that it's meant to be very visual. It's always great to walk into a Scrum room and see the cards on the wall. At a glance, you can see the story, the estimate, how much time is left, and what state it is in. (open, in-progress, in-test ,accepted). Cards also provide the sense that they're dynamic. i.e. they can be changed, updated, moved, and trashed. That's the whole idea behind the Agile philosophy - to accept and embrace change.

Conversation
What makes the Conversation so important is that the conversation is much much more important than the story itself. That being said, it's still important to get the story right. Another thought on why Conversation is one of the 3 C's is that conversations are usually understood by all parties i.e. developers and customers alike. It's important that the story description is written in the customers eyes as this is most easily understood by everyone and so as not to get confused by technical jargon.

Confirmation
The C in confirmation is all about identifying up front what is going to make the customer happy and accept the story as completed. By definition, user stories must be testable. By providing the test cases up front, the team is properly setup to succeed. This really helps to prevent churn and back and forth with the customer at the end of the sprint.

Capture
There are many ways in which to capture (dare I suggest this is the fourth C) user stories. The best way I find is by way of User Story workshops. The reason I like workshops is that it's cross functional and it generates lot's of "Conversation". And especially if you're trying to capture a lot of user stories in short while, this is by far the best approach. There is nothing like a good brain storming session to get the creative juices flowing. Other ways include interviewing end users, watching users use the software, competitive analysis etc.

Backlog
An interesting article I saw today on user stories asked the question "is there need for an Idea Log" i.e. a separate log for ideas to be formulated before going into the backlog. My opinion on this is that you never know when and where the next great story is going to come from. Every idea is probably a good one and should be considered. I still believe in a single backlog to manage all user stories. Even if it get's a little out of hand. In this case, one can consider initially grouping multiple user stories to make it more manageable. And then, when the story is considered high enough of a priority, the story can be dis-aggregated into smaller ones. There's a certain importance suggested when telling customers "it's on the backlog". If it doesn't go on the backlog, folks are going to stop coming up with ideas.

Story template
Finally, when you write user stories be sure to include the benefit, i.e. "As a frequent flyer, I'd like to redeem my air miles because they're about to expire". The reason for the story ads color to the story and helps the developer to understand the intent a little better.

Happy story writing























About the Author: As COO and Scrum Master, Jack Milunsky heads software development at Brightspark. Jack is an early adopter of Scrum and has a great passion for early stage startups. Jack is co-creator of Agilebuddy, a next generation Scrum Application SaaS. Jack combines over 18 years of experience managing software development teams both large and small. You can follow Jack for great tips on Agile at http://twitter.com/agilebuddy

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters (without spaces) shown in the image.

Best of AgileSoftwareDevelopment.com