Le Mob Programming, la quintessence de la coopération pour le travail en équipe

Coopérer pour obtenir un résultat de qualité avec une technique nouvelle et intéressante.

Sommaire

Cet article doit beaucoup à Anthony Cassaigne. C’est lui qui m’a fait connaître le mob programming. C’est lui l’expert du mob, qui le pratique avec son équipe et qui en parle dans les conférences.

Anthony a co-écrit la partie sur le mob dans Scrum édition 6. Elle est placée dans la 5e partie, à la fin du premier chapitre “Coopérer pour un résultat de qualité”.

Par rapport au pair programming, le mob programming élargit la participation à toute l’équipe, ce qui en fait autant une pratique de coopération qu’une pratique de programmation.

Qu’est-ce le mob programming ?

On parle de mob programming lorsque plus de deux développeurs partagent un seul ordinateur. Woody Zuill qui est le co-créateur de la pratique le résume ainsi :

Toutes ces brillantes personnes travaillant sur la même chose, au même moment, dans le même espace et sur le même ordinateur.

À noter que l’espace peut être virtuel : le mob est possible en télétravail.

Une séance de mob programming cherche à créer un super cerveau avec tous ceux des coéquipiers réunis.

Pourquoi ça marche

Les regards braqués sur un même morceau de code permettent d’apporter une attention toute particulière à la solution développée ensemble. Chacun se concentre sur son domaine de compétences pour donner le meilleur à l’équipe.

Ce super cerveau ne peut fonctionner correctement que s’il se trouve doté de bonnes oreilles. Les coéquipiers doivent posséder une bonne faculté d’écoute.

Cela s’apprend. Il convient à chacun d’être attentif aux autres coéquipiers. Par exemple, un débutant ne prend pas la parole de façon impromptue, mais lève la main lorsqu’il souhaite intervenir.

Une session de mob programming est constituée d’une succession de dialogues tournants, donnant à chacun la possibilité de s’exprimer.

Les valeurs du mob

Quand Woody et son équipe ont décidé de poursuivre l’aventure du Mob Programming, ils ont estimé qu’il était essentiel de définir un cadre afin que cette approche du développement du logiciel puisse pleinement et durablement s’épanouir ; cela commence avec des valeurs et un accord.

Le mob tient dans ces trois valeurs :

  • Bienveillance,
  • Respect,
  • Considération.

Et pour que chacun puisse trouver sa place dans le mob, il convient de respecter cet accord :

Traitez-vous les uns les autres avec bienveillance, considération et respect.

Cet accord donne à chacun sa place pour s’exprimer.

Il est dit qu’être un bon navigateur c’est, entre autres, amplifier les idées murmurées.

En fournissant un cadre sécurisant pour tous, le mob permet à chacun de demander une explication ou de l’aide afin de mieux comprendre quel est l’intention de ce que nous réalisons ou des éclaircissements sur telle ou telle partie de code.

Les rôles

Driver

Le driver est la personne qui a le clavier, son rôle est d’écrire le code. Il est focalisé sur la syntaxe du langage, sur les noms des variables, des fonctions méthodes, bref sur l’ensemble des détails permettant de produire le code souhaité.

Il est demandé au driver de ne pas influencer le groupe avec ses propres idées, mais de simplement transcrire les propositions en code afin de rendre cette transcription la plus fluide possible.

Le navigateur pose le problème, écoute, fait émerger les idées, donne la direction du développement.

Il sera attentif au design général, il proposera par exemple l’extraction de méthodes pour gagner en lisibilité ou pour faire émerger une responsabilité. Lorsqu’une nouvelle responsabilité est clairement identifiée, il peut alors demander à remanier la partie concernée pour, par exemple, créer une nouvelle classe.

Les coéquipiers

Dans un premier temps, les autres participants sont membres du mob et peuvent intervenir afin de questionner ou pour faire don de leurs idées.

Dans la phase d’apprentissage, il leur est conseillé de lever la main pour demander la parole afin s’assurer que les échanges soit toujours un dialogue avec le navigateur. C’est la meilleure façon de réaliser un don ou de poser une question, l’ensemble des participants (driver, navigateur et autres membres) peuvent ainsi tous recevoir la proposition ou le questionnement.

Lorsque le mob gagne en maturité, les membres deviennent tous des navigateurs à tour de rôle.

La passe

Le mob programming utilise un pattern particulier du pair programming dénommé strong-style pairing, que son auteur Falco Llewellyn définit ainsi :

Pour qu’une idée passe de votre tête à l’ordinateur, elle DOIT passer par les mains de quelqu’un d’autre.

Comme la passe au rugby, cette passe d’idée est un bel exemple de coopération.

L’objectif est d’expliciter l’idée du navigateur à l’ensemble des participants.

En imposant cette contrainte, le mob cherche à minimiser l’anti-pattern consistant à avoir un développeur tenant le clavier et montrant aux autres ce qu’il conviendrait de faire. L’ensemble des autres participants devenant alors de simples spectateurs.

