Mon équipe a fait de la programmation en binôme depuis ses débuts, bien avant que je travaille là-bas, dans le cadre d’une boutique de style essentiellement "programmation extrême". La programmation par paires est l' état par défaut . les gens ne vont vraiment à la singularité que s'il y a un nombre impair, ou occasionnellement pour des enquêtes, en particulier celles qui impliqueront de jouer avec du matériel hostile et d'essayer de le faire fonctionner.
"Junior / senior" n'est pas la seule solution. "Intermédiaire / junior" est utile; cela aide le gars de niveau intermédiaire à synthétiser les connaissances qu'il a acquises en l'obligeant à les communiquer à quelqu'un d'autre. Défis "Intermédiaire / Intermédiaire" Deux personnes travaillent ensemble pour partager leurs connaissances, communiquer et travailler en équipe. Et même si vous avez deux types très expérimentés, ils ont probablement des domaines d’expertise différents et des approches différentes. Les aspects de partage des connaissances ne s'arrêtent pas lorsque quelqu'un est vaguement "au courant" d'un projet. La programmation en binôme est plutôt la quintessence d'une organisation apprenante . Les nouvelles techniques et les meilleures pratiques se répandent rapidement.
La programmation en binôme aide également à maintenir la qualité du code (moins de défauts) et la santé du code (il ne fait pas ce qu'il a l'intention de faire, mais il fait ce qu'il devrait ... idéalement sans tomber dans un lapin de plusieurs semaines- trou faire la mauvaise chose, ou deux bonnes choses différentes qui seront en conflit sauvage). Cela aide les programmeurs à rester concentrés: ici, au cœur de la Silicon Valley, siège de la semaine de travail de 80 heures, nous ne pouvons travailler que 40 heures par semaine, car nous effectuons un codage intense huit heures par jour, en changeant avec l'un l'autre. (En outre, si vous programmez plus longtemps la programmation en binôme, vous risquez de vous écraser. Ou du moins de vous épuiser.) C’est une bonne solution pour l’équilibre travail / vie privée, et cela aide également votre organisation dans la mesure où il est important d’obtenir un délai d'exécution rapide (délai d'exécution à faible temps de latence, en particulier).
Ce n'est pas tout, complètement, 100% pêches et crème; Je trouve que la programmation en binôme est parfois un obstacle à l’application de processus cérébraux intuitifs utiles pour certains problèmes. Plus récemment, lors d’une tâche de fuite de mémoire, j’ai passé du temps avec et sans paires; sans un, je me sentais plus libre de perdre mon temps et d'essayer des expériences sans vraiment savoir exactement comment expliquer ce que je faisais à un moment donné. Il est également avantageux de travailler en mode singleton, de pouvoir prendre une tangente et de procéder à certaines refactorisations sauvages (appréciées dans la méthodologie XP) sur un coup de tête.
Mais globalement, les avantages dépassent de loin les coûts et le couplage a fonctionné de manière spectaculaire pour nous: depuis la phase de démarrage jusqu’à l’acquisition par une plus grande entreprise et notre intégration ultérieure. (En parlant de cela, la programmation en binôme nous a aidés à maintenir une culture continue grâce à notre expansion et malgré un faible roulement).
(Nous développons une appliance logicielle en Perl, prix catalogue compris entre 4 000 et 40 000 dollars.)