Quelle est la fréquence de la programmation par paires sur le lieu de travail?

16

J'ai toujours été intrigué par la programmation en binôme, mais en 12 ans de développement, je n'ai jamais travaillé dans un endroit où ils ont utilisé cette pratique, donc j'ai toujours été sceptique quant à la façon dont les gens le voient.

Je me demande si c'est à cause de l'argent / du temps (un patron aux cheveux pointus repérant deux personnes sur un ordinateur travaillant sur le même code !!!! comment osent-elles!) Ou pour d'autres raisons?

ozz
la source
8
Je pense que le PHB peut être correct dans cette situation. Deux personnes (et donc deux salaires) pour un produit sont fondamentalement une mauvaise décision commerciale. Il n'y a pas beaucoup de cas où la programmation en binôme est plus productive qu'individuelle, du moins pas "à plein temps" - donc ce n'est tout simplement pas fait en dehors du mentorat de nouveaux membres du personnel ou du travail en commun sur un problème spécifique.
TZHX
3
Très difficile de convaincre le patron aux cheveux pointus que cela a de la valeur.
Walter
3
Pour le nouveau code, je pense que la programmation par paire a une grande valeur. La première itération peut prendre le même temps, mais IME vous passez beaucoup moins de temps de débogage. Et lorsque deux personnes connaissent le même code, le débogage devient plus facile, car elles peuvent se regarder indépendamment ensemble. "Étant donné suffisamment de globes oculaires, chaque bug est transparent."
Michael K
1
@Michael, pas toujours, mais parfois je pense que l'appairage sur du code hérité peut être utile. Il peut briser les silos et / ou réduire les coûts de refactoring. Cela dit, je suis entièrement d'accord avec vous.
DevSolo
5
@TZHX: "Deux personnes pour une sortie sont de mauvaises affaires". C'est un argument sérieusement imparfait et vous le savez (comme payer des programmeurs par ligne de code). La programmation en binôme est un sujet complexe et ne doit pas être rejeté si facilement.
Martin Wickman

Réponses:

20

J'ai eu le même concert pendant 15 ans et nous avons récemment (12-18 derniers mois) commencé à adopter des techniques Agiles. Lorsque la programmation par paire est utilisée, le scénario / la fonctionnalité de résultat a été mis en œuvre à temps avec moins de défauts. Je ne pense toujours pas qu'il ait été employé assez souvent.

Avant notre adoption Agile, un autre développeur et moi avons rarement partagé le clavier au fil des ans (peut-être une fois tous les 3-4 mois). Notre équipe de direction semblait réticente mais était toujours satisfaite de notre association informelle, car elle accomplissait généralement quelques-unes des actions suivantes:

  • silos réduits sur l'équipe (énorme victoire lorsque l'équipe compte 6-8 devs)
  • code produit avec moins de défauts
  • chaque développeur a généralement acquis des compétences

Je dirais que la direction est réticente, mais si vous pouvez faire de petits pas et démontrer que la fonctionnalité est meilleure par la suite (économies de coûts) et / ou que chaque (ou un) développeur a acquis certaines compétences (en le payant à l'avance), vous pouvez acquérir de la vapeur si vous trouvez que c'est une pratique qui vous convient, vous ou votre équipe.

DevSolo
la source
grande perspicacité DevSolo, merci pour le partage. Je suppose que vous avez probablement une équipe assez stable (faible rotation du personnel?)
ozz
Je vous en prie. Notre chiffre d'affaires a été assez faible ... 4 d'entre nous ont partagé le même bureau pendant plus de 15 ans grâce à 4 déménagements (dans 4 bâtiments et 2 états)!
DevSolo
Ironique, votre alias est 'DevSolo';) nb mes expériences sont d'accord avec la vôtre
ChrisAnnODell
11

