Plutôt que de faire du programme par paire servile tout le temps, nous utilisons la programmation par couple de manière sélective dans notre équipe. Je pense que cela fonctionne mieux dans les circonstances suivantes:
- Renforcer les nouveaux membres de l'équipe sur un projet (au lieu de les laisser parcourir eux-mêmes la documentation ou le code).
- Faire travailler ensemble des juniors et des seniors (aide à montrer certaines des compétences et des astuces des développeurs plus expérimentés, en plus de permettre aux vieux chiens d’apprendre parfois de nouvelles astuces).
- Lorsque quelqu'un essaie de localiser un défaut, il est souvent utile de le coupler à de nouveaux yeux.
Quand utiliser le programme de paires et pourquoi?
Quand éviter la programmation en binôme? Pourquoi?
agile
pair-programming
Paddyslacker
la source
la source
Réponses:
Les recherches compilées par Laurie Williams indiquent que la programmation en binôme fonctionne mieux dans les équipes industrielles lorsque
D'après mon expérience personnelle, j'ai constaté que mon équipe XP consacrait en moyenne environ 60% de notre temps de développement à la programmation par paires. Le reste du temps est consacré au développement individuel. Il n'est pas rare de créer une première conception, de travailler seule sur la conception pendant quelques heures, puis de revenir à la fin pour finir des parties difficiles ou difficiles du code.
J'ai également constaté que la programmation par paires est plus efficace dans des blocs d'environ 1,5 à 2,5 heures. Quoi que ce soit moins, cela nécessite généralement trop de frais généraux pour la configuration, alors que beaucoup plus et les couples ont tendance à être grincheux et fatigués. Grincheux et fatigué signifie que vous ne communiquez pas bien et que vous laissez peut-être des défauts glisser dans le système.
la source
La programmation en binôme a fonctionné pour moi dans très, très peu de situations.
Où la programmation par paires échoue pour moi
la source
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.)
la source
Je n'ai jamais travaillé dans une configuration de «programmation par paire» et pourtant je peux prétendre avoir fait partie des trois circonstances que vous avez énumérées. Le scénario que vous évoquez semble plus «une programmation régulière» avec des phases d’aide / de formation. N'avons-nous pas fait tout cela avant la «programmation par paire»? Je suppose que la programmation en binôme nécessiterait une approche plus engagée du fait que le processus de partage au sein d'une équipe n'arrête pas la minute où vous abordez la tâche ou le problème immédiat. Mais alors c'est ce que je "pense" et pas ce que je "sais".
Personnellement pour la programmation en binôme, j'aimerais travailler dans une équipe où j'ai l'occasion d'apprendre et de partager mes connaissances. Une équipe déséquilibrée dans laquelle chaque personne avec laquelle vous travaillez a des milles d’avance sur vous, ou alors un niveau bien inférieur à la moyenne peut devenir assez inintéressante assez rapidement. De plus, j'aurais peur de travailler avec des personnes qui ont des convictions profondes et qui sont difficiles à convaincre.
la source
Nous expérimentons la programmation en binôme dans notre équipe depuis quelques mois. Je trouve cela très utile lorsque vous travaillez sur quelque chose de nouveau (nouvelle technologie, nouvelle fonctionnalité, etc.), car vous pouvez rapidement échanger des idées avec une autre personne de l'équipe et les faire valider / invalider. En outre, un examen par les pairs côte à côte aide à éliminer les bogues.
Un autre coéquipier a essayé d’utiliser la programmation en binôme avec un test pour réaliser ATDD et il était plutôt satisfait des résultats (selon ses calculs, une augmentation de 20% du coût en développement entraînait une diminution d’environ 50% du temps de test).
la source
Bonne nuit
Nous avons maintes fois débattu des pratiques de la programmation extrême et de la programmation en binôme . Dans le passé, nous sommes en mesure de comprendre que la programmation est une activité en solo, car les programmeurs avaient besoin de concentration et d’isolement. Les programmeurs de cette époque se trouvaient dans la zone , un état mental dans lequel ils pouvaient se concentrer efficacement sur le code et prendre des décisions agréables et créatives.
La programmation en binôme semble également risquée si vous supposez qu'un programmeur s'interrompt. D'autre part, il est plus difficile d'interrompre deux programmeurs travaillant ensemble. En programmation solo, par exemple, il sera plus facile de s’interrompre; il est donc presque impossible pour un programmeur solo de rester dans la "zone".
La qualité du code en est une autre lorsque la date butoir est imminente. Les gens seront toujours pressés, qu'ils soient programmeurs en couple ou en solo: ils n'appliqueront pas certaines des meilleures pratiques et oublieront simplement les tests unitaires.
Je resterais avec la programmation par paire. Parce qu'en termes de risques, lorsqu'un programmeur est parti, vous aurez toujours un autre gars pour documenter le processus et enseigner à tous les autres comment il fonctionne.
la source
Travailler sur des tâches de complexité non triviale tend à être un bon candidat pour la programmation en binôme afin que plusieurs personnes comprennent le code plutôt que qu'un seul développeur connaisse une partie de la base de code. Un autre cas est celui où une personne souhaite transférer certaines compétences. Par exemple, si quelqu'un qui est vraiment doué pour les tests unitaires fait la paire avec quelqu'un qui n'est pas aussi familier avec le concept, cela aide à prendre l'habitude de quelque chose.
En ce qui concerne les endroits où éviter la programmation en binôme, créez des tâches simples, dans lesquelles il serait préférable de diviser le travail en deux groupes et de laisser chaque développeur effectuer une partie du travail séparément pour que le travail soit effectué. Certaines tâches peuvent nécessiter un peu de frappe mais ne sont pas si grandes qu'il vaut la peine de passer quelques heures à essayer de trouver une meilleure façon de le faire, comme cela pourrait être fait si chaque développeur adopte une approche de force brute pendant quelques instants. heures.
la source