La programmation par paires est assez célèbre de nos jours.
Il présente plusieurs avantages comme:
Mais quels sont les inconvénients de la programmation par paires?
Bien que la programmation par paires ait acquis une réputation considérable, elle présente également plusieurs écueils.
Certains d'entre eux sont les suivants:
J'ai tenté 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 que l'on pensait auparavant de la valeur du "brainstorming de groupe", le consensus est de nos jours que le travail de connaissance créative nécessite l'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 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 type d'environnement est toxique pour créer de nouvelles idées.
- 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'il produira 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 sera en mesure de 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.
Cela dépend de votre situation ou de votre point de vue.
La programmation en binôme est bonne pour l'organisation. Mais est-ce bon pour l'individu?
Après tout, c'est une méthode d'économie (rétroaction précoce) et de productivité; Il ne s'agit pas de vous mais du projet, du produit, de l'entreprise ($$).
Bien que vous puissiez avoir des avantages personnels, ils ne sont ni la raison ni la fin de toute méthodologie de développement. La programmation en couple (à temps plein), par exemple, vous empêche également de vous relâcher, de surfer, etc., vous devez justifier vos pauses auprès de votre partenaire.
Votre partenaire (rotatif) sera la meilleure caméra de surveillance: l'intensité du travail augmente.
Ou, en distribuant des connaissances, l'individu devient moins risqué pour l'entreprise (par exemple, ne peut pas quitter l'entreprise avec les connaissances essentielles) et a moins de "moyens de négociation".
Je suis sûr que vous trouvez plus de points en lisant des articles affirmatifs de manière plus critique de VOTRE situation/point de vue réel dans l'entreprise plutôt que du point de vue de votre manager.
Presque toutes les méthodologies sont écrites du point de vue du gestionnaire.
Soudain, vous devez maintenant dire à quelqu'un quand vous voulez aller aux toilettes ou prendre un café. Au moins, il n'est pas nécessaire de demander la permission.
Vous devez vous conformer aux normes d'hygiène de l'autre personne.
En plus d'autres réponses:
De nombreuses entreprises pour lesquelles j'ai travaillé délivrent des ordinateurs portables à leurs programmeurs (basé sur le site des clients - plus facile de garder l'équipement en sécurité s'il est ramené à la maison après le travail, être capable de faire le petit boulot de la maison sur VPN en un rien de temps, etc.) De nombreuses années J'ai déjà eu des problèmes à voir sur l'écran du portable d'une autre personne (le "conducteur") du point de vue de l'épaule - l'âge n'améliorera pas cela (et certains écrans deviennent difficiles à lire en dehors de l'angle de vision idéal dans tous les cas).
Les programmeurs de paires auront donc besoin d'écrans suffisamment grands, ce qui augmentera le coût du matériel et limitera l'adaptabilité à l'emplacement. Peut ne pas être un problème pour certains, dans d'autres cas, ce sera un problème.
Anecdotes pour votre amusement:
Je pense que la programmation en binôme échoue pour des raisons sociales et pratiques. Essentiellement, vous demandez à une personne de travailler sous surveillance constante et à l'autre de ne faire que des trous.
Ce qui se passe inévitablement après un certain temps, c'est que la paire se sépare pour `` vérifier les e-mails '' ou `` vous continuez à vérifier mal ce problème en direct '', etc.
Plutôt que d'améliorer la sortie du code, le volume est diminué. À la fois pour des raisons pratiques `` J'ai besoin de déjeuner/de se réunir hors de la synchronisation avec vous '' et de social `` Je vais juste attendre que Bob termine ce qu'il fait avant de demander à nouveau de m'appairer, je ne veux pas être perçu comme le harcelant ''
Quant aux avantages tant vantés, il existe de nombreuses pratiques courantes qui permettent de les atteindre de manière plus simple et efficace
Dire à deux développeurs seniors de faire une "programmation douloureuse" s'ils sont convaincus que l'on peut faire le travail est imo on du plus gros désavantage.