Je suppose qu'il y aurait probablement beaucoup de résistances de la part des développeurs. Vous souvenez-vous d'avoir été forcé de travailler avec des gens qui n'étaient peut-être pas les personnes les plus motivées au monde au collège ou même au lycée? Ces gens existent toujours. Sauf si vous avez une équipe composée de toutes les personnes "de premier ordre", ce type de configuration provoquera une certaine animosité dans le groupe.

Pemdas
la source
Très vrai Pemdas!
ozz
2
+1, malheureusement. Le travail d'équipe est une compétence que vous devez développer, et si vous ne le souhaitez pas, vous ne pouvez pas. C'est peut-être ce que les gestionnaires de programmeurs devraient faire - trouver la structure d'équipe qui favorise le plus de productivité avec les gens qu'ils ont.
Michael K
4
Cette profession nécessite de garder l'ego en échec. Ce n'est pas toujours facile, mais les récompenses seront extrêmement bénéfiques.
DevSolo
@DevSole ... qu'est-ce que cela a à voir exactement avec ma réponse?
Pemdas
@Perndas, je supposais, peut-être à tort, que la résistance serait due aux egos. Au moins, quand je l'ai vu, cela semble être la raison. Je n'ai vu que 2 développeurs (si je me souviens bien) vraiment résister à cela. L'ego de l'un ne pouvait pas entrer dans la pièce, l'autre avait des problèmes avec la confiance.
DevSolo
9

Je ne l'ai pas fait officiellement, mais chaque fois que je serai coincé, j'appellerai un développeur et nous travaillerons ensemble sur une solution. C'est un excellent moyen de faire rebondir des idées, de laisser une personne réfléchir pendant que l'autre met en œuvre, de sorte que vous ne perdiez pas votre fil de la pensée parce que vous la tapez.

Je souhaite que cela soit fait plus.

CaffGeek
la source
4
Un autre outil à utiliser, si vous n'êtes pas familier, s'appelle "Rubber Ducking". Fondamentalement, placez un objet sur votre bureau comme un canard en caoutchouc (le vôtre utilise vraiment un jouet Yoda) et expliquez-lui le problème. voir c2.com/cgi/wiki?RubberDucking
DevSolo
J'utilise plutôt la personne assise à côté de moi ... nous ne pouvons pas mettre de trucs sur nos bureaux.
CaffGeek du
Sérieusement?
Michael K
@Michael ... vous n'avez aucune idée des règles que nous avons ici. Et pourtant, les quelques bonnes choses l'emportent sur toutes les mauvaises ... à peine.
CaffGeek
C'est triste d'entendre que la gestion déraisonnable des règles s'applique aux programmeurs (c'est assez stupide, ne pensez-vous pas? Ils doivent faire des efforts supplémentaires pour nous garder heureux d'équilibrer cela)
Zekta Chan
9

Je m'en fous:

1 - J'aime écouter ma musique pendant le codage. Tout le monde ne veut pas entendre Slayer exploser dans leurs oreilles.

2 - J'ai été élevé en considérant que regarder par-dessus les épaules des gens était très grossier et très inconfortable quand les gens le faisaient.

3 - Je pense très vite et quand je suis sur un fil de solution, quand je commence à trouver une réponse, être interrompu est la toute dernière chose dont j'ai besoin.

4 - Je ne peux pas prendre de pauses occasionnelles pour parcourir les forums et les groupes de discussion. Certains pourraient penser que c'est inapproprié de toute façon, mais je trouve cela très important pour mon amélioration continue. Parfois, je serai trop distrait, mais généralement l'avantage de mes connaissances accrues l'emporte sur tout impact sur ma productivité.

Je suppose que cela pourrait être différent sur d'autres équipes, mais les rares fois où je suis réellement perplexe par quelque chose et BESOIN d'aide, je suis presque toujours celui qui finit par trouver la solution de toute façon. Je suis vraiment bon dans ce que je fais mais je pense qu'il pourrait y avoir plus de choses en cours ... je ne suis pas sûr, en tout cas, je trouve que je suis mieux à résoudre les problèmes difficiles et généralement mieux à le faire seul. Cela peut sembler arrogant, mais cela ne le rend pas faux.

