Aller au contenu

Pair et Mob programming

Travailler ensemble en temps réel — en presentiel et en remote — pour résoudre des problèmes complexes et transferer la connaissance.


Pair programming

Le pair programming consiste à travailler a deux sur le même poste (ou le même écran) en alternant des rôles définis.

Les rôles : driver et navigator

graph LR
    D["Driver\n(clavier)"] -->|"ecrit le code"| C["Code"]
    N["Navigator\n(vue d'ensemble)"] -->|"guide, questionne, anticipe"| D
    C -->|"rotation toutes les 10-25 min"| N
Rôle Responsabilité
Driver Écrire le code, se concentrer sur la ligne actuelle
Navigator Penser au design global, anticiper les obstacles, suggérer des approches

La rotation régulière (10 a 25 minutes) evite la fatigue cognitive et assure que les deux personnes restent actives.

Quand pratiquer le pair programming

Le pair programming a un coût horaire double — il faut qu'il soit justifie.

Bon usage :

  • Problèmes complexes ou mal définis (explorer ensemble plutôt que seul dans l'impasse)
  • Onboarding d'un nouveau membre sur une partie critique du codebase
  • Transfert de connaissance avant un départ ou une rotation d'équipe
  • Debuggage difficile ("rubber duck" avec les droits de réponse)
  • Premier jet d'une API ou d'une architecture importante

Usage deconseille :

  • Tâches repetitives et bien définies que chacun maîtrise
  • Tâches necessitant une longue phase de recherche solitaire
  • Quand un des deux participants n'est pas disponible mentalement

Pair programming en remote

Le remote change la logique mais pas les principes.

Outils recommandes

Outil Usage principal Particularite
VS Code Live Share Partage d'éditeur bidirectionnel Gratuit, intégré au terminal
Tuple Screen share dédié au pair programming Faible latence, conçu pour les devs
Gitpod / Codespaces Environnement cloud partage Pas besoin de synchroniser le local
Zoom / Meet Screen share classique avec audio video Accessible, mais latence plus élevée

Pairing fatigue

Le pair programming en remote est plus fatiguant qu'en presentiel. Les micro-signaux non verbaux (regard, posture) disparaissent, ce qui augmente la charge cognitive. Prevoyez des pauses de 5 minutes toutes les heures, et des sessions de maximum 2h.


Mob programming

Le mob programming etend le pair à toute l'équipe : une seule machine, toute l'équipe sur le même problème.

Format standard

  • 1 driver : au clavier, exécuté les instructions
  • 1 navigator actif : donne les instructions au driver
  • N observers : suivent, prennent des notes, se preparent a naviguer
  • Rotation : toutes les 5 a 15 minutes, chrono strict
sequenceDiagram
    participant A as Alice (driver)
    participant B as Bob (navigator)
    participant C as Carol (observer)
    participant D as David (observer)

    B->>A: "Cree une fonction validate_email"
    A->>A: ecrit le code
    Note over A,D: Rotation (timer)
    A->>B: devient navigator
    B->>C: devient driver
    C->>C: ecrit le code
    B->>C: "Ajoute un test pour l'email vide"

Quand utiliser le mob programming

  • Démarrage d'un projet : aligner l'équipe sur les choix fondateurs
  • Rétrospective technique sur un bug critique
  • Formation sur un nouveau framework ou pattern
  • Décisions d'architecture qui concernent toute l'équipe
  • Deblocage d'un problème sur lequel un dev est coince depuis longtemps

Comparaison solo / pair / mob

Critère Solo Pair Mob
Vitesse de frappe Maximale Réduite (discussion) Minimale (un seul driver)
Qualité du design Dépend du dev Meilleure Optimale (plusieurs perspectives)
Partage de connaissance Nul pendant le travail Bilateral Toute l'équipe en même temps
Onboarding Lent Efficace en binome Très rapide si mob present
Coût en temps 1x 2x Nx (toute l'équipe)
Fatigue Faible sur le long terme Modérée (pauses nécessaires) Élevée après 3-4h
Bug rate Élevé Réduit Très réduit
Silos de connaissance Crée des silos Réduit pour 2 personnes Éliminé pour l'équipe présenté

Bonnes pratiques communes

Avant la session :

  • Definissez l'objectif : qu'est-ce qu'on veut avoir fait à la fin ?
  • Configurez l'environnement : IDE, raccourcis, polices lisibles pour tous
  • Decidez de la durée et du rythme de rotation

Pendant la session :

  • Le driver ne prend pas d'initiative non demandee par le navigator
  • Les desaccords se résolvent par un vote rapide ou une experimentation, pas un debat
  • Respectez les rotations même si "c'est juste deux lignes"

Après la session :

  • Commitez et documentez les décisions prises
  • Notez ce qui reste a faire si la session s'arrêté avant la fin
  • Courte rétrospective : qu'est-ce qui a bien marche ? qu'est-ce qu'on change ?

Commencer petit

Si votre équipe ne pratique pas encore le pair programming, commencez par un "pair debugging" informel de 30 minutes sur un bug difficile. C'est non-invasif et souvent spectaculairement efficace.


Points clés

  • Driver et navigator ont des responsabilités distinctes — la rotation est obligatoire
  • Le pair en remote nécessité des outils adaptés et des pauses fréquentes
  • Le mob est coûteux en temps mais extremement efficace pour l'alignement et le partage
  • Choisissez le mode en fonction du problème, pas par habitude
  • Commencez par de courtes sessions pour adopter progressivement la pratique

Précédent : Code review | Suite : Conventions d'équipe