User Stories – the most misused tool in the Software Development Universe
User stories may be by far the most abused and misused XP practice ever conceived. First, look at the name. It’s a USER story. So you need an actual live human being to even meet the naming criteria.
As a <certain type of user>
I want/need <some functionality>
So that <business reason>
The Green Part:
This is a description of a certain user. Be as specific as you can be. Ideally there will be the first and last name of an actual user of the functionality. If you write “As a user I want …” this doesn’t really count as a user story.
The Red Part:
This is the part where you actually write the functionality you think will work in this case. Easy-peasy.
The Blue Part:
This is the hardest part. You actually need to know why does your user need that piece of functionality. Heavens, you will have to actually TALK to the human to know that. Or your Product Owner (I just got chills … ooooh …).
So a little trivia for you:
- Which part of the User Story is the most important and you can’t write one without it?
- Which part is optional?
- Which part is usually the only one used?
Give yourself a couple of minutes before decoding the correct colors of answers:
So user stories need to have a live person behind them and they can’t go without a reason. So let’s see some examples of VERY BAD user stories:
As a system module I need an interface to communicate with the report section so that I can generate reports
As a user I need a login
As an administrator I need a panel
As a report I need something to generate me
As a registered user I need a login to log me in
So just don’t. Pretty please!
Few examples of neat user stories:
As a registered user I need something to identify me for the website.
As an elderly shop owner I need my new administrative panel so that I can get new functionalities along with old ones that were easy to use for me.
As a football coach I need an administration panel so that I can automatically bribe referees without leaving traces on my personal accounts.
As any polish politician I need a mute button on the media so that I can silence critique.
So if you’re going to use User Stories use them wisely. And the wisest way to write them is to omit the red part. Really. It’s hard, but pays off!
Splitting your user stories
Sometimes user stories are big. Some people call them epics then. We don’t obsess with the naming – use the one you like the most. But the one thing you have to remember is to ALWAYS keep them big enough to hold business value. How will you know that? As long as the BLUE PART is making sense, the story has business value. I know that v-word will be haunting you over and over. Get used to it. It’s not going away.
So let’s see how we can split user stories so that they have business value. This is sometimes referred to as the Concept of Travelling Light – why? Because if you shine a beam of light on one end of the system it should be visible on the other end with the same user story. Short – you have to span all the layers of the system (UI, Logic, Persistence, Abstractions etc.)
Let’s take an example User Story to split:
As a credit card owner I need to be able to input my correct payment information so that I can pay for my plane ticket.
Tough one, eh? Maybe not that bad. Let’s see how can we split it.
- Sub-user type: Credit Card Type
As a [Mastercard/Visa/Amex/Discover] owner I need to be able to input my correct payment information so that I can pay for my plane ticket.
- Data: What payment information do we need
As a credit card owner I need to be able to input my correct [name, card number, expiry date, CVV code, billing address, messaging confirmation code] so that I can pay for my plane ticket.
- Payment steps/elements
As a credit card owner I need to be able to input any payment information so that I can make sure I can use my credit card
As a credit card owner I need to be able to input credit card information so that I can make sure it’s valid
As a credit card owner who has secondary security measures on I need to be able to input the validation code so that I can feel safe while processing my payment
- Maybe you see another line of division?