J'ai considéré que cela pourrait en fait aider les autres à choisir certaines de mes techniques, mais, en tenant compte de la question n ° 3, ils seraient à peine en mesure de poser des questions sans briser ma pensée de toute façon.

Cela dit, je l'ai essayé de temps en temps. Parfois, cela a des avantages mineurs, mais je ne peux certainement pas le voir comme une chose cohérente. Le système du loup solitaire fonctionne pour moi et il semble fonctionner pour l'équipe.

Edward Strange
la source
2
@Noah, basé uniquement sur # 2, je ne sais pas si vous comprenez le concept de la programmation par paires. L'idée n'est pas de regarder par-dessus une épaule. L'idée, telle que je l'ai pratiquée, est de partager le PC pour travailler en tandem. Ce n'est pas de la programmation maître / esclave, c'est de la programmation par les pairs. Peut-être que le plus tard est un meilleur terme pour cela ...
DevSolo
C'est parfaitement valable. Certaines personnes veulent juste être laissées seules pour le découvrir par elles-mêmes.
MattC
Et aussi, +1 pour le casque. Je fais exploser du métal et / ou de la transe toute la journée et je suis assez ennuyé quand les gens me parlent de trucs. Ne peuvent-ils pas attendre que ma chanson préférée soit terminée? : D
MattC
2
@Noah: En lisant votre liste, il semble que vous manquez les points les plus fins de la programmation par paires. Je ne dis pas que c'est pour tout le monde, et cela prend certainement du temps et des efforts pour passer du mode cowboy au mode partage. Tout comme il faut du temps pour apprendre à faire le TDD correctement (ou toute autre pratique agile d'ailleurs).
Martin Wickman du
1
suite ...: Avec "senior" signifiant que vous n'êtes peut-être pas réellement celui qui fait le code, mais aidez un développeur plus junior à faire une suggestion. Je ne suis pas non plus le plus grand fan de l'idée de la programmation en binôme, mais je vois que c'est probablement surtout hors de ma zone de confort. Beaucoup de développeurs aiment travailler seuls sur leur station, mais je dois admettre que j'apprendrais probablement plus et trouverais de meilleures solutions si je travaillais avec un autre développeur. C'est donc vraiment une question de confort personnel vs de travailler plus efficacement.
Anne Schuessler
5

La programmation par paires est un excellent moyen de commencer ou de faire quelque chose de non trivial et difficile. Des tâches plus routinières et simples sont mieux effectuées seules.

J'ai participé à un certain nombre de sessions de programmation en binôme, tant dans des startups / garages que dans de grandes entreprises. Cela n'arrivait invariablement que lorsque quelque chose de nouveau et de difficile était accepté, c'est-à-dire deux fois par an au mieux, pendant quelques semaines. À quelle fréquence cela se produit-il dans votre entreprise?

9000
la source
moins souvent que je ne le souhaiterais, c'est sûr.
ozz
5

Nous ne l'avons jamais appelé ainsi, mais à l'époque, c'est ainsi que nous avons toujours attaqué de nouveaux problèmes. Nous nous associons pour commencer une solution, mais nous nous séparons généralement pour terminer / nettoyer les détails individuellement. Plus tellement. Semble devenir de plus en plus rare.

Brian Knoblauch
la source
3

Pas très courant. Dans tous les magasins où je suis allé depuis plus de 10 ans, je l'ai vu une fois. Dans le magasin le plus lent et le moins efficace. Il semble créer un environnement bruyant et stressant. Une personne finit par conduire et parle constamment, empêchant l'autre de penser.

Rassemblez l'équipe pour des révisions de code, que ce soit en groupe ou en binôme, et donnez aux développeurs leur propre espace. Ce sera mieux à long terme que de courir après la dernière mode agile.

Servius
la source