As a <user> I want <function> so that<value>
Above is the example of a user story template. User stories are the main inputs to the technical team and so form the heart of the agile development methodology. The team gets the inputs from the user stories and goes on completing those user stories building product increments. So the one writing user stories should get them right always. The product owner or the business analyst writing user stories should know how to write them and meet the team’s requirements.
To write better user stories, one can always choose the INVEST method which is mostly used in writing better user stories. INVEST is an acronym and can be elaborated into the following:
I – Independent
N – Negotiable
V – Valuable
E – Estimable
S – Small
T – Testable
Let’s see what all those really mean:
The stories should be independent of other stories. They should not be dependent on other stories. This is because dependencies make the stories difficult to prioritize. If the stories are independent, then it is possible to work on stories in any order. So if there are dependencies it becomes difficult to work on a story without working on other stories.
A story describes what needs to be built. A story is never a contract and it’s a form of a conversation between the stakeholders. It can be modifiable and should be always focused on meeting customer needs.
A story should also be valuable. It should be valuing the user that the story is written for. It is not considered for the overall value. That’s the reason the stories are given priorities.
A story should be estimable so that we can prioritize it properly. If we are not able to estimate the story, then we cannot time frame a sprint and the time estimate affects the whole project.
Stories are small chunks of work and they need to be small. A story should be a work of 3-4 days and a sprint should be of not less than 2 weeks.
Stories should be testable in the sense that they should meet the set acceptance criteria. They need to be testable so that they QA can test them to see if they are meeting the set criteria and if the goal is met or not.