Ho tentato di eseguire una paia di pairing diverse volte, anche in un'organizzazione che (per un breve periodo) ha pensato di implementarla come un processo obbligatorio per tutti gli ingegneri (si può intuire quanto sia stata corretta l'idea). Personalmente, l'ho disprezzato.
Le ragioni che elenco qui sotto sono solo le mie esperienze soggettive e non posso "misurare" il loro impatto in termini concreti. Ma qui sono tutti uguali:
1 - Avere un "navigatore" e un "driver" aiuta solo se il primo è vocale e il secondo ascolterà.
Tutti abbiamo incontrato sviluppatori ostinati, zelanti su alcune preoccupazioni teoriche o patologicamente incapaci - psicologicamente - di "buttare via" il vecchio lavoro quando qualcuno suggerisce un problema con esso. E tutti sappiamo che persone troppo timide o diffidenti sollevano preoccupazioni o suggeriscono casi angosciosi.
Quando questi tipi di sviluppatori sono accoppiati, il navigatore assume rapidamente un ruolo passivo e ciò che si ottiene è la sola programmazione con una revisione automatica del codice. Questo è un enorme spreco di risorse.
2 - L'associazione impedisce la creatività.
Contrariamente a quanto si pensava in passato del valore del "brainstorming di gruppo", il consenso in questi giorni è che il lavoro di conoscenza creativa richiede indipendenza e autonomia . Quando lavori da solo, puoi rapidamente mettere insieme qualche idea pazza per vedere se è effettivamente fattibile. Puoi assemblare senza parole qualche strano prototipo e, se fallisci, non importa, perché nessuno lo sa .
Confronta questo con l'abbinamento: quando voglio provare un nuovo concetto, devo convincere il mio partner, parlarne attraverso l'implementazione, passo dopo passo, e sperare che non mi giudicheranno se fallisce. Quel tipo di ambiente è tossico per creare nuove idee.
3 - Design del minimo comune denominatore.
Quando una coppia non può inventare nuove idee, come sopra, o quando gli individui non sono d'accordo su alcuni principi fondamentali su come una caratteristica dovrebbe essere progettata, ciò che viene fuori è un disegno confuso che tenta di compromettere e soddisfare nessuno.
Se accoppi uno sviluppatore che costruisce astrazioni di programmazione funzionali meravigliose, eloquenti, al cielino con un maniaco di prestazioni fast-and-dirty, il codice che produrrà insieme non sarà né particolarmente elegante né particolarmente veloce.
4 - Mancanza di autonomia e trasparenza violenta.
Trasparenza violenta è una frase che ho strappato da una polemica moderatamente famosa (e piuttosto controverso) contro la metodologia Scrum. Descrive il modo in cui alcune organizzazioni infantilizzano gli sviluppatori e li trattano con il sospetto normalmente riservato ai lavoratori non professionisti.
Qualunque cosa tu pensi dei "danni" di rendere il lavoro degli sviluppatori completamente trasparente (e potresti non essere d'accordo sul fatto che sia effettivamente un danno), molti individui apprezzano la loro autonomia e la loro capacità di lavorare da soli, fidati di fare la cosa giusta. È un importante bisogno psicologico e costringere gli sviluppatori ad accoppiarsi (come ho visto accadere in almeno un negozio) lascerà i dipendenti sgomenti, sconvolti e alienati.
5 - Alcuni sviluppatori semplicemente non giocano bene in coppia.
Alcune persone non possono o non possono comportarsi in modo appropriato in un ambiente associato. Possono avere una cattiva igiene, cattive abitudini lavorative, una personalità abrasiva, un modo "strong" e "intenso", o tutta una serie di altri attributi che li rendono buoni lavoratori individuali, ma poveri programmatori di coppia.
Puoi risolvere questo? Non proprio. Cambiare il comportamento personale è difficile. Un negozio per la programmazione di coppie deve fare molta attenzione all'assunzione e dedicare molto tempo a vedere come funziona qualcuno e se sarà in grado di lavorare bene con i colleghi. Discriminare di più sulla personalità, tuttavia, significa che l'assunzione richiederà più tempo se non allenti i tuoi standard in termini di capacità e competenze.