web-dev-qa-db-fra.com

Obtenir des codeurs à faire un avis de code

Je gère un projet où je paie les développeurs pour contribuer à mon projet semi-open source. Mon problème est qu'il est facile de recruter des développeurs, mais il est très difficile d'obtenir quiconque de faire la révision du code. J'ai essayé à plusieurs reprises d'obtenir les développeurs seniors pour examiner le code des développeurs juniors. J'ai essayé de les payer plus, de leur donner un statut plus élevé, etc. Mais ils semblent vouloir vouloir coder au lieu d'examiner le code.

Maintenant, j'envisage de forcer tous les développeurs qui souhaitent coder, pour également examiner le code, mais j'ai un sentiment que c'est une mauvaise idée.

Ma question est donc de savoir comment motiver les personnes capables à examiner le code des autres? Comment cela est-ce fait dans des projets open source réussis tels que Linux, PostgreSQL, LibreOffice, etc.

29
David

L'examen du code est une solution à un problème. Avez-vous un problème et votre "revue de codes" va-t-il résoudre? Les autres personnes vérifient-elles en mauvais code? Je suppose qu'ils sont dans une certaine mesure, mais peut-être que vos autres codeurs ne pensent pas que c'est si grave que cela vaut la peine de faire un examen. Demandez à vos devs seniors de proposer une solution pour limiter la quantité de mauvais code vérifié dans le système. Ils peuvent proposer des solutions plus efficaces.

Résolvez le problème d'avoir un mauvais code (l'examen du code est l'une des pièces au puzzle). Une façon de motiver les développeurs est d'arrêter l'ajout de nouvelles fonctionnalités jusqu'à ce que les bugs/le code incorrect soient fixés. La plupart des Devs aiment construire de nouvelles choses. Rendre les aînés à corriger les bugs et le refacteur de refacteur du code Bad. Peut-être qu'ils apprendront qu'il est plus facile d'attraper cela dans l'examen du code.

Encore une fois, identifiez un problème et donnez à vos personnes âgées une chance de créer une solution.

Vous ne pouvez pas continuer à payer des personnes qui ne font pas ce que vous leur dites, alors assurez-vous que ces choses sont très importantes. Il aide si tout le monde accepte qu'il y a un problème et contribue à la solution. Finalement, vous devez les rendre responsables. Ils ne font pas de critique de codes, ils prennent une position moindre ou sont tirés.

À l'avenir, embaucher des personnes prêtes à faire un examen de codes ou au moins leur faire savoir que cela fait partie du travail afin de pouvoir faire un choix éclairé.

Edit Si vous rencontrez des problèmes avec votre JR. Code de Dev, vos aînés peuvent sentir que la qualité est si faible, ce serait plus rapide de la réécrire que de passer par un processus de révision et de correction. Il serait important de souligner les avantages à long terme de prendre le temps maintenant de revoir, afin de donner des commentaires aux développeurs juniors pour les rendre meilleurs à l'avenir.

29
JeffO

il est facile de recruter des développeurs

C'est le problème. Les développeurs que vous embauchez simplement ne sont pas motivés ou n'ont pas d'expérience pour garder le codeBase de haute qualité. Vous devriez vous concentrer sur l'embauche de développeurs qui prennent sur eux-mêmes de garder le code de qualité élevée. Et trouver des développeurs comme celui-ci est extrêmement difficile. Les deux parce qu'il n'y en a pas beaucoup et que de l'entretien que le développeur se soucie du code est délicat.

23
Euphoric

J'avais l'habitude de travailler dans une entreprise qui a embauché de bons développeurs motivés et les a gardés. Mais nous avons toujours pensé qu'il y avait de la valeur dans l'examen du code: cela aide à diffuser les connaissances et simplement parce qu'une personne ressent que ce qu'ils ont écrit, c'est un bon code ne signifie pas qu'il n'y a pas de place à des améliorations.

Et nous avons fait face à un problème similaire. Les codeurs préférés au code. Ne rien dire de vouloir éviter de craindre la dynamique de puissance complexe d'avoir un pair effectuer une tâche délibérément critique de votre travail, aussi bien intentionné.

La réponse que nous avons trouvée était la suivante: bière.

Ce n'est pas une blague. Une fois toutes les 2-3 semaines, la société paierait pour obtenir une bonne bière et nous passerions les 1-2 dernières heures de la semaine de travail effectuant un examen du code. La bière gratuite était un bon facteur de motivation et la convivialité engendrée par une alcoolémie légère a éliminé une grande partie de la piqûre du processus.

