What makes a great user story

Facebooktwitterredditpinterestlinkedintumblrmail

User storyUser stories are a great way to describe what a future system or solution should be able to handle, and they are great to span the communication gap between UX-designers (user experience designers) and the developers.

User stories are bundled in what is called epics and are broken down into sub tasks.

The user story format.

The user story should always be written using a specific “formula” or syntax. The format is as follows:

As who, I want to what, so that why.

If a user story is put in this format, you are sure to give developers a good insight into what is really wanted and you will make sure that they don’t start doing a lot of guessing once they start developing.

Just compare the two following user demands for a musical festival website. The two demands basically ask for the same thing but one demand is written as a user stories and the other isn’t.
Demand 1: “You should be able to print directly from the website”.
Demand 2: “As a festival visitor, I want to be able to print the musical program, so that I can mark the bands I want to hear”.

The first demand is very open – What should be printable? Is it the tickets or a plan of the festival grounds and maybe we should include the entire website menu? Maybe it is the address of the festival office that is important or a receipt for the purchase of the tickets?

Let us say that “Demand 1” is written 3 months prior to it being implemented and then believe me – No one can remember what “print” was meant to cover (not even the customer).

The user story answers all these questions – We know exactly what is to be printed in what format and by whom. AND it is all documented, so if several months passes before we start implementing, then we will still know exactly what we wanted when we did the user story.

The flow in creating a great user story.

There are three steps and three different focus groups which needs to give input if you want to have a great user story and if you want to create a good flow once the development starts. These groups are the future users, UX designers and the solution developers.

The short version is that the future users put their demands in epics, the UX-designers will break these epics down into user stories and the developers will break down the user stories into sub tasks which they will start implementing.

An example:
Let us say that the users create an epic called “Login”, which they describe as follows “The website should support logins, so that classified information can be shared with employees of the company while they are on the road”.

This epic is then broken down into one or more user stories saying:

  1. As an employee, I want to register as a user, so that I can login.
  2. As an employee, I want to login, so that I may access the classified information.
  3. As an employee, I want to be able to reset my password, so that I can get a new one if I forget the old one.
  4. As an administrator I want to be able to delete a user, so that I can make sure they can no longer access the files when they leave the company.

And so on…

The user stories are handed over to the developers who will then break them down into subtasks of no more than a day’s length. This could look something like this;

  1. “As an employee, I want to be registered as a user, so I can login”:
    1. Create login form including username and password,
      Estimate: 0.5 day.
    2. Create userdatabase tables,
      Estimate: 0.5 days.
    3. Set up MySQL database,
      Estimate: 1 day.
    4. Setup certificate for HTTPS,
      Estimate: 0.5 days.
    5. Order certificate for HTTPS,
      Estimate: 1 hour.

Once the breakdown into sub tasks is done, you simply add up the time expected for implementing the user story, which in this case would be 2.5 days and 1 hour.

The same pattern is repeated for all user stories related to the epic “login”, and the entire budget for implementing the epic is presented to the customer/product owner for approval.

A little tip – Use “accept criteria’s”

A little tip – When doing the user story, you should put in about five accept criteria’s related to the user story. This will help til developers to pinpoint exactly where to put their efforts. However, accept criteria’s will also help the users and customers to check if what they requested 6 months ago has been implemented, and it will eliminate scope creep as well.

An example of accept criteria’s for the user story regarding printing the festival program which we looked at earlier could be.

  • Accept criteria 1: The entire program should be printable.
  • Accept criteria 2: The program should fit the paper size available in the printer.
  • Accept criteria 3: Pictures of the performers should be included if they are available on the website.
  • Accept criteria 4: The Festival logo should be in the top right-hand corner of each page printed.

Imaging how simple it is to test a solutions by simply checking the accept criteria’s before you can sign it of to production.

Mind your estimates

Facebooktwitterredditpinterestlinkedintumblrmail
Planning poker
Planning poker

Estimating your project is the key to figure out how many resources a project needs in order to complete successfully. But estimates are also the key to measure whether everything goes as planned.

The estimate will give the steering committee or a potential client the ability to judge whether a project is worth implementing or not. In addition, if estimates are given to specific user demands (aka userstories), then the product owner/client/customer can make a judgment of whether a specific demand will give enough value to justify the expenses.

