Due sviluppatori, una tastiera, codice migliore. Scopri quando e come fare pair programming in modo efficace.
Il pair programming significa due sviluppatori che lavorano insieme a una postazione. Uno scrive (il driver); l'altro osserva, pensa e naviga (il navigator).
Sembra inefficiente. Stai pagando due persone per fare il lavoro di una. Ma i conti tornano in modo diverso da quanto ti aspetteresti:
Gli studi dimostrano che le coppie producono codice con il 15% di difetti in meno impiegando solo il 15% di tempo in più. Non è il doppio del costo per una qualità migliore—è un investimento del 15% per risultati drammaticamente migliori.
La riga di codice più costosa è quella che causa un incidente in produzione alle 3 del mattino. Il pair programming cattura quelle righe prima che vengano scritte.
Il modello classico di pairing ha due ruoli:
Il Driver tiene la tastiera. Loro:
Il Navigator osserva e pensa. Loro:
Scambiate i ruoli regolarmente. Ogni 15-30 minuti, cambiate. Questo mantiene entrambi i partner coinvolti e impedisce a una persona di dominare.
Il navigator non è passivo. Se stai navigando e vedi qualcosa di sbagliato, parlane immediatamente. Non aspettare. Il valore del pairing viene dal feedback continuo.
Ci sono diversi stili di pairing efficaci:
Ping-Pong Pairing (funziona benissimo con il TDD):
Questo mantiene entrambe le persone attivamente a scrivere codice e mantiene la disciplina del TDD.
Strong-Style Pairing: "Perché un'idea passi dalla tua testa al computer, deve passare attraverso le mani di qualcun altro."
Il navigator dice al driver cosa scrivere. Il driver scrive solo; non prende decisioni. Questo è ottimo per insegnare—il junior scrive mentre il senior naviga, forzando il trasferimento di conoscenza.
Tour Guide Pairing: Una persona conosce il codebase; l'altra sta imparando. L'esperto guida e spiega, facendo un tour del codice. Poi si scambiano, con chi impara che tenta i compiti sotto guida.
Scegli lo stile che si adatta alla situazione. Ping-pong per il TDD. Strong-style per il mentoring. Tour guide per l'onboarding.
Il pairing funziona anche da remoto. Ti serve:
Consigli per il pairing remoto:
Alcuni team trovano che il pairing remoto funzioni ancora meglio di quello di persona perché non c'è la tentazione di "sporgersi e prendere la tastiera". Ogni persona rimane nel proprio ruolo.
Fai pairing su:
Considera il lavoro individuale per:
XP non impone il pairing al 100%, nonostante la credenza comune. L'XP originale specificava il pairing per il codice di produzione, ma l'XP moderno riconosce che i team efficaci mescolano lavoro individuale e in coppia in base al contesto.
La chiave: non lasciare mai che il codice vada in produzione senza revisione. Se non fai pairing, rivedilo. Il pairing è solo code review in tempo reale.
Inizia facendo pairing sui problemi più difficili. Una volta che vedi i benefici lì, espandi a più del tuo lavoro.
"I nostri sviluppatori non vogliono fare pairing." Inizia lentamente. Fai pairing solo sui problemi difficili. Lascia che le persone sperimentino i benefici. Non forzare il pairing al 100% dal primo giorno.
"Non possiamo permetterci due persone su un compito." Non puoi permetterti nemmeno i bug in produzione. L'economia favorisce il pairing quando consideri la riduzione dei bug, la conoscenza condivisa e la qualità del codice migliorata.
"Gli sviluppatori senior saranno rallentati." A volte. Ma i senior che fanno pairing con i junior accelerano l'intero team. La conoscenza del senior si diffonde. Il junior cresce. È un investimento nella capacità del team.
"Gli introversi odiano il pairing." Alcuni introversi amano il pairing perché è un'interazione strutturata con uno scopo chiaro. Altri hanno bisogno di tempo da soli per ricaricarsi. Rispetta i bisogni individuali, ma non assumere che introversione significhi anti-pairing.
"Il pair programming è estenuante." È più intenso del lavoro individuale. Fai pause. Non fare pairing per 8 ore di fila. Mescola il pairing con lavoro individuale, code review o lavoro di design.