Comment faire face à quelqu'un qui n'aime pas l'idée des revues de code?

26

De toute évidence, si la direction consacre du temps à passer en revue les codes, tout le monde doit le faire.

Mais il y a toujours ces gars (ou filles) qui résistent avec chaque once de leur être.

Comment gérez-vous efficacement le traitement de ce scénario lorsque vous le traitez en tant que pair examinateur?

ozz
la source
19
Probablement de la même manière que vous traitez avec les personnes qui ont des problèmes avec d'autres articles comme le code vestimentaire, la rapidité, les jours de maladie, etc.
Josh K
hehe ... J'ai essayé de qualifier cela par le fait que la direction disait que tout le monde doit le faire, ce que je recherche, c'est quand vous, le modeste pair examinateur, devez essayer de le faire.
ozz
3
Honnêtement: dites-leur de se taire et de le faire. C'est pour leur bien.
Steven Evers
1
Résister à quoi? Vous permettant de voir leur code ou de regarder le vôtre? Ils évitent peut-être les conflits, peuvent-ils s'attendre à des conflits? Savez-vous pourquoi ils hésitent?
Martin Maat

Réponses:

46

Il résiste à cause de la peur . Ce conditionnement peut être le résultat d'une ou de plusieurs mauvaises expériences antérieures concernant la révision, en tant qu'enfant, à l'école, au travail ou même dans votre équipe actuelle. Dans nos sociétés modernes, il est très courant pour nous de confondre le travail de quelqu'un avec sa valeur en tant qu'être humain. C'est pourquoi les critiques au travail ne sont pas bien perçues. C'est aussi pourquoi parler en public dans l'une des phobies les plus répandues (peur du jugement).

Pour éviter un tel comportement, vous aurez besoin de psychologie. Vous devez prouver à son cerveau de lézard que cela ne se produira pas (il ne sera pas jugé, humilié, tué, quoi que ce soit ...) en le désensibilisant aux revues de code.

L'une des méthodes les plus efficaces que j'ai trouvées pour débloquer quelqu'un est de lui demander de réviser votre code , avant de demander de réviser son code.

Au bout d'un moment, proposez- lui de lire son code pour en tirer des leçons et pourquoi pas proposer des améliorations. Lorsque vous trouvez quelque chose à changer, faites attention à ce que vous écrivez. Il comprendra qu'il n'y a rien à craindre, et il ne prendra que la partie positive du processus de révision: apprendre et augmenter ses connaissances .

Michael K
la source
3
Vous voudrez peut-être ajouter une définition de «cerveau de lézard» pour les personnes qui ne le connaissent pas.
Adam Lear
@Anna: Je viens d'ajouter le lien vers une définition.
Super réponse Pierre! A voté pour l'instant au lieu d'une réponse finale.
ozz
1
@Aaron: Je faisais référence à "quelqu'un" mentionné dans la question. Oui, j'ai toujours des peurs irrationnelles dues au conditionnement dans ma vie d'enfant et d'adulte, comme la plupart d'entre nous. Exemples: j'ai une peur irrationnelle des aigus. Je me désensibilise quand je peux. Le week-end dernier, j'ai visité une citadelle (très courante dans mon pays à cause des guerres successives entre français et allemands) et j'ai dû prendre un tramway aérien.
1
Comme d'habitude une excellente réponse Pierre.
Josh K
5

J'essaierais de travailler en binôme - fais équipe avec quelqu'un qui déteste l'idée avec quelqu'un qui l'aime, et fais-leur passer en revue le code de l'autre pendant quelques semaines. Évidemment, cela peut ou peut ne pas aider, mais le fait d'être aux deux extrémités de l'examen donnera au moins une vue plus complète du processus. Avoir une paire de travail ensemble leur permettra de se familiariser avec le style de l'autre et les erreurs courantes et leur donnera le temps de s'entraider, plutôt que de se faire du caoutchouc. Cela peut également vous aider à promouvoir la programmation par paires dans votre environnement de travail, car je pense que vous pouvez voir une tendance croissante non seulement à revoir, mais à recoder ou même à planifier et à coder à partir de zéro.

Tant que les parties désintéressées sont prêtes à essayer, cela pourrait aider. S'ils refusent d'en tenir compte, il n'y a pas grand-chose que vous puissiez faire à ce sujet tant qu'ils font partie de l'équipe.

Michael K
la source
La programmation par paires est un tout autre sujet, mais une excellente suggestion!
ozz
Votre commenté m'a fait penser un peu plus sur PP, alors j'ai commencé une autre Q - programmers.stackexchange.com/questions/39878/... Merci!
ozz
4

