Vous vous souvenez quand je vous disais qu'il fallait absolument se réunir et discuter de la signification du terme, en cas d'erreur ?
Vous pouvez par exemple enfermer les gens dans une pièce et ne les laisser sortir qu'une fois qu'ils se sont mis d'accord.
Bon, je vous l'accorde, ça semble un peu radical. 😱
Alors, pourquoi ne pas essayer quelque chose d'un peu plus amusant, comme l'event storming ?
L'event storming est un atelier qui réunit les différentes parties prenantes impliquées dans la construction du produit, notamment les développeurs. Il permet d'esquisser ce que devra être l'application. Vous allez pouvoir déterminer ses objectifs, mais également les événements connexes qui entraînent l'atteinte de l'objectif.
Bien sûr, vous pouvez utiliser toutes les informations récoltées en session d'event storming pour peaufiner votre modèle de domaine.
Organisez votre session d'event storming
Avant de démarrer réellement la session, quelques préparations s'imposent.
Définissez la raison pour laquelle vous organisez la session d'event storming
Par exemple, vous créez une nouvelle application ou ajoutez de nouvelles fonctionnalités à une application existante. Afin que votre réunion ne parte pas dans tous les sens, elle doit avoir un objectif. Alors, fixez des limites assez souples, permettant de discuter sans se perdre en cours de route.
Invitez les personnes concernées
Comme je vous l'ai déjà fait comprendre, cela comprend les différentes parties prenantes impliquées dans la construction du produit, plus les développeurs.
Trouvez un moment qui convienne à tout le monde
Alors là, le véritable challenge commence. C'est comme demander à un groupe de se mettre d'accord sur les pizzas à commander. Il y a toujours quelqu'un qui n'est pas d'accord (bon par contre, pas de pitié pour ceux qui veulent la pizza à l'ananas). Mais revenons à notre application : faites au mieux. Si vous ne pouvez pas avoir toutes les personnes, essayez d'en réunir un maximum.
Préparez votre matériel
C'est le même style de réunion qu'un brainstorming, alors il faut beaucoup de place pour pouvoir vous déplacer. Les gens vont écrire des idées sur des post-it ou des fiches au format bristol. Vous devez prévoir un grand mur pour coller les post-it ou coller plusieurs tables pour les cartes.
Vous avez tout ce qu'il vous faut ? Parfait. Commençons notre réunion d'event storming ! 🚀
Menez une réunion d'event storming !
Pour que votre réunion d'event storming se passe au mieux, quelques étapes sont nécessaires. Afin de vous donner une meilleure idée de la façon d'appliquer cette méthodologie, nous étudierons différents exemples.
Étape 1 : Suscitez des idées
Imaginez une colocation qui souhaite acheter une voiture en commun. La meilleure méthode consiste à déterminer comment chacun utiliserait la voiture, afin de pouvoir :
choisir le véhicule approprié ;
et trouver le meilleur moyen de la partager.
Mais par où commencer ?
Demandez à une première personne de dire un objectif, et de l'écrire sur un post-it. Elle dira, par exemple :
Colocataire A : « Je veux utiliser la voiture pour aller au travail. »
Parfait. Vous pouvez poursuivre avec une question :
Colocataire B : « Comment allez-vous faire ? »
Colocataire A : « Je commence par déverrouiller la porte du véhicule. »
Colocataire B : « Super. J'imagine déjà l'application. Vous saisissez un code PIN à 4 chiffres sur la porte côté conducteur... »
😬 On se calme.
C'est comme ça qu'arrivent les ennuis. Vous êtes déjà en train de réfléchir à comment créer la solution, au lieu de vous concentrer sur le domaine métier, à savoir le besoin. C'est un problème. Vous détournez la discussion alors qu'il devait s'agir d'une activité de brainstorming sur l'utilisation de la voiture. Vous allez perdre l'attention de la moitié du groupe si vous commencez à vous concentrer sur les détails techniques.
N'oubliez pas : l'idée ici est bien de favoriser la discussion, qu'elle puisse aller dans toutes les directions. Cela peut bien sûr faire naître des idées à propos de fonctionnalités associées, ou de la façon dont une fonctionnalité s'intègre à une autre. Tout est bon ! Parfait, écrivez cela et continuez, mais ne bloquez pas la conversation sur la technique.
Parfois, un sujet en amène un autre. « Déverrouiller la voiture » peut vous faire penser à « démarrer la voiture », qui à son tour peut vous faire penser à « mettre ma musique préférée » et « rouler » ou même « être bloqué dans les embouteillages ». C'est bon ! N'oubliez pas que vous essayez de créer un modèle de domaine ! Donc, plus vous aurez d'informations sur le point de vue de l'utilisateur et le vocabulaire, mieux ce sera.
Étape 2 : Regroupez les idées
Bravo, vous avez maintenant un joli mur recouvert de post-it. Alors, qu'est-ce que vous pourriez bien en faire ? Il va maintenant falloir chercher les idées qui vont ensemble, pour les regrouper.
Revenons à notre exemple de la bibliothèque. Vous pouvez commencer à regrouper les actions qui se rapportent aux livres :
Vous pouvez même donner un nom à ce regroupement, tel que « commande de livre ». Cet ensemble regroupe à la fois les premières commandes et les commandes pour remplacer les livres abîmés. Vous allez vous servir de ces groupes pour construire vos domaines. 🚀
Étape 3 : Approfondissez et trouvez les déclencheurs d'événements (ou event triggers)
Pour appréhender au mieux votre domaine, il est essentiel de comprendre les événements et les déclencheurs d'événements. Vous vous en doutez sûrement, les événements sont les éléments qui se produisent. Les déclencheurs sont la cause de cet événement. En général, une interaction d'un utilisateur avec une application déclenche un événement. Mais il peut également s'agir d'une autre application qui interagit avec la vôtre. Par exemple, votre programme imprime un bordereau d'expédition dans l'entrepôt d'une usine. Le déclencheur viendra d'un programme de commande interne ou extérieur à l'entreprise.
Pour remonter jusqu'à la cause initiale de ce processus, vous pouvez poser une question : Qu'est-ce qui s'est passé avant ? Continuez à poser cette question jusqu'à ce qu'il n'y ait plus rien « avant ». Ce sera votre point de départ pour comprendre comment l'utilisateur interagit avec l'application.
Je ne le répéterai jamais assez : ne vous perdez pas dans les détails liés à l'implémentation. En tant que développeur, c'est tentant, mais, dès que la conversation dévie vers des termes techniques, vous égarez votre auditoire et oubliez l'objectif de la réunion.
Voici un exemple concernant une application destinée à un restaurant. Elle doit permettre aux serveurs de suivre les commandes et les paiements. Voici la transcription de la discussion avant la conception du programme :
Développeur : « Quel est l'objectif prioritaire que nous voulons atteindre ? »
Serveur : « Que les repas servis soient payés. »
Développeur : « Et pourquoi est-ce important ? »
Serveur : « Eh bien, c'est ce qui permet au restaurant de rester en activité. »
Développeur : « OK, alors comment cela est-il censé fonctionner ? »
Serveur : « Le client paie son repas en espèces ou par carte. »
Développeur : « Qu'est-ce qui s'est passé avant cela ? »
Serveur : « Le client a eu son repas. »
Développeur : « Comment avez-vous su ce qu'il fallait préparer ? »
Serveur : « J'ai pris sa commande. »
Développeur : « Comment savait-il ce qui était à la carte ? »
Serveur : « Je lui ai donné un menu. »
Développeur : « Comment avez-vous su qu'il avait besoin d'un menu ? »
Serveur : « Il était assis à une table vide. »
Développeur : « Comment savez-vous quelles tables sont vides ? »
Serveur : « Je regarde le plan des tables et vois celles où il n'y a personne. »
Développeur : « Comment les gens sont-ils ajoutés aux tables ? »
Serveur : « On les transfère depuis la liste des personnes enregistrées. »
Développeur : « Comment sont-ils arrivés sur cette liste ? »
Serveur : « Ils sont entrés et ont dit qu'ils avaient faim. »
L'événement déclencheur est donc l'entrée d'un client dans le restaurant. La première interaction avec l'application du restaurant est leur ajout sur la liste des personnes enregistrées.
Une fois tous ces éléments décrits, ils seront intégrés à votre modèle de domaine. N'oubliez pas que le modèle n'est pas seulement un document formel, gravé dans le marbre. Il évolue au contraire, au fil de vos conversations, et est repris jusque dans votre code.
Expérimentez 👨🔬
Organisez une session d'event storming ! Rassemblez le matériel, puis invitez un groupe d'amis, vos colocataires ou votre famille. Choisissez un thème général, comme « organiser un voyage », « faire des tâches ménagères » ou « choisir un film pour la soirée de vendredi », tout ce qui peut faire parler les gens. Captez toutes les informations que vous pouvez !
Lorsque vous l'aurez testé une fois avec des personnes que vous connaissez bien, vous vous sentirez plus en confiance pour l'organiser en vrai avec des collègues ou des clients !
En résumé
L'event storming est un atelier réunissant les différents acteurs impliqués dans la construction du produit, et les développeurs, pour discuter du futur fonctionnement de l'application, du point de vue de l'utilisateur.
Les étapes nécessaires pour une session d'event storming sont les suivantes :
Définissez l'objectif de votre session d'event storming.
Choisissez les personnes adéquates, le bon moment et une salle suffisamment grande.
Démarrez avec une idée et laissez-la évoluer.
Toutes ces nouvelles connaissances découvertes sont retranscrites dans votre modèle de domaine.
Ne vous perdez pas dans les détails liés à la mise en œuvre lors de votre session d'event storming.
En somme, l'event storming vous aide à comprendre ce que doit faire l'application. Cela implique de bien comprendre les définitions des concepts métiers des différents acteurs. Ces concepts vous permettront d'aboutir à un modèle viable.
Dans le chapitre suivant, nous étudierons un peu plus en profondeur ce qui entre dans la création d'un modèle de domaine.