PMI-ACP Approfondimenti

Pair Programming

“Preparazione Esame di Certificazione Agile PMI-ACP®”

Badge ACP

   Modulo di Iscrizione

 Per consultare questi approfondimenti, devi essere almeno registrato al sito (Registrati se non lo sei già)

Pair Programming

(Programmazione in coppia)

La programmazione in coppia o Pair Programming è una tecnica di sviluppo software dove due programmatori lavorano insieme dalla stessa postazione di lavoro. Uno scrive il codice e l’altro osserva, suggerendo ottimizzazioni e correzioni che, se condivise dal collega vengono immediatamente attuate.  I due programmatori spesso  si alternano nel ruolo di codificatore e osservatore.

Di solito, uno si dedica alla scrittura del codice e l’altro osserva ciò che scrive il primo, criticandolo, costruttivamente, in base alla strategia globale della soluzione e per prevenire problemi futuri.

Il risultato  è che i due, pur impiegando un po’ di tempo complessivo in più, producono codice con meno difetti e di migliore qualità. E’ noto che la rimozione di un errore è molto costosa, specie se l’errore viene scoperto dall’utente finale. Pertanto, questa tecnica, come primo beneficio, consente di ridurre drasticamente le spese di manutenzione del software.  (fonte:  The Costs and Benefits of Pair Programming  di Alistar Cockburn).

Gli effetti positivi della programmazione in coppia sono:

  • Molti errori vengono scoperti appena editato il codice, invece di aspettare ad un test ad una successiva fase di revisione del codice.
  • Il numero di errori che restano sono statisticamente molto meno di quelli che lascia un singolo programmatore.
  • Il disegno dell’applicazione è migliore ed il codice è più breve, grazie al continuo confronto tra i due programmatori.
  • Il team risolve i problemi più velocemente, grazie al contributo di due persone.
  • Le persone apprendono di più sia del sistema sia dello sviluppo software.
  • Il progetto si conclude con più persone a conoscenza di ciò che è stato prodotto.
  • Le persone imparano a lavorare insieme e a parlare più spesso scambiando più informazioni.
  • Le persone gradiscono di più il proprio lavoro.
  • Il costo di questi benefici è circa il 15% più di quanto ci si aspetterebbe.

Tutto ciò viene abbondantemente ripagato dai questi vantaggi:

  • Meno test per il rilascio dell’applicazione,
  • Livello di qualità superiore del software prodotto,
  • Minore necessità di supporto successivo.

In sostanza:

  • Due programmatori insieme possono intravedere più soluzioni e scegliere la migliore in contraddittorio, contribuendo ognuno in base alla propria cultura ed esperienza.
  • Le persone sono più produttive, perché il lavoro diventa una sorta di competizione.

Con la programmazione in coppia la conoscenza viene condivisa, diventando un’occasione di crescita per chi è meno esperto e a volte anche per l’esperto, grazie alla condivisione di problemi e soluzioni che ognuno è in grado di proporre.

Non sono tutte rose e fiori

Esistono studi che tendono a dimostrare che lavorare in coppia è uno spreco, pur ammettendo che le coppie di programmatori valutano più alternative, arrivando a soluzioni più semplici.

In effetti, anche ammesso che una coppia di programmatori realizzi una soluzione prima di una serie di programmatori singoli,  l’impegno totale in ore sarà superiore. Bisogna saper giustificare quell’impegno aggiuntivo, evidenziando i notevoli vantaggi che comporta questa scelta, in un ambiente maturo per l’approccio Agile.

La giustificazione  del maggiore impegno complessivo è nella qualità della soluzione e nel minor numero di difetti dell’applicazione con conseguente soddisfazione del cliente. L’investimento in risorse doppie per lo sviluppo di ogni funzione comporta un risparmio immediato in termini di test e collaudi e un notevole risparmio in termini di manutenzione successiva. Entrambi benefici difficili da quantificare.

Di per sé, la programmazione in coppia è già giustificata quando, di fronte ad un problema complesso, si desidera produrre una soluzione di alta qualità con il minor numero di difetti possibile, anche se il costo complessivo dovesse essere leggermente superiore. Uno  studio dal titolo “The Effectiveness of Pair Programming: A Meta-Analysis”  dimostra che con la programmazione in coppia si ottiene:

  • Un effetto molto  positivo sulla qualità complessiva della soluzione,
  • Un effetto mediamente positivo sulla durata  complessiva e
  • Un effetto mediamente negativo sull’impegno complessivo.

Come è formata la coppia di programmatori?

Uno dei fattori determinanti è la composizione della coppia di programmatori.

  • Esperti di pari livello –  sembra la soluzione ideale, ma a volte può esserci eccessiva competizione fra i due e appena uno dei due assume la leadership, l’altro potrebbe abbandonare o, ancor peggio, essere meno interessato alla causa.
  • Esperto e Principiante – automaticamente l’esperto assume il ruolo di mentor per il principiante. Questa coppia può essere la più produttiva, in funzione delle domande che saprà porre il principiante e la capacità di essere convincente per l’esperto. Siamo nella situazione dei tanti perché di un bambino ad un adulto. Il bambino non va intimidito, ma soltanto aiutato a comprendere.
  • Due principianti –  in coppia possono produrre molto  di più di due principianti  indipendenti, anche se questa pratica non è molto consigliata.
  • Virtual pair programming – due  programmatori che collaborano da locazioni diverse, condividendo una postazione di lavoro virtuale. Questa tecnica introduce difficoltà diverse da quelle in presenza,  perché viene a mancare la comunicazione verbale, inoltre, possono sorgere incomprensioni anche nell’utilizzo degli strumenti stessi.

Conclusione

Gli agnostici verso la filosofia Agile, criticheranno questa tecnica, attaccandosi all’effettivo maggior impiego di risorse. In realtà,  lo faranno solo coloro che non apprezzano la migliore qualità del software ed il conseguente risparmio in test e manutenzione. Ovviamente, non si può pretendere che tutti abbiano afferrato lo spirito collaborativo che guida l’approccio Agile.

La prima cosa che si chiede ad un team Agile è la collaborazione, insieme alla trasparenza e la condivisione di problemi ed esperienze. La programmazione in coppia è un investimento in collaborazione al fine di ottimizzare la qualità della soluzione e ridurre i costi della manutenzione.

Per saperne di più, iscriviti a  Agile PMI-ACP Prep  – n ottimo viatico per comprendere la filosofia Agile, oltre a poter puntare ad una certificazione PMI.

 Modulo di Iscrizione

Modulo di Comunicazione

Portale delle Certificazioni dei Professionisti