Cela a si bien fonctionné que ce qui avait été une chose négative que tous les programmeurs souhaitaient éviter de devenir un point fort mensuel: nous avons tous des boissons libres, une atmosphère agréable et une ambiance agréable et pour améliorer notre code tout en même temps.

15
Bob Tway

Obtenir des codeurs à faire un avis de code

Ceci est un problème culturel et vous êtes actuellement en état d'équilibre car ils sont utilisés pour ne pas avoir à donner ou à recevoir des critiques de leur travail. Pour changer la culture de la top-baisse, Vous devez diriger, diriger et appliquer, si nécessaire, pour le maintenir comme habitude culturelle.

Je vous suggère de commencer par la planification de la revue, demandez à vos meilleurs codeurs de vous promener à travers leur code, avec l'autre offre d'information. Si vous pensez qu'il y a trop de spéculation ou d'interaction improductive, récupérez-le sur la bonne voie. Si de petites questions sont identifiées qui peuvent être fixées sur place, faites-la faire sur place. Prenez des notes et posez des questions qui démontrent que vous faites de votre mieux à suivre. Gardez une trace des problèmes qui sont emphastiquement connus pour avoir besoin d'adresses, c'est-à-dire une dette technique et avons-leur de consacrer du temps à traiter spécifiquement les problèmes de la dette technique.

Vous pouvez commencer par une vue d'ensemble architecturale entière, puis sur une base hebdomadaire ou même quotidienne, commencez à creuser à chaque module qu'ils ont écrit. Je recommande de commencer avec vos meilleurs codeurs, puis de vous rendre à vos développeurs plus junior afin qu'ils ne se sentent pas comme menacés d'avoir vu les autres accepter la critique, même s'ils pourraient avoir un peu plus de critique.

Le seul moyen d'obtenir une modification à ce stade est de prendre la propriété du problème et de diriger le changement.

7
Aaron Hall

Dans n'importe quel plan, il est susceptible d'être une différence entre ce que vous souhaitez être une haute priorité et ce qui est une priorité élevée. Puisque vous payez, vous devez manifester à peu près ce qui est hautement prioritaire, et vous avez à peu près à dire aux personnes que vous payez pour travailler sur des trucs prioritaires élevés.

Donc, s'ils évitent l'examen du code, alors:

  • Vous ne faites pas de critique de code une priorité plus élevée que d'écrire plus de nouveau code. Vous pensez peut-être que vous êtes, quand vous dites réellement "Pouvons-nous le faire à la fin de demain?" et les laisser répondre "Bien sûr, si nous déposons tout le reste". "Tout le reste" signifie qu'ils ignorent la revue de code sur ce point et tout ce qu'ils ont fait récemment à la révision des besoins.
  • Ils ne font pas ce que vous leur avez demandé et les avons payés à faire. Puisque vous êtes prêt à payer un supplément pour la revue de code et qu'ils Toujours préfère écrire un nouveau code sans revue pour moins d'argent, vous devez le savoir D'eux pourquoi l'examen du code est si désagréable.

Quoi qu'il en soit, pour obtenir les développeurs impliqués, vous pouvez examiner le concept de Scrum de la "définition de la définition". Vous pourriez avoir ceci même si vous ne faites pas Scrum et incluez l'examen du code dans la définition de votre équipe. C'est-à-dire qu'ils ne peuvent pas dire que X est terminé jusqu'à ce que X ait été examiné, ce qui signifie qu'ils doivent trouver quelqu'un pour examiner leur code (et le code des juniors qu'ils sont responsables de). Espérons que cela leur conduira à la négociation des critiques les uns avec les autres.

Une autre façon de le présenter est que, en examinant le code, ils se familiarisent avec des parties du système pourraient avoir besoin de travailler à l'avenir. Si vous encouragez la responsabilité partagée de la base de code entière, par opposition à la propriété des composants, vous forcez plus d'yeux sur chaque morceau de code. Certes que ce n'est pas la même chose qu'une phase de révision formelle, mais c'est un mouvement dans la bonne direction puisqu'il réalise le même objectif d'éviter d'utiliser le code qu'une seule personne pense est correcte.

Bien sûr, si elles réellement détestent la révision, alors ils pourraient choisir de faire une révision totalement superficielle, en passant tout plus ou moins sans le lire. Dans ce cas, vous devrez percer plus profondément dans le problème et les convaincre de faire du bon travail. Pour démontrer que cet examen est bénéfique, vous pouvez indiquer des problèmes qui se produisent en raison d'une personne qui a choisi une revue qu'ils étaient censées faire. Les professionnels espérons que réagir assez fortement une fois que leurs erreurs sont perçues pour causer de véritables problèmes, mais souvent moins fortement s'ils ne cotèrent pas ce qu'ils perçoivent comme une tâche inutile. Si vous ne trouvez pas de problèmes qui peuvent être au moins partiellement attribués au manque de contrôle, considérez-vous à nouveau comment vous avez décidé que votre examen est vraiment bénéfique pour ce projet.

