Qui ? Quoi ? Pourquoi ?
-
Quel utilisateur ? S’agit il d’un client ? d’un administrateur ? d’un client en free trial ? etc.
-
Quelles actions réalise-t-il ? Quelle fonctionnalité utilise t il ?
-
Quel est le résultat qu’il veut obtenir ? A quel besoin cela va t il répondre ?
En tant que <qui>Je veux <quoi>Afin que <pourquoi>
As a <who>I want to <what>In order to / so that <why>
Par exemple, pour un site d’informations, on pourrait avoir un
As a paying userI want to save some posts of interestSo that I can find them back easily in the future
Si ce template n’est pas obligatoire, une bonne User Story doit malgré tout contenir ces informations pour bien savoir à qui on s’adresse, dans quel but, et quelle est l’action à réaliser : c’est en particulier en répondant au « pourquoi » qu’on se force à prendre un peu de hauteur, et qu’on s’assure que la fonctionnalité apporte bien de la valeur ajoutée au produit. Il vaut mieux avoir peu de features, mais toutes très utiles, plutôt qu’une accumulation de fonctionnalités qui ne répondent pas (ou mal) à un besoin.
Mais du coup, une US, c’est juste ça ?
OK, c’est clair, mais du coup, ça a l’air assez gros finalement, une US…
Et bien justement, on s’y perd parce qu’il y a beaucoup d’abus de langage avec ce terme. Une US doit être petite pour être INVEST, mais on entend souvent aussi qu’il faut la découper en plusieurs plus petites US. Et du coup, on ne sait plus pour quelles US il faut rédiger les “En tant que…je veux…afin que…” !
Pour lever ces ambiguïtés, je préfère utiliser des mots différents pour des concepts différents. La macro-fonctionnalité s’appelle une Epic. J’entends par macro-fonctionnalité tout concept suffisamment gros pour avoir plusieurs options/écrans/fonctionnalités : par exemple, le système d’achat sur un site marchant, l’onboarding de votre application, etc… Chaque epic est composée de plusieurs US, et chaque US peut elle-même être découpée en plusieurs taches. On obtient ainsi un découpage en 3 étages Epic/US/Tache, qui peut ne pas être suffisant sur des systèmes vraiment complexes, mais qui permet néanmoins de répondre à la grande majorité des situations.
Tous ces découpages peuvent être faits suivant différentes stratégies :
- découpage fonctionnel (1 tache pour rajouter chaque règle fonctionnelle)
- découpage technique (1 tache pour chaque strate logiciel/besoin technique)
- découpage technique , centré sur la testabilité (on développe le frontend d’abord et on le teste, puis on y branche l’API et on teste les 2 ensembles, et enfin on branche le backend et on teste la totalité : les mocks réalisés aux différents niveaux peuvent aider à la maintenance future du logiciel…)
Chaque découpage a ses avantages et ses inconvénients, mais dans une stratégie Agile, il est vrai que le découpage fonctionnel reste souvent le plus pertinent, puisqu’on ajoute de la valeur ajoutée au produit à chaque US.