8 min lecture • Guide 103 of 877
Implémenter Pair Programming Efficace
Le pair programming combine deux développeurs travaillant sur le même code simultanément, avec un qui conduit (tape) et un qui navigue (revoit et pense en avance). Les features d'attribution de GitScrum, time tracking, et outils collaboration aident équipes à coordonner sessions pairing, suivre l'investissement, mesurer résultats, et intégrer pairing dans leur workflow régulier pour améliorer qualité code, accélérer apprentissage, et réduire silos connaissance.
Quand Faire Pair Programming
Scénarios Haute Valeur
MEILLEURS CAS D'USAGE:
┌─────────────────────────────────────────────────────────────┐
│ QUAND PAIRING LIVRE LE PLUS DE VALEUR │
├─────────────────────────────────────────────────────────────┤
│ │
│ PROBLÈMES COMPLEXES: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Décisions architecturales ││
│ │ ✅ Algorithmes complexes ││
│ │ ✅ Défis d'intégration ││
│ │ ✅ Optimisation performance ││
│ │ ✅ Code sensible sécurité ││
│ │ ││
│ │ Valeur: Deux esprits > un pour problèmes difficiles ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ TRANSFERT CONNAISSANCE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Onboarding nouveaux membres équipe ││
│ │ ✅ Travailler dans zones code inconnues ││
│ │ ✅ Apprendre nouvelles technologies/frameworks ││
│ │ ✅ Cross-training pour réduire facteur bus ││
│ │ ✅ Mentorer développeurs junior ││
│ │ ││
│ │ Valeur: Connaissance se propage, silos rétrécissent ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ QUALITÉ CRITIQUE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ✅ Hotfixes production sous pression ││
│ │ ✅ Code paiement/financier ││
│ │ ✅ Scripts migration données ││
│ │ ✅ Changements infrastructure core ││
│ │ ✅ Refactoring haut impact ││
│ │ ││
│ │ Valeur: Review temps réel attrape bugs coûteux ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ QUAND NE PAS PAIRER: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ❌ Tâches simples, routinières (CRUD, config) ││
│ │ ❌ Travail bien compris dans code familier ││
│ │ ❌ Recherche/exploration (mob mieux, ou solo) ││
│ │ ❌ Quand l'une des personnes est épuisée ││
│ │ ❌ Tâches administratives ││
│ │ ││
│ │ Gaspillage: Deux personnes pour travail d'une ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Suivi dans GitScrum
WORKFLOW PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ CONFIGURER POUR PAIRING │
├─────────────────────────────────────────────────────────────┤
│ │
│ ATTRIBUTION TÂCHES: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Assigner LES DEUX développeurs à tâche: ││
│ │ ││
│ │ Tâche: "Implémenter logique retry paiement" ││
│ │ Assignés: @maria, @carlos ││
│ │ Label: workflow/pairing ││
│ │ ││
│ │ Pourquoi deux noms: ││
│ │ • Deux visibles dans charge travail ││
│ │ • Deux crédités pour livraison ││
│ │ • Notifications vont aux deux ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ TIME TRACKING: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Deux trackent temps simultanément: ││
│ │ ││
│ │ Maria: 3h sur "Logique retry paiement" ││
│ │ Carlos: 3h sur "Logique retry paiement" ││
│ │ ││
│ │ Total: 6 personne-heures (précis pour planification) ││
│ │ ││
│ │ Alternative: Un tracke comme "pair" avec multiplicateur ││
│ │ 2x dans calculs estimation ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ LABELS POUR VISIBILITÉ: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Créer labels dédiés: ││
│ │ ││
│ │ 🟢 workflow/pairing - Destiné au pair programming ││
│ │ 🔵 workflow/paired - Complété en pair ││
│ │ 🟣 workflow/mobbing - Mob programming équipe ││
│ │ ││
│ │ Filtrer par labels pour voir: ││
│ │ • Travail pairing actuel ││
│ │ • Ratio pairing historique ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Styles Pairing
Driver-Navigator
LE MODÈLE CLASSIQUE:
┌─────────────────────────────────────────────────────────────┐
│ DYNAMIQUES DRIVER-NAVIGATOR │
├─────────────────────────────────────────────────────────────┤
│ │
│ DRIVER (Qui tient clavier): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilités: ││
│ │ • Tape le code ││
│ │ • Focus sur syntaxe et implémentation immédiate ││
│ │ • Explique ce qu'il fait ││
│ │ • Pose questions quand bloqué ││
│ │ ││
│ │ Mindset: "J'implémente l'étape actuelle" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ NAVIGATOR (Observateur): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Responsabilités: ││
│ │ • Revoit code pendant écriture ││
│ │ • Pense au panorama plus large ││
│ │ • Attrape bugs et typos ││
│ │ • Suggère alternatives et améliorations ││
│ │ • Garde trace de ce qui suit ││
│ │ ││
│ │ Mindset: "Je guide stratégie et attrape problèmes" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ RYTHME ÉCHANGE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Options: ││
│ │ ││
│ │ BASÉ SUR TEMPS: ││
│ │ • Pomodoros 25 minutes, échanger chaque tour ││
│ │ • Force rotation régulière ││
│ │ • Empêche une personne dominer ││
│ │ ││
│ │ BASÉ SUR TÂCHE: ││
│ │ • Échanger après compléter chaque sous-tâche ││
│ │ • Points coupure naturels ││
│ │ • Deux expérimentent différentes parties ││
│ │ ││
│ │ PING-PONG (pour TDD): ││
│ │ • A écrit test échouant, B le fait passer ││
│ │ • B écrit prochain test échouant, A le fait passer ││
│ │ • Échange continu ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Faire Fonctionner Pairing
Configuration Environnement
STATION PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SETUP PHYSIQUE ET REMOTE │
├─────────────────────────────────────────────────────────────┤
│ │
│ SETUP PRÉSENTIEL: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Équipement: ││
│ │ ☐ Grand moniteur (27"+) ou moniteurs doubles ││
│ │ ☐ Deux claviers ││
│ │ ☐ Deux souris ││
│ │ ☐ Sièges confortables pour deux ││
│ │ ││
│ │ Environnement: ││
│ │ ☐ Espace calme ou setup annulation bruit ││
│ │ ☐ Tableau blanc près pour sketching ││
│ │ ☐ Timer visible ││
│ │ ☐ Eau/snacks accessibles ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ SETUP REMOTE: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Outils: ││
│ │ ☐ Partage écran avec audio (Zoom, Meet, Teams) ││
│ │ ☐ VS Code Live Share ou similaire ││
│ │ ☐ Connexion internet stable ││
│ │ ☐ Bon micro et casque ││
│ │ ││
│ │ Avantages Live Share: ││
│ │ • Deux peuvent taper simultanément ││
│ │ • Deux curseurs visibles ││
│ │ • Terminal partagé ││
│ │ • Pas de latence pour frappe ││
│ │ ││
│ │ Conseils: ││
│ │ • Caméra allumée construit connexion ││
│ │ • Verbaliser plus qu'en personne ││
│ │ • Prendre pauses plus fréquentes (fatigue écran) ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘
Structure Session
FLUX SESSION PAIRING:
┌─────────────────────────────────────────────────────────────┐
│ SESSION PAIRING STRUCTURÉE │
├─────────────────────────────────────────────────────────────┤
│ │
│ AVANT SESSION (5 min): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Aligner sur objectif: "Qu'allons-nous accomplir?" ││
│ │ ☐ Revoir contexte: Description tâche, code lié ││
│ │ ☐ Convenir approche: "Comment l'aborder?" ││
│ │ ☐ Régler timer pour première rotation ││
│ │ ☐ Démarrer time tracking dans GitScrum ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ PENDANT SESSION: │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ Structure (session 2 heures): ││
│ │ ││
│ │ 0:00-0:25 │ Premier tour driving (Personne A) ││
│ │ 0:25-0:30 │ PAUSE - étirer, eau ││
│ │ 0:30-0:55 │ Deuxième tour driving (Personne B) ││
│ │ 0:55-1:00 │ PAUSE - étirer, vérifier messages ││
│ │ 1:00-1:25 │ Troisième tour driving (Personne A) ││
│ │ 1:25-1:30 │ PAUSE ││
│ │ 1:30-1:55 │ Quatrième tour driving (Personne B) ││
│ │ 1:55-2:00 │ CLÔTURE ││
│ │ ││
│ │ Comportements clés: ││
│ │ • Penser à voix haute ││
│ │ • Poser questions librement ││
│ │ • Célébrer petites victoires ││
│ │ • Noter items parking lot ││
│ └─────────────────────────────────────────────────────────┘│
│ │
│ APRÈS SESSION (5 min): │
│ ┌─────────────────────────────────────────────────────────┐│
│ │ ☐ Commit progrès actuel ││
│ │ ☐ Mettre à jour tâche dans GitScrum (commentaires) ││
│ │ ☐ Capturer apprentissages: "Qu'avons-nous découvert?" ││
│ │ ☐ Noter suivis: "Quelle suite?" ││
│ │ ☐ Rétro rapide: "Qu'a fonctionné? Quoi changer?" ││
│ └─────────────────────────────────────────────────────────┘│
│ │
└─────────────────────────────────────────────────────────────┘