Une autre possibilité que je ne peux pas exclure de ce que vous dites dans la question, est que les codeurs que vous n'avez tout simplement pas très bon, ou du moins ne sont pas très bons pour produire un projet de travail sans support technique supplémentaire. Vous ne dites rien sur le test, la fixation de bugs ou l'assurance qualité en général. Si tout ce qu'ils veulent faire, c'est d'écrire du code et je ne veux pas le faire fonctionner de manière fiable, alors ne faisant naturellement pas la révision du code serait une partie de cela. Je suppose que vos codeurs sont peut-être universellement géniaux que leur code fonctionne toujours pour la première fois et n'a pas besoin de test, de correction de bugs ou d'examen. Cela semble improbable!

6
Steve Jessop

Je suppose que vous avez déjà décidé que faire des critiques de codes est une tâche nécessaire si vous êtes prêt à payer davantage les développeurs seniors.

La plupart des développeurs (dans mon expérience de développeur JR) préféreraient développer quelque chose de nouveau, plutôt que de regarder le code qu'ils, ou de quelqu'un d'autre, ont déjà fait. Cela étant dit, il y a des points supplémentaires qui doivent se produire ou cela rendra la tâche particulièrement indésirable.

Normes de codage. Il devrait y avoir une sorte de normes sur la manière dont le code est généralement affiché afin que tout le monde ne le fait pas différemment, partout. Meilleures normes de codage, si elles sont suivies, signifieront des critiques plus rapides et moins douloureuses. Il donne également aux examinateurs de code une raison de dire à un développeur pourquoi il doit être refait sans dire: "Je n'aime pas comment tu l'as fait", que personne n'aime entendre o dire.

Les critiques de code doivent avoir un impact. Après un examen de code, les résultats doivent être agités plutôt bientôt. Il ne sert à rien de faire l'examen si rien ne change de toute façon. De même, le développeur qui a créé le code -Besoins Pour savoir pourquoi leur code a dû changer, sinon il peut simplement continuer à faire la même chose à l'avenir et que l'examinateur de code sera fatigué de fixer à plusieurs reprises la même chose .

gardez-le juste. Comme toute tâche indésirable, la même personne ne voudra pas faire revoir le code tout le temps. Si quelqu'un reste bloqué le faire la plupart du temps, tout le monde essaiera de le pousser sur cette personne, soit activement, soit simplement en ne faisant pas de bénévolat. Vous devrez configurer "Turns" ou si vous n'avez que quelques personnes que vous avez confiance pour faire l'examen, faites-le tout au long du code. Cela établira quelles sont vos normes de codage et obtiendrez les nouveaux développeurs à l'aise dans la pratique des critiques de code.

En conclusion, la revue de code semble souvent une douleur à toutes les personnes impliquées. Ce ne devrait pas être une tâche assignée à une seule personne/à deux personnes. Seulement en partageant la douleur, agissant sur le résultat et que les nouveaux développeurs apprennent de leurs erreurs que tout le monde peut venir de l'avant.

3
DoubleDouble

J'avais l'habitude de travailler lors d'une publication, plutôt que d'une société de logiciels, mais le principe est le même.

Dans la société d'édition, la route de la gestion (et des emplois payants plus élevés) émettait/examinant le travail d'autres professionnels, plus junior,. Quelques personnes étaient contentées de rester des écrivains âgés, sans édition/révision des responsabilités, mais "la plupart" (plus de la moitié) des personnes compétentes souhaitaient ces emplois d'examen/d'édition. Ne pas avoir l'un de ces emplois était une stigmatisation, car il s'agissait de "limitation de carrière", de sorte que la plupart des "juniors" ont essayé de progresser pour éditer dès que possible.

1
Tom Au

Je travaille pour un grand détaillant de box. Où les vieilles habitudes meurent fort. Comme, vraiment dur. J'ai donc pensé que je peux partager mes expériences.

