Practices : Pair Programming
Deux développeurs, un écran, un clavier. L’un code (le “pilote”), l’autre réfléchit et guide (le “navigateur”). On alterne les rôles régulièrement, toutes les 20-30 minutes.
Concept fondamental
Le pair programming repose sur l’idée que deux cerveaux valent mieux qu’un. Le pilote écrit le code, le navigateur prend du recul, anticipe les problèmes et réfléchit à la direction générale. Cette dynamique produit du code de meilleure qualité avec moins de bugs.
Les formats principaux :
- Driver-Navigator — le classique. Le pilote tape, le navigateur prend du recul et réfléchit à la direction.
- Ping-Pong — un développeur écrit un test, l’autre écrit le code pour le faire passer. Puis on inverse. Ça marche très bien avec du TDD.
Exemple
Quand utiliser le pair programming :
- Sur un problème complexe où deux cerveaux valent mieux qu’un
- Pour former un junior — le senior navigue, le junior pilote
- Sur du code critique qui ne doit pas avoir de bugs
- Pour découvrir une nouvelle partie du codebase avec quelqu’un qui la connaît
Comment bien le faire :
- Parler en continu : verbaliser ce qu’on fait et pourquoi
- Alterner les rôles pour que les deux restent engagés
- Rester focalisé sur la tâche — pas de slack, pas de mails
- Accepter qu’on ne code pas “deux fois plus vite”, mais qu’on produit du code de meilleure qualité avec moins de bugs
Avantages et inconvénients
Avantages :
- Meilleure qualité du code : deux paires d’yeux détectent plus d’erreurs
- Transfert de connaissances naturel entre les développeurs
- Réduit le “bus factor” : plusieurs personnes connaissent chaque partie du code
- Force à verbaliser sa pensée, ce qui clarifie les idées
Inconvénients :
- Plus coûteux en temps de développeur (deux personnes, une tâche)
- Peut être épuisant sur de longues périodes
- Ne fonctionne pas bien si les deux développeurs n’ont pas la bonne dynamique
- Pas adapté à toutes les tâches (tâches simples et répétitives par ex.)
Sans cette pratique
Sans pair programming, un développeur travaille seul sur un problème complexe. Il part dans une direction pendant 3 jours, se rend compte que l’approche est mauvaise, et recommence. Personne n’a vu le problème venir parce que personne ne regardait.
Résultat classique :
- Un junior passe une journée sur un bug qu’un senior aurait résolu en 10 minutes
- Un développeur est le seul à connaître une partie du code — le jour où il part, personne ne peut le maintenir
- Des bugs subtils passent en production parce qu’une seule personne a pensé au problème
Le pair programming ne rend pas “deux fois plus rapide”, mais le code produit a moins de bugs, l’équipe partage les connaissances, et les mauvaises approches sont détectées avant d’y avoir investi trop de temps.
Liens avec les autres concepts
Pratiques proches :
- Code Reviewing — le pair programming est une review en temps réel. La review classique détecte les problèmes après le code, le pairing les détecte pendant. Les deux sont complémentaires : le pairing n’annule pas le besoin de review (un troisième œil est toujours utile).
- Automated Testing — le format Ping-Pong est du TDD à deux : un développeur écrit le test, l’autre écrit le code pour le faire passer. Ça force à écrire des tests et produit un code bien testé.
- Spiking — explorer une inconnue technique à deux est souvent plus efficace : un développeur teste, l’autre réfléchit et suggère des pistes.
- Solution Sketching — le pairing commence souvent par un croquis à deux sur un tableau blanc avant de toucher au code.
Principes renforcés :
- Tous les principes bénéficient du pairing. Le navigateur a le recul pour détecter les violations de KISS, de SRP ou de DRY que le pilote, absorbé par le code, ne voit plus.
Pratiques liées :
- Retrospective — la rétro est le bon moment pour ajuster les pratiques de pairing (fréquence, durée, formation des paires).