@ La réponse de Pierre est sur la bonne voie pour quelqu'un qui craint une révision du code. Je peux imaginer une autre situation. Un programmeur vedette qui estime qu'une révision de code est une perte de temps car le code atteint un niveau acceptable de qualité et d'exactitude. Dans ce cas, ils peuvent penser qu'une révision de code est une perte de temps et une chasse aux sorcières. (Il s'agit d'une recherche d'un problème lorsqu'il n'en existe pas.)

Dans ce cas, je réorienterais l'objectif de l'examen. Au lieu que la révision du code concerne la recherche de "problèmes" dans le code, traitez-le comme une recherche de cibles de refactorisation ou d'améliorations futures potentielles, ou de fonctionnalités de conception supplémentaires. De cette façon, le codeur et le réviseur sont impliqués dans le processus et nous espérons que ce codeur compétent aura l'impression que le temps est mis à profit.

Hogan
la source
5
Avec ce type de personne, vous pouvez essayer de leur faire savoir que vous êtes ravi de revoir leur code, car vous pensez que vous apprendrez beaucoup d'eux. La révision du code ne concerne pas seulement l'amélioration du code, mais aussi l'exposition des autres membres de l'équipe à un meilleur code qui les aidera dans le développement futur.
HLGEM
2

Franchement, cette question n'a aucun sens si vous avez une boutique bien gérée:

1) Si cela fait partie du travail, vous devez le faire, ou vous êtes insoumis. Quelqu'un qui refuse catégoriquement de faire une partie du travail qu'il doit faire devrait être mis en boîte. La programmation est un métier et une profession - les examinateurs et les gestionnaires sont là pour aider à faire le travail, pas pour s'occuper des enfants gâtés (de tout âge).

