Home > General Info > Pair Programming
May
30

Pair Programming

Di cosa si tratta?

Semplicemente di una modalità di programmazione che prevede l’affiancamento di due sviluppartori, sullo stesso pc. Uno scrive, l’altro no.

Il mio primo pensiero, quando un amico di vecchia data mi ha raccontato la sua esperienza, è stato tanto diretto quanto sbagliato: “E’ necessario dare un nome ad una cosa così sconveniente?“.

pair_chair_right

Invece il nome ce l’ha eccome, sono stati effettuati numerosi studi a riguardo. Mi è stato possibile reperire informazioni su vari portali informatici e su wikipedia. Se fosse così sconveniente come mi è sembrato in principio, non sarebbero necessari studi, articoli e …mie pubblicazioni su questo blog.

In cosa consiste?

Una persona sviluppa, mentre una seconda risorsa controlla quanto viene scritto e funge da navigatore. Lo sviluppatore principale è solito concentrarsi sull’elemento su cui sta lavorando, mentre il navigatore ha la possibilità, praticamente nel contempo, di proiettare quello stesso elemento nel contesto in cui verrà collocato, individuando la miglior soluzione per far comunicare i diversi elementi e per instradare fin dal principio la soluzione più conveniente.

Come una gara automobilistica nella quale il pilota guida e il navigatore fornisce indicazioni sul tracciato.

whiteA distanza di qualche mese, per pura coincidenza ho l’occasione di sperimentare di persona un qualcosa di molto simile. Ecco quindi le mie prime considerazioni:

Più efficienza nell’immediato:

> Esperienza complessiva di partenza pari a quasi il doppio delle due risorse;

> Più “ore uomo” per creare, ma lavoro di successiva revisione decisamente più contenuto.

Molta meno inefficienza:

> Globalmente meno cali di produttività, grazie a reciproco e spontaneo “tenersi sul pezzo”;

> Capacità di individuare errori nell’immediato assai più elevata;

> In caso di problemi, doppia possibilità di adottare la soluzione più valida.

Nel medio/lungo periodo:

> Crescita delle skills personali molto più rapida, come se l’intersezione delle competenze coinvolte tendesse verso l’unione.

whiteDal punto di vista oggettivo, credo che ogni situazione sia da analizzare singolarmente. E’ necessario capire se e quando l’adottare tale modalità porti benefici tali da giustificare la scelta, e dentro questi ragionamenti agiscono numerose variabili. Il tipo di progetto, le tempistiche, le eventuali date critiche da collocare sul calendario. Le capacità degli sviluppatori, le disponibilità degli stessi.

Vi lascio alle vostre domande, linkandovi un articolo sul tema che ho trovato particolarmente ben strutturato:

http://www.sviluppoagile.it/solidi-agili-con-pair-programming

Grazie e buona lettura!

, , , ,

Add reply