Est-il approprié d'avoir des commentaires positifs dans les revues de code, ou est-ce exclusivement pour des critiques constructives?

36

J'ai effectué beaucoup de révision de code ces derniers temps et je ne suis pas sûr des effets positifs et négatifs et du professionnalisme de l'insertion de commentaires positifs et / ou amusants dans les critiques de code.

Nous utilisons Github comme plate-forme de révision de code dans mon équipe, les commentaires sont donc visibles par tous. J'essaie généralement d'utiliser cette plate-forme pour que tout le processus, du début à la fin, soit visible et historique.

Codeman
la source
Oui, je me rends bien compte que cela concerne en grande partie la culture, mais je cherche une réponse générale.
Codeman
22
Il est important de renforcer ce que vous voulez voir avec des commentaires positifs.
2
Je ne sais pas si cela convient, mais parfois, je poste des haïkus codés dans des revues: programmeur junior - votre code non commenté est - comme des éclats de douleur.
Yannis
Je suis en fait le programmeur débutant qui examine le code du senior. Nous avons un processus assez rigoureux, tout le code doit être relu :)
Codeman

Réponses:

53

Il est important de souligner les aspects positifs et négatifs. Je sais que si j'examinais le refactor d'un sous-système infernal en quelque chose de net et net, j'achèterais probablement une pizza au programmeur pour ses efforts.

Si vous utilisez des critiques en tant que formation, c'est d'autant plus important - mettre en évidence un bon morceau de code sera utile pour les programmeurs débutants qui révisent également ce code. Ils auront l'occasion de poser des questions sur les raisons pour lesquelles une approche ou technique particulière est meilleure qu'une autre.

Jonathan Rich
la source
Pouvez-vous ajouter une note sur "pourquoi est-ce important"? Je marquerai comme accepté quand vous le ferez :)
Codeman
3
Cela permet aux gens de savoir que ce qu'ils font (écrire du bon code) est apprécié et de garder le cap sur la croissance, ce qui est l’objet de la révision du code.
Jonathan Rich
1
Pouvez-vous ajouter ceci à votre réponse?
Codeman
2
+1 vous méritez la bonne réponse badge pour celui-ci. Le nombre de lieux qui ne valorisent pas assez les critiques constructives me surprend toujours. Dire aux gens qu'ils font du bon travail quand ils le font peut être un facteur de motivation étonnamment efficace.
Benjamin Gruenbaum
@Benjamin: trop d'organisations considèrent la révision de code comme un processus d'estampage en caoutchouc 'Trouver les défauts dans le code de chacun' et non comme un 'permet de construire une équipe hautement performante'. D'après mon expérience, les revues de code constituent le moyen le plus rapide et le plus efficace de supprimer les obstacles empêchant les équipes logicielles de fonctionner réellement. Nous avons une norme de notation où nous préfixons les commentaires avec -2 (doit être fixé) bien que +2 (excellent travail).
Mattnz
8

Drôle: conservez-le dans le refroidisseur d’eau, sauf à des doses minimales; il n’est pas nécessaire d’avoir un visage de pruneau pour pouvoir consulter le code.

Positif: Certainement. L'examen comprend à la fois les aspects positifs et négatifs / constructifs, par définition.

La rétroaction positive aide tout le monde:

Pour ceux qui reçoivent le bravo, vous renforcez leur confiance en eux et les incitez à faire de même avec vos commentaires positifs.

Pour le reste, comme d'autres l'ont mentionné, ils apprendront ce qu'il faut faire et ce qu'il ne faut pas faire . Ils seront également encouragés à exceller afin qu’ils puissent eux aussi être un jour sous les projecteurs.

J'ai déjà travaillé pour un chef libéral dans ses commentaires positifs: l'équipe a donc été très performante et productive. Il est parti et d'autres ont pris en charge ce qui ne lui permettait pas de louer un travail bien fait. La productivité et le moral ont chuté, et bon nombre des meilleurs membres de l'équipe ont quitté le cabinet.

Vecteur
la source
3

Je dirais qu'il faut garder les commentaires clairs et pertinents, précisément à cause de la culture.