2) Si vous avez un système de contrôle de source bien géré (ce qui est indispensable dans n'importe quel magasin de logiciels professionnel), leur code peut être révisé, qu'ils le veuillent ou non. Consultez donc leur code:

  • Si c'est bon, informez-les et donnez-leur une tape dans le dos - cela encouragera la participation.

  • Si ce n'est pas bon, informez-les également. Cela devrait avoir pour effet de les motiver à participer, afin de se défendre. Si ce n'est pas le cas, vous pouvez utiliser des mesures punitives: sanctions financières, rétrogradations, etc. Si, malgré vos efforts, cet employé ne parvient pas à se déplacer, IMO vous avez un mauvais employé et on devrait lui montrer la porte.

Vecteur
la source
C'est un conseil complètement désespéré, je prévois pour vous une "boutique" avec un environnement de travail vraiment mauvais. Urgghh!
cognacc
@cognacc - Vous n'avez rien à «prévoir». Je travaille dans des groupes depuis 25 ans où nous avons un très bon environnement de travail: nous sommes tous des adultes et comprenons ce qu'il faut pour être professionnel et avoir la responsabilité de notre travail.
Vector
1
Je dois être d'accord avec Vector. Si cela fait partie du processus, tout le monde le fait et je suis sûr qu'ils voient rapidement que "ça ne mord pas". Il y a toujours un risque que certaines personnes soient "grossières" dans leurs commentaires lors d'une révision de code, bien sûr, mais ce sont ces personnes qui doivent être traitées - tout comme elles le seraient si elles étaient grossières avec leurs collègues en personne.
MetalMikester
Je suis d'accord avec cognacc, c'est un conseil inutile car il ne propose pas de stratégie ou de solution. Il dit simplement "ils doivent parce qu'ils doivent". Duh. La question est de savoir comment les traiter, comme comment les inverser. Le simple fait de faire faire aux gens quelque chose contre leur volonté (ou autre) ne résout pas le problème, il en crée probablement de nouveaux. Vous devez d'abord comprendre l'origine de la résistance.
Martin Maat
Vous avez manqué ma remarque boutique bien gérée et tout ce qui en découle: cela signifie que vous traitez les adultes: des gens qui savent ce que leur travail signifie et implique. Vous n'avez pas compris ma réponse très claire.
Vector
1

Ont-ils des expériences négatives dans des endroits où les révisions de code n'ont pas été effectuées correctement? Ils peuvent avoir des préoccupations légitimes.

S'ils ne voient absolument aucun mérite à l'exercice, demandez-leur d'être patient et de voir ce qui arrive à leur code et en particulier aux autres (s'ils pensent qu'ils sont parfaits) en conséquence.

L'examen du code «devrait» améliorer le développement, mais tant que vous n'avez pas un système qui fonctionne réellement, pourquoi quelqu'un devrait-il le faire?

JeffO
la source
Merci Jeff, d'accord, si le processus n'est pas bon, ce sera difficile, et contourner les peurs irrationnelles de n'importe qui peut être difficile - certaines personnes ne changeront tout simplement pas!
ozz
1
mais jusqu'à ce que vous ayez un système qui fonctionne réellement, pourquoi devrait-on vouloir le faire? Permettez-moi de faire un essai fou à ce sujet: faites-le pour que vous puissiez comprendre pourquoi votre système ne fonctionne pas ?
Vector
1
@Vector - Si vous êtes programmeurs, vous ne savez pas comment le faire fonctionner, ils peuvent avoir de plus gros problèmes. Je pense également que la direction doit assumer certaines responsabilités et définir clairement le code de qualité. Si le code qui est publié ne contient pas trop de bogues, ils peuvent avoir une bonne raison de ne pas inclure la révision du code. Pour un projet de toute complexité, je doute que cela se produise sans examen du code de qualité ou sans une quantité disproportionnée de temps et de coûts de développement.
JeffO
@JeffO - OK, je vois votre point: si le système ne fonctionne vraiment pas, ce n'est pas la question de la "révision de code", la question est la compétence des programmeurs, et donc une simple "révision de code" n'est pas la solution. Je suis d'accord avec ça.
Vector
1

Personnellement, il y a des combats qui ne peuvent tout simplement pas être gagnés avec 100% de la population.

Je peux voir suffisamment de raisons pour lesquelles la programmation par paires ne fonctionnerait pas lorsque quelqu'un est obligé de le faire.

Mais les revues de code sont différentes - elles changent votre productivité, pas nécessairement vos habitudes de travail.

La direction peut faire plusieurs choses pour réduire la résistance due à la productivité: 1) Accepter la réduction de vitesse pour tous les développeurs. 2) Fournir des outils appropriés pour gérer la gestion et la fusion de plusieurs versions en raison des cycles de révision (par exemple, permettre aux développeurs d'avoir un référentiel git local) 3) Appliquer une certaine forme de pression sociale ou autre pour assurer la distribution de la charge et la qualité et l'actualité des critiques.

S'ils le font, il est légitime d'exiger que tout le monde participe, à mon humble avis. La société pour laquelle je travaille maintenant force cela à l'échelle mondiale - vous ne pouvez tout simplement pas soumettre sans l'approbation du propriétaire. Et bien que cela ralentisse les choses, cela évite de nombreux accidents.

Uri
la source
tout à fait d'accord Uri ... il n'y a que des gens que vous ne pouvez pas gagner. Peut-être qu'ils sont déterminés à leur manière, paresseux, pensent que leur voie est correcte, ou tout simplement ne s'en soucient pas !!
ozz
0

Nous avons utilisé des mesures techniques pour rendre la révision du code obligatoire.

La façon dont nous avons introduit la révision du code est que dans notre contrôle de code source, il est impossible de fusionner du code qui n'a pas été validé par quelqu'un d'autre que celui qui l'a poussé.

Pieter B
la source
-1

Tire-les

C'est aussi simple que cela - soit ils obtiennent un projet en solitaire, soit ils doivent y aller. Éloignez-les de votre équipe. Non seulement ils ne font pas leur part, ils érodent le moral et les pratiques de l'équipe.

Maintenant, s'il semble que vous devez licencier 50% de votre équipe, alors ...

Comprendre

Pourquoi certains refusent? N'ont-ils pas le temps? Sont-ils brûlés? Existe-t-il des avis sur quelque chose avec lequel ils n'ont aucune expérience? Pensent-ils que c'est une perte de temps, si oui pourquoi?

La méthodologie agile vous aidera ici - je suppose que vous travaillez constamment contre les silos (c.-à-d. Pour réduire le facteur bus), et les membres de votre équipe sont impliqués dans ce que font les autres.

Faites en sorte que les demandes de fusion individuelles soient assez petites. S'il s'agit de plus d'un écran de modifications, il a besoin d'un discours debout ou éclair pour expliquer ce qui est fait. Si c'est 10 pages, il a besoin d'une présentation avec des diapositives et des diagrammes d'architecture.

Est-ce que tout le monde en question travaille sur le même projet?

Le projet est-il déjà enfoui sous une montagne de dettes techniques?

Croient-ils au projet et à l'amélioration continue?

Dima Tisnek
la source
1
Hmmmm .... donc ne pas croire que les revues de code offrent plus d'avantages que de coût signifie automatiquement qu'une personne ne fait pas sa part et n'érode pas le moral de l'équipe, si bien qu'elle devrait être licenciée? C'est une position assez audacieuse basée sur aucune preuve à l'appui de la réclamation.
Dunk
@Dunk, êtes-vous un anti-critique? Alors tu ne seras pas dans mon équipe. Êtes-vous un réviseur professionnel? Alors vous connaissez déjà le soutien à ma réclamation. Êtes-vous indécis? Veuillez vous décider ;-)
Dima Tisnek
Je ne suis pas un anti-examinateur mais je reconnais également quand quelque chose n'offre pas un avantage raisonnable par rapport au coût. Certains projets / équipes ont absolument besoin de révisions de code officielles tandis que d'autres projets / équipes ne les font que lorsque cela est jugé bénéfique. Votre hypothèse selon laquelle des révisions de code sont toujours nécessaires me dit que vous ne connaissez même pas les avantages et les limites réels. Vous avez donc raison. Je ne serai pas dans ton équipe et ce serait une grosse perte pour toi.
Dunk