La programmazione delle coppie dovrebbe non essere utilizzata per formare sviluppatori inesperti o meno esperti.
Studi e meta-studi che supportano la programmazione di coppie a livello generale, concettuale, trovano quasi invariabilmente che i guadagni in termini di qualità e produttività superano solo il costo aggiuntivo quando entrambi i programmatori si trovano a circa lo stesso livello di competenza.
In realtà, questo è praticamente diventato una "regola" nelle impostazioni accademiche. Le università che raccomandano la pratica anche dichiarano esplicitamente che gli studenti dovrebbero trovare un partner con lo stesso livello di competenza . Non meglio, non peggio - lo stesso.
Nota che il "livello di abilità" qui è specifico per dominio e attività. Accoppiare un brillante sviluppatore dell'interfaccia utente con un brillante progettista di algoritmi o uno sviluppatore di database non è meglio che accoppiare un brillante sviluppatore dell'interfaccia utente con uno sviluppatore dell'interfaccia utente totalmente verde.
Gli studi (corroborati dalla mia esperienza personale) mostrano che gli sviluppatori inesperti (in alcune aree) imparano più velocemente quando accoppiati, e gli sviluppatori altamente qualificati possono cogliere molto malintesi e problemi di progettazione molto prima, annullando gran parte del tempo speso per il debugging e rielaborare.
Tuttavia, c'è un gradiente di quasi 10 volte la produttività per gli sviluppatori meno esperti rispetto a quelli più esperti. Accoppiare qualcuno altamente qualificato con qualcuno molto verde è molto simile ad un istruttore di guida con uno studente. Non hai una vera cooperazione, hai un autista e un passeggero, un maestro e un apprendista. Se l'apprendista "guida", il master è troppo impegnato a monitorare e correggere gli errori per ottenere il lavoro da lui svolto. D'altra parte, se il maestro "guida" e all'apprendista viene detto di guardare e imparare, il maestro è meno produttivo a causa delle interruzioni e l'apprendista non apprende molto efficacemente.
Questa è una situazione senza vincita. Se i nuovi sviluppatori devono essere addestrati, chiama un picche di picche e fai un treno . Oppure apprendili, fai in modo che "ombreggia" uno sviluppatore più esperto per un po '. Ma non chiamatelo "pair programming" e aspettatevi di ottenere buoni risultati. Questi si verificano solo quando entrambi i partner hanno set di abilità simili.
Nota: per coloro che non possono visualizzare lo studio, ecco un altro che fa affermazioni simili:
Valutazione della programmazione delle coppie in relazione alla complessità del sistema e alla competenza dei programmatori .
Per citare l'abstract:
The observed benefits of pair programming in terms of correctness on the complex system apply mainly to juniors, whereas the reductions in duration to perform the tasks correctly on the simple system apply mainly to intermediates and seniors.
L'associazione di un senior con un junior nega il vantaggio temporale applicabile agli anziani. C'è ancora un miglioramento nella correttezza rispetto a quello che normalmente i giovani dovrebbero produrre, ma non è dimostrato che sia migliore di quello che l'anziano produrrebbe da solo.
Tieni presente che questo è solo un singolo studio, mentre il primo studio è una meta analisi che comprende diversi studi diversi. È di gran lunga la migliore risorsa che ho trovato. Chiunque sia veramente interessato a conoscere la ricerca effettiva dovrebbe prendere in considerazione l'acquisizione di un abbonamento ACM, perché è lì che vengono pubblicati tutti questi studi.