Le problème que nous avons eu est une visibilité. Aucun code n'a été vraiment visible l'un à l'autre. Ils utilisaient des CV et nous avons remporté la victoire de la conversion de tout pour utiliser Git. Cela a commencé à transformer la marée. Nous avons mis en œuvre Gitlab (semblable à GitHub, fondamentalement toutes les mêmes fonctionnalités hébergées sur vos serveurs). Nous avons protégé la branche principale (code prêt à la production). Cela a créé un effet de boule de neige. Si un développeur avait quelque chose qui devait être fusionné dans la production ou une succursale de l'environnement de test, il aurait besoin de 2 développeurs seniors pour examiner le code, faire des commentaires, suggestions d'amélioration, poser des questions, etc. et éventuellement donner un coup de pouce sur la fusion demander. De là, il serait fusionné dans l'environnement.

Entrez pour simplement réécrire le code que vous n'aimez pas ne va pas vous aider OR vos développeurs. C'est la définition de la folie.

Voici un résumé des moyens de créer du code de qualité.

  1. Tests unitaires - Décomposez les exigences en questions de logique de taille de petite bouchée et en écriture des tests autour de ce que le morceau de l'application est censé faire, s'attend à ce que ce soit.
  2. Documentation d'écriture - Faites semblant que vous êtes une nouvelle location et vous êtes demandé comment faire X. Si votre code n'a pas de documentation, tout le développeur entrant dans le code est comme "whoah ..." et prend habituellement un bon moment de ramasser le temps de comprendre ce qui se passe sous le capot. Je ne crois tout simplement pas à la mentalité "de bons documents de code lui-même".
  3. Développeurs autonomes - Ne prenez pas le clavier. Demandez à des questions susceptibles de provoquer des questions visant à définir des décisions fondées sur la pensée.
  4. Écrire plus de documentation - Je ne peux pas souligner suffisamment de bonne documentation. Il est littéralement inestimable pour une organisation, car les gens changent d'emploi, laissent ou sont tirés de tirs et parfois toutes les informations sur un module vont avec eux.
  5. Utilisation de la version de version (git + gitlab) - C'est une aide tellement énorme. Si vous êtes capable de mettre en œuvre quelque chose comme ça, je vous suggère fortement de le faire. Cela obtiendra beaucoup plus d'yeux sur le codeBase, fusionnera les demandes, la productivité, etc. de votre équipe. C'est incroyable.
  6. Guide de style de codage - Créez un guide de style que vous souhaitez voir suivi lorsque d'autres codent. À la fin de la journée, tout votre code devrait ressembler à une seule personne. Pas 100.
  7. Faites-la amuser - Quoi? Hein? Codage amusant? Si vous pouvez en faire plus d'une partie (pensez aux réalisations de la Xbox), les gens ont tendance à essayer un peu plus fort et il se sent beaucoup moins comme le travail. Nous utilisons un serveur de construction Jenkins qui compile certains de nos indicateurs secondaires client. Au cours de ce processus, nous avons utilisé CSS Lint et JS Lint pour trouver des problèmes et des mauvaises habitudes dans notre basebase et de les documenter. Si vous étiez celui qui a fait des erreurs dans le code, vous avez été dingue. Si vous avez nettoyé le code et des problèmes réduits, vous avez des points. Nous avons immédiatement remarqué que les développeurs récurrent la base de CodeBase à la recherche de problèmes qui les gagneraient. ( le plugin de jeu d'intégration continue )

J'espère que cela ajoute de la valeur à votre situation et cet article vous aide d'une certaine manière. Tant de grandes réponses ici.

0
xCNPx

Répondez d'abord à la question pourquoi vous voulez que les développeurs fassent des critiques de codes. Y a-t-il trop de bugs, sont des conventions de codage non suivies, sont des connaissances non partagées, sont cochées avec des tests insuffisants, etc.

Ensuite, discutez-en avec les développeurs. Dites-leur ce que vous attendez et demandez-leur comment ils amélioreraient à ce sujet. Ils devraient tous accepter de mettre en œuvre ces changements ou il sera difficile de les appliquer.

Si tout le monde accepte la révision du code est utile, ce qu'ils sont normalement, une nouvelle règle pourrait être que d'ici uniquement sur le code examiné uniquement dans le produit.

Pour pouvoir faire un examen, il devrait être clair ce qui est attendu. Donc, définissez quelles règles s'appliquent au code, comme:

  • conventions de codage (nommage, style de code)
  • solutions par défaut
  • construit pour éviter

Utilisez de bons outils, alors faites-la facile de trouver du code à examiner, de voir les modifications et de parler de ces changements.

L'examen du code doit faire partie du flux de travail normal pour mettre en œuvre un changement. Cela pourrait être organisé de cette manière:

  • un développeur devrait trouver quelqu'un d'autre à faire un examen des modifications à inclure.
  • ou, pour chaque changement engagé, vous devez effectuer un examen.
0
Kwebble