Vous ne pouvez pas éviter que certaines personnes prennent les choses dans le mauvais sens.
Afin d'atténuer ce risque, une conversation personnelle en face à face facilitera les choses. S'il n'est pas possible de se rencontrer face à face, clavardez ou envoyez un courrier électronique ou par skype.

ton.yeung
la source
1
Bon point. Etre "drôle" dans les commentaires peut facilement se retourner contre nous, en particulier dans des environnements multilingues et multiculturels.
David Navarre
2

Commenter dans une révision de code, c'est gérer

Traiter les commentaires comme un outil de gestion

Insérer des commentaires dans une révision de code est une forme de gestion. En tant que tel, il devrait être abordé comme un outil de gestion.

Utilisez des pratiques de gestion lorsque vous commentez

Il existe une structure de gestion des personnes où l’objectif est d’atteindre le résultat souhaité. Certaines des principales approches de la gestion ne seront pas appliquées dans les commentaires, mais la plupart le seront. Les sujets applicables incluent l'environnement, le leadership, l'organisation et le contrôle.

Environnement

Culture

L'environnement dicte le style de gestion. La culture et l’environnement du lieu de travail doivent être pris en compte lors de l’utilisation des outils de gestion. Ceci est généralement affecté par l'industrie et la taille de la société ou de l'entité gérée.

Style

S'il existe une culture enjouée, cela peut se voir dans le style de gestion utilisé. S'il existe des directives, des politiques et des conséquences très strictes, le style utilisé doit en tenir compte. Donc, si tout le monde est à bord pour une blague de la guerre des étoiles faisant référence à des droïdes et à un esprit-tempête faible, alors une interjection comique peut s’appliquer. Cependant, si le fait de ne pas prendre le résultat final au sérieux a des conséquences désastreuses, il faudra peut-être l'éviter.

Direction

Fondamentaux

Il faut prendre en compte trois principaux piliers du leadership dans les commentaires. À savoir, ils sont la vision, la communication et le jugement.

Vision

Il est important de garder à l’esprit la grande vision lorsqu’on explique ou donne des instructions. Dans les commentaires, cela peut vouloir dire indiquer comment de petits changements affectent le projet dans son ensemble, quelles sont les implications d’approches différentes, ou un signe du chapeau à la séparation des préoccupations.

Communication

Être un bon communicateur est important dans de nombreux aspects de la vie. Ce n'est pas différent dans les commentaires. Il est important d’utiliser un niveau de concision judicieux - d’autant plus que les commentaires ne devraient pas prendre beaucoup de place. Arrivez au point tôt, puis soutenez-le avec un exemple si nécessaire. Dans une organisation plus grande, cela peut également inclure la nécessité d'envoyer un communiqué ou une note si le problème n'est pas localisé lors d'une session d'examen.

Judgement

Il est important que la stratégie soit utilisée pour déterminer si des commentaires doivent être formulés et quels changements doivent être apportés. Votre jugement n'a pas toujours besoin d'être correct, mais il doit toujours être correct, en particulier lorsque des décisions de jugement importantes sont prises.

Organiser

Du point de vue de la gestion, organiser consiste à garder à l’esprit l’objectif final et à s’assurer que les processus sont alignés de manière à respecter un ensemble de règles. Les commentaires doivent également garder à l'esprit que les commentaires doivent s'appuyer si possible l'un sur l'autre pour s'assurer que le flux de conception est suivi. Il sera également important de garder à l'esprit la portée du code en cours de révision afin de réduire le couplage et de suivre la conception générale.

Contrôle

Contrôler les actions de ceux qui sont gérés est un processus délicat. Tout en restant ferme, il ne faut pas oublier que les gens sont importants. Il existe plusieurs compétences de gestion à utiliser tout en contrôlant les autres. Ces compétences sont politiques, conceptuelles, interpersonnelles, diagnostiques et techniques.

Politique

La politique peut être trouvée chaque fois qu'il y a une interaction entre les gens. C'est un sujet énorme, mais d'une manière générale, la politique tourne autour de l'influence. Il est important de garder à l'esprit la politique personnelle et professionnelle au travail lors d'un commentaire. Cela pourrait être lié à une instruction, une blague ou même une question.

Conceptuel

