agile top banner

How to Write A Well-Formed User Story

Read it in 7 Mins

Last updated on
31st May, 2022
Published
17th Oct, 2018
Views
5,571
How to Write A Well-Formed User Story


Bill Wake has given us the mnemonic INVEST which help us in writing a well-formed User Story.

   Working with User Stories may be easy, but writing effective User Stories can be hard.

INVEST By Bill Wake

Top challenges in Writing User Stories:

  • Getting teams engaged.
  • Adding too much or too little detail
  • Splitting stories.

                Reminder!!!!!!!!!!!!!!!

    Top challenges in Writing User Stories

Story writing workshop is important to understand the User Story in details and who are the users of that particular functionality and what the users do to use the product.


Conduct a Story writing workshop Quarterly.



Three tips for a successful story writing session are:

  1. Set the single objective for the meeting.

          Objective should be MVP (Minimum Viable Product.) and engage the team in various discussions on top user Stories with the Product Owner.

  2. Have the right participants,

           Scrum master, Product Owner and other stakeholders, Development team (Agile coach) (optional) may be User Roles.
    Ask the Product Owner about the top requirement/features to be delivered.

    In MVP, Brainstorm the requirements in detail which will help in a more innovative solution.
    Visualize the relationship between stories.

    User Story Mapping technique:

    Document each step in the process. Writing the sequence of steps needed to complete the user  story will make it clearer which may have been overlooked and easier to estimate. The chances of missing any functionality can be minimized.
    We can read the below functionality is Login and enter credentials, you may also click on “forgot password” and then submit.

    User Story Mapping technique

    Another advantage of using mapping is that we can get the prioritized list of user stories as mentioned in the below diagram by lanes.

    Another advantage of using mapping

    SPIDR has come to our rescue. Beautiful concept given by Mike Cohn.

    How to Split a User Story: Biggest challenge…

    How to Split a User Story

    Spikes: -The user story is large and difficult to split when there is a spike activity involved in it. Spike doesn’t lead to any working functionality but it just for the knowledge enhancement for the team for example-Investigation of new technologies and investigating different tools etc.

    Paths: - The user story may be large because of the different paths associated with it. See the flowchart below to understand the example: In an e-commerce website, after selecting the items the payment method cart, the payment method can be visa card, mastercard or PayPal.


    So, it is recommended to split the user story based on the number of paths taken.
    It can be easily logically split into small stories as:
  3. As a <user>I want to pay using credit card or
  4. As a <user>I want to pay using PayPal


Here, there is no need to split using visa card or mastercard, as both come under the category of credit cards.

Interfaces: - Split a story across multiple interfaces (mobile OS or browser) or data interfaces.

Example: As a <user >I want to display in Android device.
As a <user > I want to display in IOS device.
As a <user > I want to display in web browser.

So, it can be split into 3 different logical user stories.

Same is the case with the browser also. Split by different browsers example: Chrome, IE, Mozilla etc, because working in all browsers will take time and the efforts would be large.

There are a few scenarios in which there are complex interfaces. A perfect example will be a sign-up form (with the details) but blank UI. It means the functionality is fully working with buttons and links but no color and proper UI/UX image. The UI can be built in subsequent sprints with a different user story. So, separating the UI work with functionality is also a good way to split the user story.

There is a similar case when the user story says- As a <user> import data from a file and note says (Must support: CSV, Excel and XML) Split each supported file format with different user story as-

As a <user> I want to import data from a CSV.
As a <user> I want to import data from an Excel.
As a <user> I want to import data from an XML

Data: - Develop an initial story with a subset of data.

Example: Suppose I need to buy a car.
As a car buyer I want to know what is the best car in the market.

To come up with this decision, we need to investigate many things example consider mileage, cost, big, small, comfort, features etc. as a separate user story.
As a car buyer I want to buy a car with minimum cost.
As a car buyer I want to buy a car with good mileage.
So, a functionality is developed incrementally with different data inputs to buy a car.

Rules: - Relax business rules or technology standards in an initial version of a story.
Sometimes a user story is considered as large because of the different business rules or business standards.
Example: I want to buy something online for my kid’s birthday party, at least 15 items.
But website shows there is a limitation of 2 items per buyer.
Relaxing a rule is sometimes followed by a user story which is a great way to split.

For example, in a project, we develop some functionality (sort the employees with their skill set). This will be a database query and may take quite a few seconds depending on the load. So, there is a performance issue which is very important to consider. Better to split this as a separate user story.

Add the right amount of detail to the user story. Not too much detail not very less…The right balance is required…


 But how to find out if the details are in correct proportion or not?
The answer is “Retrospective”. Ask each team member if the detail that was given was enough to complete the user story in one iteration.

JUST ENOUGH AND JUST IN TIME

The reason is that if the information provided by the BA is not sufficient to complete the user story in one iteration, then there will a delay in the project delivery and customer will not be happy. Similarly, if the detail is too much then a lot of work in upfront needs to be done and the project delivery will be on time and with the exact functionality which was decided before the start of the sprint more like a waterfall model

  • A very important aspect while defining the user stories is about user roles. Avoid writing user stories from the perspective of a single user, identify different user roles who will interact with the software. Write stories for a single user.
  • Create constraint cards or write tests to ensure the constraints are not violated.
  • Keep the user interface out of the stories for as long as possible.

Let us see some examples of user stories which look fine but can be written in a much effective way.

1) As a Product Owner, I want to display my ratings on my webpage.
Issue/Drawbacks- It is not only about “you”. Focus on End users and stakeholders.
Correct: As a trainer, I want to display my ratings on my web page so that the visitor can choose wisely.

2) Design Brochure Layout

Drawbacks: Not independent, No business value.
Correct: As a restaurant owner, I want to design Brochure Layout so that the visitor gets order from it.

 “Identification of who what and Why are the key factors”
So, the user story suggested format/template is:
As a <>, I want <> so that <Business value>.

Few more examples:

Story
Description
The user can run the system on windows xp and Linux
Good user story, but still suggested to split into three
(Windows,XP and Linux)
The user can undo up to 50 commands
Good user story
All graphing and charting are done by third party library.
Not a good  user story as user will not care how graphing and charting are done.
The system will use log4j to log all the messages
Not a good  user story and log4j should not be written as logging mechanism.
The user can export data to XML
Good user story
A user can quickly master the system
Neither quickly and master should be defined.
Needs to be changed
Profile

Shilpi Jain

Blog Author

Shilpi is an experienced Scrum Master have 9+ years of experience in IT industry. She worked in companies like GE Healthcare and Nokia Siemens and currently working as a freelancer where she has contributed in many Technical Articles on Scrum/Agile, Project Management Tools (Atlassian, Jira and Rally), Project Management, Scrum Agile Certifications Questions and Answers (Test Paper Writing). She carries certifications like Certified Scrum Master, Fundamentals of Scum, Certified Six Sigma Black Belt (CSSBB). She always shares her personal experiences in her Articles. She is a passionate writer and blogger about the Scrum and Agile Methodology.