Il mio team ha fatto la programmazione delle coppie sin dal suo inizio, molto tempo prima che lavorassi lì, come parte di un negozio per lo più di "programmazione estrema". La programmazione della coppia è lo stato predefinito ; le persone vanno davvero singleton solo se c'è un numero dispari, o occasionalmente per le indagini, specialmente quelle che implicheranno problemi con attrezzature ostili e cercheranno di farlo funzionare.
"Junior / senior" non è l'unico modo per andare. "Intermediate / junior" è utile; aiuta il ragazzo di livello intermedio a sintetizzare le conoscenze che ha ottenuto costringendolo a comunicarlo a qualcun altro. "Intermedio / Intermedio" sfida due persone che lavorano insieme per condividere le proprie conoscenze, comunicare e lavorare come parte di un team. E anche se hai due ragazzi molto più anziani, è probabile che abbiano diverse aree di competenza e possano approcciare approcci diversi. Gli aspetti di condivisione della conoscenza non finiscono quando qualcuno è vagamente "in grado di accelerare" un progetto. Piuttosto, la programmazione della coppia è l'epitome di un'organizzazione apprendimento . Nuove tecniche e best practice si diffondono rapidamente.
La programmazione di coppie aiuta anche a mantenere la qualità del codice (meno difetti) e la sanità mentale del codice (non fa solo ciò che intende, ma fa ciò che dovrebbe ... idealmente senza scendere in una buca del coniglio di più settimane facendo la cosa sbagliata, o due cose giuste differenti che entreranno in conflitto selvaggiamente). Aiuta i programmatori a mantenere la loro attenzione: qui nel cuore della Silicon Valley, sede della settimana lavorativa di 80 ore, possiamo lavorare solo per 40 ore a settimana perché stiamo facendo un'intensa programmazione per otto ore al giorno, cambiando le cose via l'uno con l'altro. (Inoltre, se avessi fatto più tempo con la programmazione delle coppie, probabilmente avresti smesso di funzionare o almeno bruciato. Questo è ottimo per l'equilibrio tra lavoro e vita privata, e aiuta anche la tua organizzazione quando è importante avere tempi di risposta rapidi (inversione di bassa latenza, in particolare).
Non è tutto, completamente, 100% pesche e crema; Trovo che la programmazione di coppie sia occasionalmente un ostacolo alla mia applicazione di processi cerebrali intuitivi che sono utili su alcuni problemi. Più di recente, in un compito di perdita di memoria, ho trascorso un po 'di tempo con e senza coppie; senza uno, mi sentivo più libero di scherzare e provare esperimenti senza sapere veramente esattamente come spiegare quello che stavo facendo in ogni momento. Ci sono anche alcuni vantaggi nel lavorare singleton, essere in grado di andare su una tangente e fare alcuni refactoring selvaggi (valutati nella metodologia XP) per un capriccio.
Ma tutto sommato, i vantaggi superano di gran lunga i costi e l'abbinamento ha funzionato in modo spettacolare per noi: dalla fase di avvio all'acquisizione da parte di una società più grande e alla nostra successiva integrazione. (A proposito, la programmazione della coppia ci ha aiutato a mantenere una continuità culturale attraverso l'espansione e nonostante un piccolo giro d'affari).
(Sviluppiamo un'appliance software in Perl, ~ $ 4,000 - $ 40,000 prezzo di listino.)