Pair Programming — Cheat Sheet

Tag: pair-programming, agile, extreme-programming, code-review, collaboration, tdd

Livello: intermedio

TL;DR: Pratica collaborativa in cui due programmatori condividono un'unica postazione e obiettivo. Migliora la qualità del codice e azzera i colli di bottiglia della review.

Concetti chiave

Driver: scrive codice, controlla la tastiera e cura l'implementazione tattica immediata.

Navigator: osserva il contesto generale, previene bug e guida la strategia architetturale.

I ruoli di Driver e Navigator si invertono regolarmente ogni quindici o trenta minuti.

Ping-pong pairing: uno sviluppatore scrive il test fallito, l'altro implementa il codice e refattorizza.

Strong-style pairing: per arrivare alla tastiera, un'idea deve passare dalla testa del navigatore.

Continuous code review: la revisione avviene in tempo reale eliminando i tempi morti delle PR.

Diffusione del dominio: abbatte il bus factor e trasferisce competenze tecniche nel team.

Pair remoto: richiede condivisione schermo fluida o estensioni di co-editing in tempo reale.

Domande tipiche e risposte pronte

Q: Il pair programming non rischia di dimezzare la velocità di rilascio del team?R: La scrittura del codice grezzo è una minima parte del lavoro. Il pairing riduce drasticamente i bug, previene refactoring costosi e taglia le attese di review asincrona, aumentando il throughput complessivo.

Q: Come imposti una sessione efficace tra figure senior e junior?R: Faccio guidare la tastiera allo junior come Driver e mi posiziono come Navigator. Pongo domande strategiche per stimolare l'autonomia invece di dettare il codice riga per riga.

Q: In quali scenari il pair programming è sconsigliato?R: Su task ripetitivi, pura configurazione boilerplate o compiti banali a basso impatto. Diventa fondamentale su task complessi, decisioni architetturali critiche e onboarding rapido.

Insidie e errori comuni

Driver solitario che corre senza spiegare la logica ad alta voce.

Navigatore passivo distratto da notifiche, email o messaggi durante la sessione.

Assenza di rotazione periodica che genera disallineamento e affaticamento mentale.

Sessioni troppo lunghe senza pause definite per scaricare la stanchezza cognitiva.

Atteggiamento dogmatico nel disaccordo invece di validare le alternative con spike veloci.

Snippet e comandi

# Assegnazione del commit congiunto via standard Git Co-authored-by
git commit -m "feat(auth): add jwt session validation

Co-authored-by: Jane Doe <jane.doe@example.com>"

Da ripassare

[x] Ruoli standard Driver e Navigator

[x] Flusso TDD applicato al Ping-Pong pairing

[ ] Regola d'oro dello Strong-Style pairing di Falco

[ ] Setup di sessioni collaborative remote a bassa latenza

Riferimenti

Extreme Programming Explained (Kent Beck)

On Pair Programming (Martin Fowler)

Strong-Style Pairing (Llewellyn Falco)

Jarvis Interviews
Jarvis