La gestion par la conceptualisation est un outil important. Cela nécessite une analyse complexe de la situation. Lorsque vous commentez, il peut être utile d’inclure une partie de l’analyse utilisée pour aboutir à la conclusion ou au changement indiqué dans l’examen.

Interpersonnel

Les compétences interpersonnelles sont très importantes lors de la gestion. C'est aussi un sujet important. Parmi les choses importantes à considérer avec les compétences interpersonnelles sont le mentorat, la critique constructive et le "harponnage".

Mentoring

Il est important que la direction soit perçue davantage comme un mentor que comme un antagoniste. Dans une révision du code, cela signifie que parfois, il sera utile d’inclure un signe de tête dans un modèle de conception ou une approche qui pourrait être utilisé pour améliorer une situation.

Constructive Criticism

La critique est importante car elle appelle la réflexion. Cependant, les critiques doivent rester aussi positives que possible, le cas échéant. Cela signifie offrir des preuves valables à l'appui des critiques et veiller à ce que le ton utilisé ne soit pas négatif. Lors de l'examen du code, cela pourrait inclure la présentation d'une exception ou d'un scénario possible qui générerait une erreur tout en impliquant une solution au lieu d'afficher tous les emplacements incorrects lorsque le code complet devait de toute façon être remplacé.

"Harpooning"

"Harpooning", c'est quand vous, au sens figuré, harponnez quelqu'un au sol. Cela se fait en les décomposant pas à pas sans répit jusqu'au point où ils se sentent incapables de se lever. Si vous harponnez une personne dans une révision de code ou ailleurs, vous perdrez sa coopération. Il est important d'éviter de faire tomber quelqu'un en panne de manière excessive.


Résumé

Traitez les commentaires dans une révision de code comme un outil de gestion. N'oubliez pas que les commentaires doivent être brefs, pertinents et constructifs. Assurez-vous également que les commentaires de la personne examinée sont pris en compte.

Travis J
la source
La révision du code ne doit pas être gérée par la direction. Son autre nom est 'PEER review' pour une bonne raison. L’autre problème que j’ai avec la réponse est que c’est censé être le code à l’étude, pas la personne. Si la révision du code est traitée comme une révision de la personne, elle est devenue (ou le sera bientôt) un outil de gestion permettant de «battre les gens». Regardez-le devenir une entrée dans les indicateurs de performance clés (KPI), et regardez les jeux joués par les pairs - "Ce code pourrait être meilleur, je le laisserai glisser si vous promettez d'aller
tranquillement
@mattnz - Les pairs se gèrent fréquemment. En outre, toutes les organisations ne fonctionnent pas selon une hiérarchie strictement descendante, auquel cas les pairs sont un facteur clé de la gestion. Cependant, je conteste votre affirmation selon laquelle une révision du code ne concerne pas un individu. La correction de mauvaises habitudes de codage nécessite des conseils concrets, et la diffusion de ces conseils de manière gracieuse et respectueuse est essentielle pour la réussite de celui-ci.
Travis J
@mattnz - Notez également que je n'ai jamais laissé entendre que la révision du code soit une révision de la personne. Je remarque que vous avez appuyé la réponse acceptée ici, avec laquelle je suis également d’accord. Cependant, ce qui est étrange, c'est que la réponse est explicitement centrée sur l'individu, en lui achetant une pizza et en lui offrant personnellement des éloges. Cela ne me pose aucun problème, mais comment pouvez-vous dire que cela ne joue pas non plus en tant que "révision de la personne"? Pour être honnête, il semble que vous ne lisiez que la première et la dernière phrase de cette réponse.
Travis J
0

Les revues de code sont un outil permettant d'améliorer la qualité du code, notamment en découvrant les défauts. Plus important encore, vous voulez instiller de bonnes pratiques de codage.

Dans cette perspective, il est important de commenter les choses bien faites. Dans un contexte de formation, les améliorations doivent également être commentées. Si votre culture est celle de l'amélioration continue, vous devriez toujours commenter les améliorations.

Des erreurs, des bugs et un mauvais codage vont se produire. Indiquez-les d'une manière non personnelle et traitez-les comme prévu.

Du point de vue de la modification du comportement, la récompense est bien meilleure pour produire des changements que la punition. Je considérerais avoir un bon travail remarqué comme récompense.

BillThor
la source