Il mio team ha fatto la programmazione in coppia sin dalla sua nascita, molto prima che io lavorassi lì, come parte di un negozio per lo più "programmazione estrema". La programmazione della coppia è lo stato predefinito ; le persone vanno davvero singleton solo se c'è un numero dispari, o di tanto in tanto per le indagini, specialmente quelle che coinvolgeranno scherzi con attrezzature ostili e tenteranno di farlo funzionare.
"Junior / senior" non è l'unica strada da percorrere. "Intermedio / junior" è utile; aiuta il ragazzo di livello intermedio a sintetizzare le conoscenze ottenute costringendolo a comunicarlo a qualcun altro. Le sfide "intermedie / intermedie" due persone lavorano insieme per condividere le loro conoscenze, comunicare e lavorare come parte di una squadra. E anche se hai due ragazzi davvero senior, è probabile che abbiano diverse aree di competenza e che possano venire con approcci diversi. Gli aspetti della condivisione della conoscenza non finiscono quando qualcuno è vagamente "al passo con i tempi" su un progetto. Piuttosto, la programmazione di coppia è l'epitome di un'organizzazione di apprendimento . Nuove tecniche e buone pratiche si diffondono rapidamente.
La programmazione in coppia aiuta anche a mantenere la qualità del codice (meno difetti) e la sanità mentale del codice (non fa solo quello che intende, ma fa quello che dovrebbe ... idealmente senza andare giù un coniglio di più settimane- buco facendo la cosa sbagliata, o due diverse cose giuste che entreranno in conflitto selvaggiamente). Aiuta i programmatori a mantenere la concentrazione: qui nel cuore della Silicon Valley, sede della settimana lavorativa di 80 ore, possiamo lavorare per sole 40 ore settimanali perché stiamo programmando intensamente per otto ore al giorno, cambiando le cose a vicenda. (Inoltre, se si andasse più a lungo facendo la programmazione in coppia, probabilmente si gira fuori. O almeno si esaurisce.) Questo è ottimo per l'equilibrio tra lavoro e vita privata e aiuta anche la tua organizzazione quando è importante avere un'inversione di tendenza rapida (in particolare un'inversione a bassa latenza).
Non è tutto, completamente, 100% di pesche e panna; Trovo che la programmazione di coppia sia occasionalmente un ostacolo alla mia applicazione di processi cerebrali intuitivi che sono utili su alcuni problemi. Più di recente, in un'attività 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 davvero sapere esattamente come spiegare cosa 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 (apprezzati nella metodologia XP) per un capriccio.
Tutto sommato, i benefici 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 di coppia ci ha aiutato a mantenere una continuità culturale attraverso l'espansione e nonostante un piccolo turnover).
(Sviluppiamo un'appliance software in Perl, ~ $ 4.000- $ 40.000 prezzo di listino.)