In quali casi programmare in coppia è un’opzione percorribile? O meglio, esistono casi in cui due sviluppatori che hanno lavorato a quattro mani hanno ottenuto risultati di valore più che doppio?
Un argomento che definire spinoso è un eufemismo. Ma proprio per questo è necessario affrontarlo lasciando da parte i preconcetti per determinare quando sviluppare in due è la strategia più efficace.
I frequenti scambi di opinioni con programmatori professionisti e ricerche mirate sulle community mi hanno aiutato ad avere un quadro il più possibile realistico della situazione.
Per cominciare è doveroso spendere qualche parola sull’attitudine del programmatore a lavorare da solo. Preconcetto, pregiudizio, dato di fatto?
L’ego dello sviluppatore
Ebbene sì. È opinione comune che una buona parte degli sviluppatori e delle sviluppatrici abbia un forte ego.
Il che non deve essere assolutamente considerato un aspetto negativo, anzi. Una forte personalità e una forte fiducia in sé stessi sono probabilmente la chiave più importante per affrontare e, soprattutto, superare problemi e difficoltà.
Non solo: permettono anche di focalizzarsi con più efficacia sulla soluzione.
Devo riuscirci io, devo trovarla io. Se la trovo da solo il merito è tutto mio.
Bene, quindi abbiamo appurato che il forte ego ha i suoi (e tanti) lati positivi.
Ma quale può essere il rovescio della medaglia?
Sia dai rapporti diretti che da quelli indiretti (forum, discussioni di community, ecc…) posso affermare che la troppa fiducia in sé stesso porta in molti casi lo sviluppatore a darsi obiettivi talmente sfidanti da risultare spesso irrealistici o irrealizzabili.
Tizio dice che lo fa in una settimana; io ci metto due giorni!
Quella libreria la vendono? No, no, la faccio da solo in un pomeriggio.
A quel punto parte la sfida e la necessità di dimostrare, soprattutto a sé stessi, che si raggiungerà l’obiettivo.
Poi se le due giornate non sono più da 8 ore ma da 12 o 15 e la soluzione arriva, la soddisfazione rimane. Ma a quale costo? Ne è valsa veramente la pena?
A quattro mani si può?
Diciamola tutta. Non è solo la soluzione ciò che importa, ma anche l’efficienza e l’efficacia con cui ci si arriva.
Da soli è meglio? A volte sì, ma la decisione, in ambito business, deve essere presa in modo oggettivo seguendo determinati criteri guidati essenzialmente da concetti quali profitto, margini, rispetto dei tempi (e, perché no, 1 giornata lavorativa=8 ore).
Torniamo quindi all’argomento spinoso: due sviluppatori che, arrivati alla decisione sofferta di lasciare da parte l’individualismo, lavorano in coppia allo stesso codice, permettono di ottenere dei vantaggi? In sostanza, la produttività è uguale, minore o maggiore alla somma delle due? E di quanto?
Questa domanda mi ha portato a fare delle ricerche (sia tramite raccolta di opinioni dirette, sia verificando le discussioni di community di sviluppatori e project manager dello sviluppo software). Ho scoperto che le variabili sono tante, così come le opinioni delle realtà in cui questa soluzione è stata testata o applicata come processo stabile.
Ma le categorie di risultati sono essenzialmente tre.
- Ho individuato diversi casi di aziende in cui la pratica della programmazione in coppia è uno standard applicato ai progetti in cui si prevede una maggiore rapidità dei tempi di consegna. Con ottimi risultati.
- In altri casi la prova non ha dato esiti positivi ma non era chiaro il motivo. Questi risultati derivavano da un difetto del processo o da una resistenza di chi ha lavorato a questo processo?
- L’ultima categoria riflette invece un’opinione molto chiara: la produttività cala drasticamente, arrivando anche al -50%.
Il grafico seguente riassume il peso di ognuna delle tre categorie e deriva appunto dalle indicazioni che ho raccolto.
Sommando le percentuali che riguardano i risultati negativi non ci sono dubbi: la programmazione in coppia è una scelta rischiosa. Ma è veramente sensato lasciare perdere in partenza considerando che, scelto il progetto giusto, in una buona percentuale di casi si possono ottenere ottimi risultati?
Per aiutarti ad arrivare a una risposta su cui riflettere per i tuoi prossimi progetti, ho aperto un sondaggio basato sui risultati delle mie ricerche.
Partecipa anche tu, commentalo e condividilo con sviluppatori e project manager!
Più opinioni avremo, più facile sarà fare la scelta giusta.