J'ai essayé plusieurs fois la programmation par paires, y compris dans une organisation qui a (brièvement) envisagé de la déployer comme un processus obligatoire pour tous les ingénieurs (vous pouvez deviner à quel point cette idée a bien fonctionné). Personnellement, je détestais ça.
Les raisons que j'énumère ci-dessous ne sont que mes expériences subjectives et je ne peux pas «mesurer» leur impact en termes concrets. Mais ici, c'est pareil:
1 - Avoir un «navigateur» et un «chauffeur» n'aide que si le premier est vocal et que le second écoute.
Nous avons tous rencontré des développeurs qui sont têtus, zélés à propos de certaines préoccupations théoriques ou pathologiquement incapables - psychologiquement - de `` jeter '' de vieux travaux lorsque quelqu'un suggère un problème avec cela. Et nous connaissons tous des individus trop timides ou hésitants pour soulever des préoccupations ou suggérer des cas de coin.
Lorsque ces types de développeurs sont associés, le navigateur joue rapidement un rôle passif, et vous vous retrouvez avec une seule programmation avec une révision automatique du code. Il s'agit d'un gaspillage monumental de ressources.
2 - Le jumelage empêche la créativité.
Contrairement à ce qui était auparavant ressenti à propos de la valeur du «brainstorming de groupe», le consensus est de nos jours que le travail de connaissance créative requiert indépendance et autonomie . Lorsque vous travaillez seul, vous pouvez rapidement pirater une idée folle pour voir si c'est réellement possible. Vous pouvez assembler sans un mot un étrange prototype, et si vous échouez, cela n'a pas d'importance, car personne ne le sait .
Comparez cela à l'appariement: lorsque je veux essayer un nouveau concept, je dois convaincre mon partenaire, lui parler de la mise en œuvre, étape par étape, et espérer qu'il ne me jugera pas s'il échoue. Ce genre d'environnement est toxique pour créer de nouvelles idées.
3 - Conception du plus petit dénominateur commun.
Lorsqu'une paire ne peut pas faire émerger de nouvelles idées, comme ci-dessus, ou lorsque les individus ne peuvent pas s'entendre sur un principe fondamental de la façon dont une fonctionnalité doit être conçue, ce qui en ressort est un design confus qui tente de compromettre et de ne satisfaire personne.
Si vous associez un développeur qui construit des abstractions de programmation fonctionnelles merveilleuses, éloquentes et vers le ciel avec un monstre de performance rapide et sale, le code qu'ils produiront ensemble ne sera généralement ni terriblement élégant ni particulièrement rapide.
4 - Manque d'autonomie et de transparence violente.
La transparence violente est une phrase que j'ai tirée d'une polémique modérément célèbre (et assez controversée) contre la méthodologie Scrum. Il décrit la manière dont certaines organisations infantilisent les développeurs et les traitent avec la suspicion normalement réservée aux travailleurs non professionnels.
Quoi que vous pensiez des `` inconvénients '' de rendre le travail des développeurs entièrement transparent (et vous ne serez peut-être pas d'accord pour dire que c'est en fait un préjudice), de nombreuses personnes apprécient leur autonomie et leur capacité à travailler seules, en qui elles ont confiance pour faire la bonne chose. C'est un besoin psychologique important, et forcer les développeurs à s'associer (comme je l'ai vu se produire dans au moins un magasin) laissera les employés consternés, contrariés et aliénés.
5 - Certains développeurs ne jouent tout simplement pas bien par paires.
Certaines personnes ne se conduisent pas ou ne peuvent pas se conduire correctement dans un environnement jumelé. Ils peuvent avoir une mauvaise hygiène, de mauvaises habitudes de travail, une personnalité abrasive, une manière `` forte '' et `` intense '', ou toute une série d'autres attributs qui font d'eux de bons travailleurs individuels, mais de mauvais programmeurs.
Peux-tu le résoudre? Pas vraiment. Changer le comportement personnel est difficile. Un magasin de programmation en binôme doit faire très attention à l'embauche et investir beaucoup de temps pour voir comment quelqu'un travaille et s'il pourra bien travailler avec ses pairs. Discriminer plus durement sur la personnalité, cependant, signifie que l'embauche prendra plus de temps, sauf si vous assouplissez vos normes en matière de compétences et d'expertise.