In this article, let’s see what an INVEST user story is. The acronym is simple to say, but it is more difficult to explain concretely what it is.
The acronyme INVEST
The acronyme INVEST means:
- I for Independent: each user-story must be independent of others on the current sprint.
- N for negotiable: the details must be negotiable. That’s why we write a user-story in one small sentence and a simple management rules
- V for valuable: each user-story must bring business value for trades or customers
- E for Estimable: each user-story must be estimable by the development teams; For this, these teams have to understand them well.
- S for Smallable: each user story must be well cut out to be delivered within just one Sprint.
- T for Testable: all user stories must be testable.
Now we will see theses rules in the details because I realized that it was not so easy to understand for everyone. More concretely, what is a user story INVEST?
INVEST: User story Independent
I often hear that it is not possible to be completely independent at the user-story level.
This is totally true if we stop on this term but in fact we talk about technical / functional dependence and not business dependence. The border is thin but totally real.
If I make an e-commerce website, I will have a user story to authenticate and a user story to create my account for example.
It is obvious that to authenticate, it is mandatory to create an account but it is not the case in technical/functional level. The developers could do the authentication without having n account creation. If it have a little business sense, it’s technically feasible.
We can therefore well define that these two user stories are independent ; but it would not have sense to release the product without on of the two user stories.
INVEST: Negotiable user story
We start a user story with a simple summary of the desired functionality. It’s not forbidden to put details like management rules but everything must be written in a very simple way so that the developers even the customers understand it quickly.
A user story is negotiable in product backlog refinement ceremony for example if all developers have no trouble to understand it. So always use simple words so that a child of 10 years can understand the content of your user-story.
INVEST: User story with real value
This point is sometimes very misunderstood but we use the concept of user story only for a functional application that has a real value for one (or many) users of the application.
I sometimes see “As developers, I want the database is full” … This demand has no value for one of the users; so, I advice you to avoid to create your user-stories like that.
Do not hesitate in this cases to authorize to use storyotypes: article Making user-stories of different storyotype. Anything that has no value for users should user other types of items.
Using “As …” only for real user stories allows to differentiate items that have business value and those that do not have it.
INVEST: User story estimable
Each user story will be estimated by the developers if we are not in a #NoEstimate philosophy; otherwise the developers will still have an idea of estimation in mind.
The developers can easily estimate user stories if your user stories respect the set of INVEST criteria. Moreover, if they can not, they will ask the Product Owner more details.
INVEST: User story smallable
Une user story doit être réalisable en un seul sprint ; au moindre doute, elle devra être redécoupée en plusieurs user stories. En général, on conseille au Product Owner de découper au maximum chacune des user stories (tant que les user stories filles restent INVEST).
A user story must be achievable in one sprint; at the slightest doubt, it will be split it in several user stories. In general, we advice the Product Owner that he have to split to the maximum the user stories (as long as the resulting user stories remain INVEST).
INVEST: User story testable
This point is relatively simple to understand. Each of the user stories must be testable. Moreover in relation to that, we ask the Product Owner to create a visible end in the user-story.
Here is an example to understand.
As a customer, I want to browse the site -> this action has no concrete end, he can navigate on multiple pages without stopping.
As a customer, I want to add a product in my basket -> this action has an indisputable concrete end.
Conclusion agile INVEST
You now have everything to make real INVEST user stories. Then, you have a clear understanding of the acronym INVEST.