Doing estimates, both rough in the start of a project and detailed estimates later on, will give the ability to prove that the project is doing progress, if your estimates are over or under your budgets, if your deadline and milestones can be meet and so forth. There are various ways of doing this and numerous tools that can help you do it.

How to estimate?
There are two ways that I find especially useful when estimating tasks. One is by using hours and days and the other is by using points and complexity.

If estimates are done in hours or days, then the team members probably will have to breakdown the task and give their estimate on the tasks by telling the SCRUM master or project manager how many hours they would need to complete a subtask. Then adding up all the estimates will give the estimate for the entire userstory and then the estimate for the entire project.

However, breaking down every userstory before being able to give an estimate for an entire project might in some cases be too big a task to make sense (you don’t wanna spent weeks estimating a project that the customer don’t want you to do. In that case you can estimate the userstories by given them points or by rating their complexity. Once that is done, you can breakdown and estimate 2 – 4 userstories in each category, find the average time estimated for a complexity and then sum them all up.

An example.
You have 500 userstories in your project. You go through each userstory and give them points on the following in scale

  • 0 Points (No work needed)
  • 5 points (Being the simplest)
  • 20 points
  • 50 points
  • 100 points
  • Over 100 points

Once that is done, you will need to pick 4 userstories from each scale, break them down and estimate them thoroughly. Afterwards you will need to find the average of the estimates given for each scale and then multiply that amount of hours by the number of userstories in that complexity category. Once that is done, you can add up all the hours from each scale and you will have a descent idea about the resources you will need in order to finish your project.

Always follow up
You should always follow up on your estimates to see if they hold – Usually they do not, so beware of this. When you can see a trend in your estimates, you should try to figure out how much they deviate, and make sure to adjust the estimates for the rest of the backlog.

Once you do recognize that your estimates are off, you should recalculate the entire budget for the project. E.g. If all the tasks you complete has a 30% higher use of hours spent than what they was estimated for, then you should adjust your estimates accordingly by adding 30% to the remaining backlog, and then make sure to report your new budget to your steering committee and/or product owner and customer.

Change management in agile projects

Facebooktwitterredditpinterestlinkedintumblrmail

change-managementEvery now and again I get the question – How will you manage changes in the project, if it is agile? Most of the time I would like to be able to answer ”I don’t, agile means constant changes, and I’ll manage the changes by doing the project in an agile manner”. However life as a project manager isn’t always that easy.

In almost every project of a foreseeable size, you will eventually get to the point where the Steering Committee or your project owner want to know who decided to do a specific thing in the project you are managing. If you do things agile and don’t keep track of your changes, then you probably can’t answer that question – ”Who decided to use a top menu and not the left side menu that we planned to use right from the start”? Try and answer that question after 4 months of agile development with absolutely no change logs.

So how can you handle changes – Well, there are a couple of different ways, but they all involve using a log. If your project is done agile, then chances are that you are using user stories (if not, then you should try it out, it is awesome). If you are using user stories you can add a log to each user story, and simply keep track of what has been decide by whom, when it was decided and why. Then later on you can access that user story in order to answer why the menu was changed.
A word of caution, some SCRUM tools makes it had to access the items that has been completed and approved during your project. Always make sure that you can access old user stories and sprint logs in the SCRUM tool that you use.

A second way to handle this is by doing a good old fashion change log, however you should not do any long description in change management documents, or else you will drown in paperwork. In stead use a simple spreadsheet with at least the following columns:

  • ID number
  • Date for deciding to do the change
  • User story identification number
  • User story title
  • Description of what has been changed and why.
  • Who decided this.
  • What impact is expect to the project if any.

The third way, and that is for the spoiled project managers, is to have your product owner do the change management for you, but basically he or she will probably do it in the same fashion as described above, or else that person will be the one who will be drowning in paperwork.

Estimation and impact on the project
When doing changes to a project, even if it is agile, you should always make sure that the tasks are re-estimated and you need to know exactly what impact the change will have on your project – What seems like a simple twist in a steering committee meeting may have a big impact on the project when you present it to your developers. Therefor, you should never allow a change to be decided/approved/committed before you’ve got a complete overview of the impact AND are able to explain this to the rest of the project group.