A good User Story should pass the INVEST criteria; at least, that is what they teach.
(Paraphrasing is mine, it may not be verbatim as Allen described).
Allen also mentions a popular example of “Login User Story” to describe what is not a User Story.
“As a user, I want to log in, so that I can
update my books of accounts” is not even a User Story, because “Logging in” is
not a domain level work for an accountant; otherwise, it would have been covered
in textbooks of accountancy.
Now some of these expectations can be expressed by a large
number of users, and some by very few users.
Some expectations may take lots of work, and some can be fulfilled with
very little work.
Some expectations are technically challenging to implement, and some are quite
simple.
Some expectations can be fulfilled, some are impossible to be fulfilled, and some
may not be fulfilled because of a conscious decision of the Product Manager.
Negotiable,
Valuable,
Estimable,
Small, and
Testable.
INVEST is easy to remember. It is a nice sounding mnemonic. One can talk about it for a long time in any "A"gile class. The real question is, how useful this concept is to tackle real world challenges?
Here is my take on INVEST. Needless to say, YMMV.
(1) Independent:
In the very early stage of any new product/project/endeavor, a US can be independent of other USs. But as you progress, any new US would mostly be dependent on some other already built US. Because we always build some new feature/functionality on top of what is already built.
It is also possible that
some US cannot be built unless some other US is built. In short, for the majority
of USs in any product this "I" is a myth.
PO: With the help of this software, a Regional Manager should be able to assign Sales Targets
to Sales Reps. The assigned target is always Quarter-wise & Product-line
wise.
Dev Team: Ok. But can
we have the target as a single collective number?
Dev Team: I am just trying to negotiate to make it simple.
Dev Team: This is not a good User Story.
(3) Valuable:
Some User Stories are extremely valuable for the users; some
could be less valuable.
{ Translation: as long as you have a "V" and as long as you can make that cool sounding mnemonic, it is OK }
islandBRIDGE encourages a PO to assign a value to each User Story like this...
(4) Estimable:
Dev Team: This is
not a good User Story.
PO: Why?
Dev Team: We already
have all the details. But it is not estimable.
PO: Ummm
(5) Small:
Dev Team: I fully
agree that this is a critical User Story; but because it is big, it does not
fit in the required criteria of a good US.
PO: Of course, there will be big User Stories and small User Stories. We cannot say a US is good or bad depending on the size. BTW, what is that criteria?
Dev Team: It
should be small.
PO: What?
Dev Team: Yes. A
good User Story should be small.
PO: OK,
how small?
Dev Team: Small
enough to be completed in 2 weeks.
PO: Completed
by whom?
Dev Team: By us.
PO: So,
what do we do now?
Dev Team: Split it
into small User Stories.
PO: Maybe you should seriously rethink "what is a User Story". You
can split a User Story in small slices; but when you split a User Stories, you
will not get many smaller User Stories. You will get many small slices of a single
User Story.
Just like when you split a Country,
you do not get many smaller Countries, you get many States of the same Country.
Of course, we can deliver a
big User Story, by delivering many
small slices.
In fact, it is a far better
approach to slice a User Story (whether it is Big or Small) and seek early feedback after
delivering the first slice or first few slices.
Dev Team: Yes,
that is what we are saying.
PO: No. You are not saying that. If you say Slices are the same as many small User Stories, then you are using the
term “User Story” as a placeholder for a piece of work. And using the term
User Story in that fashion has some serious negative side effects.
{Whether a User story is Big or Small, it is always a good practice to make Slices of a User Story, build the User Story Silce by Slice. That way there is an opportunity to build Slices, showcase Slices & keep seeking feedback rather than shipping the entire User Story at one go. This way quick course correction becomes possible and creating big waste can easily be avoided.
islandBRIDGE goes one step ahead and allows to add only Slices in the backlog of a Sprint/Iteration, rather than adding a User Story. In fact, it is very natural for a User Story that few Slices are shipped, few are pending and few could be even dropped as you build and seek feedback. }
(6) Testable:
Keep aside a User Story, can there be any functionality/feature, however small, developed in any software which cannot be tested? Seriously??
If someone tells me that this US is not testable, I would say there is nothing wrong with the US; but something wrong with the Tester!
Maybe just to have a “T” so as to make that cool sounding mnemonic of INVEST.
No comments:
Post a Comment