Mike Cohen’s User Stories for Agile Requirements
Synopsis
Software requrements is a communication problem. those who want the new software must communicate with those who will build the new software. To succeed, a project reivew on information for the heads of very different people: on one side are customers and users and sometimes analysts, domain experts and others who view teh software from a business or organisational perspective; on the other side is the technical team.
By now we’ve learned that we cannot perfectly predict a software development project. As users see early versions of the software, they come up with new ideas and their opinions change. Because of the intagnibility of software, most developers have a notoriously difficult tiem estimateing how long things will take. because of these and other factors we cannot lay out a perfect pert chart showing everything that must be done on a project. So, what do we do?
We make decisions based on the information we have at had. And we do it often. Rather than making one all-encompassing set of decisions at the outset of the project, we spread the decision-making across the duration of hte project. To do this we make sure we have a process that gets us information as early and often as possible. And this is where user stories come in.
What are stories?
- Card - Stories are traditionally written on note cards and these can be annotated. However, they aren’t the requirements themselves they are simply a reminder for a conversation with the customer
- Conversation - The details of the story are worked out in a conversation with the customer/ product owner
- Confirmation - Acceptance tests confirm that the story was coded correctly
Examples
“As a frequent flyer I want to re-book a past trip so that i save time booking trips I take often.”
Format of a story should be:
As a user, I want to x, So that I can x
Where are the details?
The details aren’t written on the card as this is the detail that will be the conversation with the customer. If stories become too detailed they can be broken down into other stories and the original card simply ripped in half. The other part of the detail is the user acceptance test or “conditions of satisfaction” which are written on the back of the card. e.g. verify that a premium member can cancel the sam day without a fee (a tick is placed next to the box when this has been confirmed by the user.)
How to write stories
Set up a workshop and brainstorm as many stories with the user as possible. There is no prioritisation at this point.
- User modelling - brainstorm all user types (could use personas here)
- Everyone is involved
Stories should exhibit some of these 6 features INVEST:
- Independent - Each story shouldn’t carry 12 more along with it. They should be independent of one another
- Negotiable - The story is not a contract
- Valuable - The story should be valuable to the user or customers. What is the business benefit?
- Estimatable - The story needs to be small enough and known enough to be estimated. If it can’t be estimated then a card of discovery can be written to drive the team towards the original story getting done.
- Sized appropriately - Small stories for stuff we are giong to do now and larger ones for stuff we’ll do in 6 mths time
- Testable - Stories need to be tested and verified that they have been delivered
How do I break down a story?
- Break it down in terms of operations
- CRUD - just deliver create first off?
- Look at data types being supported can you cut data types down?
- Break down everything that is required for the next iteration
- On big projects if you have some epics then leave them to be broken down. Staple stories together than run along a similar theme
When do I know that the card is finished?
- If a story drags on because of iteration and feedback can you break it down?
- Finish the story by best endeavours given the time available
Why are stories better than specs?
- No training required
- People remember stuff when they do stories
What happens if I get audited and they want to see the spec?
- Write some documents if you need to
- Photocopy the story cards
What about non-functional requirements?
Try to write these in the same syntax
mike@mountaingoatssoftware.com