Si le driver souhaite proposer une idée, il est recommandé qu’il cède sa place de driver afin de l’exprimer à haute voix.

Le navigateur a pour rôle de mener le groupe vers un objectif commun. Il s’assure également que :

  • tous et toutes ont une bonne compréhension du contexte, du problème que l’équipe cherche à résoudre;
  • la parole circule librement en étant une succession de dialogues;
  • chacun puisse utiliser les tableaux blancs afin de réaliser schéma, dessin, annotation s’avérant utile…
  • il y a un partage des idées et que ces dernières soient prises en compte;
  • tous et toutes soient pleinement focalisés sur le problème afin de co- construire la solution.

En phase d’apprentissage, il est préférable d’identifier clairement un navigateur unique qui centralise les demandes des coéquipiers.

Lorsque la règle du dialogue est intériorisée ainsi que celle de l’engagement à poursuivre la co-construction d’une solution, il est alors envisageable de considérer que tout membre de l’équipe est navigateur (hormis le driver).

Usages du mob

Le mob pour apprendre

Le mob a d’abord été expérimenté pour apprendre, en tant que cadre favorisant la transmission des connaissances au sein d’un groupe de programmeurs et programmeuses, et plus largement toute autre personne.

C’est un superbe véhicule pour l’apprentissage dans lequel les personnes échangent : leurs savoirs, leurs points de vue, les différentes approches qu’ils peuvent avoir à la résolution d’une problématique. Les débutant·es peuvent également apporter un regard neuf et décapant, le plus souvent, de simplicité éliminant ainsi cette complexité accidentelle au sein des systèmes en développement.

Nous aimons rappeler cette citation anonyme :

Ce qu’il y a de bien avec la connaissance, c’est qu’une fois donnée, on ne peut pas la reprendre !

Le mob pour développer en équipe

Après avoir démontré ses apports de générosité dans le domaine de l’apprentissage, Woody et son équipe ont essayé cette approche pour développer les fonctionnalités d’un logiciel.

Ils l’ont mis en oeuvre (ou pour le moins testé de façon informelle) pour tenter d’amener de nouvelles fonctionnalités sur une base de code avec laquelle l’équipe se débattait.

Cette approche ayant apporté des progrès significatifs pour la reprise du contrôle de ce code, le Mob Programming était né.

Le mob donne à l’équipe une force collective et un courage sans équivalent lui permettant d’affronter de grands défis, ceux qui prennent parfois la forme de monstres émanant des sombres contrées du Code Legacy.

C’est grâce à la richesse des idées et des différents savoirs que de nouvelles voies sont ouvertes, considérées, implémentées et évaluées.

Le mob pour amplifier la capacité d’écoute

Le Mob Programming nous donne à travailler notre capacité d’écoute, à la développer afin d’être attentif aux uns et aux autres pour que chacun puisse amener toute suggestion. C’est par cette capacité d’écoute que chacun reste attentif : aux demandes d’aide, aux idées des donateurs, aux dons reçus.

Le Strong Style Pair Programming énoncé par Lewellyn Falco offre une porte vers le monde de la compréhension et du partage, un levier rendant intelligible les idées ou concepts perçus par un esprit.

Le mob et les choix de conception

Et si une pluralité d’idées émerge ? Eh bien il convient de considérer chacune.

Woody l’exprime ainsi :

Avec le Mob Programming, nous ne gaspillons pas beaucoup de temps à décider laquelle des deux (ou plus) idées nous allons essayer - nous faisons simplement l’une ou l’autre, nous évaluons le résultat, puis nous considérons si nous devons essayer l’autre. Cela permet aux idées de se transformer, de fusionner, d’évoluer et d’émerger.

Appliqué au sein de votre session de Mob Programming (ou de Pair Programming), ce principe évite bien des frustrations.

Vous serez étonné de constater que souvent le groupe s’arrêtera à la première idée implémentée, car au final il y avait peu de différences entre les deux idées (ou plus) présentées.

Il est difficile d’échanger au niveau des concepts et des idées portant sur des formes d’implémentation alors qu’il est beaucoup plus aisé d’en discuter sur un code existant concrétisant l’expression des idées.

Le mob writing

On peut utiliser l’idée du mob pour autre chose que du code.

Nous avons utilisé un pad partagé sur lequel le driver écrit pendant le navigateur raconte. Nous avions un timer spécial mob, calibré à 8 minutes. À chaque échéance de timer, nous avons fait tourner driver et navigateur. Nous avons déroulé 8 boucles pour produire cet article.

L’article sur le walkingDev de l’agilité radicale est le résultat de notre coopération en mob-writing.

Les idées sont vivantes, évolutives et se transforment par les apports des uns et des autres. Le temps du mob est un temps de construction d’un bien en commun.

Le Mob Programming, la quintessence de la coopération pour le travail en équipe

Lire aussi