Work in any technology focused company or industry (predominantly ecommerce business analysis for me) and you’ll come across the terms user stories, and/or requirements quite quickly, and you may be wondering exactly what they are and why they are needed, or perhaps….required.
Essentially both relate to capabilities that the software or process needs to provide in order to deliver value to the stakeholders. That can be value to the end user in terms of functionality that makes a site easier to use, or value to the business in terms of providing more detailed insights.
The key difference lies in the formatting, the language used, the level of detail, and how the teams responsible for delivering the features and functionality, work to build the software.
The key element to understanding a user story is that it is not a prescriptive and defined method of delivering software; it acts as an artefact that provokes a discussion (Ron Jeffries – 3 C’s: card, conversation, and confirmation) by the team about how they will build and deliver that specific piece of functionality.
A good user story is written from the perspective of the user (see persona’s in agile by Roman Pilcher) who will be using the feature, and as such will avoid specific language, and focus on simplicity as to what the user needsto be able to do, and how they will realise the value.
Boundaries need to be defined as to where each story ends, and when exactly can we say that the story has been fulfilled or finished; these are the acceptance criteria; what the team can demonstrate the user story will achieve.
The creation of user stories are not the sole reserve of any one role on the team, although it will usually be a Business Analyst or Product Owner as they will typically have insight into the value of the story and how it fits into the sprint goal or the project plan.
So putting it all together, an example user story for an ecommerce website feature for making a repeat order would be as follows. This is following the pattern of Given When Then acceptance criteria.
|As a||Existing customer|
|I want||To be able to repeat-order an order I have previously made|
|So that I can||Place an order quickly and easily and not have to search for products|
|Given||I am an existing customer|
|When||I am logged in to my account|
|And||I have previously successfully completed an order|
|And||Those products are still sold|
|And||The products are available|
|And||I click the re-order button|
|Then||A repeat order will be confirmed & shipped|
Requirements differ significantly in approach to user stories. Where user stories serve to provide a high level view of what the software needs to do and provoke a conversation, traditional requirements documents will be detailed and go into granular detail about how a system needs to act.
- Allow the user to re-order an existing order
- Allow the user to change the quantity of items
- Group fields together
An example in differences between a user story and a requirement, the requirements document is generally used by the developers as a blueprint on how to build the software. Whereas a user story will state what the software needs to do, but architecture decisions are purely in the hands of the people building the system.
User stories are consistently broken down into small, executable component parts – ideally to sing to the INVEST tune – which can be discussed, and then fleshed out. Whereas requirements documentation is already fleshed out and ready to be turned into code.
Which Is Better?
Having worked in Agile environments (mostly Scrum) with various different hats – Business Analyst, Developer, Product Owner – for the past few years, picking up the various certifications on the way (Scrum Master, Product Owner); whilst also having worked on a number of waterfall-ran projects, and working towards the more traditional British Computer Society’s International Diploma in Business Analysis, I’ve gained useful insight to the pros and cons of both approaches, and I would always favour user stories.
I can appreciate – at least theoretically – the need to have well defined requirements produced up front, but I do prefer to work with user stories; going through a requirements engineering process seems to place an implicit focus on the silo of functions, where analysis is kept separate from development which in turn is kept separate from testing. Whereas I’ve experienced more positive results when there is a strong collaboration between the team with persistent feedback loops with the client.