Un représentant interne, le vote et les badges pourraient-ils encourager de bonnes pratiques de programmation?


17

Penser à voix haute - nous, les programmeurs, adorons tous ces trucs de vote / badges / représentants, donc un schéma comme celui-ci pourrait être introduit dans un processus de révision du code des entreprises pour encourager un meilleur codage.

Quelque chose comme

  • Vous (ou d'autres personnes en votre nom) pouvez publier un avis (il peut s'agir d'un extrait, d'une validation unique ou d'une série de) pour un examen du code

  • D'autres peuvent le commenter (serait similaire aux réponses en SE)

  • Des badges peuvent être donnés / suggérés (certains seraient bons, certains seraient mauvais comme "Comment Desert" ou d'autres)

  • Vous pouvez voter pour / contre le code lui-même et les commentaires et badges (par exemple, si quelqu'un a suggéré un badge et que vous êtes / n'êtes pas d'accord)

Le but d'un tel programme serait

  • Introduisez un peu de plaisir pour encourager l'utilisation des revues de code

  • Améliorer la qualité (dans ce schéma, les personnes qui ont révisé le code et les examinateurs sont susceptibles d'apprendre)

  • Réduisez les risques de révision de code déclenchant des «guerres de l'ego»

  • Donnez quelques mesures pour aider à mesurer les performances individuelles

Cela pourrait-il fonctionner? Pensées?


2
Je viens de trouver ce site - StackExchange pour les revues de code - bonne idée pour les projets open source / personnels mais son public pour de nombreuses entreprises est un non-starter codereview.stackexchange.com
Ryan

5
Il semble que ce serait une bonne idée pendant un certain temps, mais la seule chose que je ferais différemment serait de se débarrasser des badges punitifs. Ils portent une stigmatisation et une humilité avec eux qui décourageront ceux qui sont en retard d'essayer de rattraper leur retard.
maple_shaft

1
C'est dur ça. Je pense que la vérité brutale est que nous pouvons souvent apprendre plus des erreurs (les nôtres et les autres) que les succès. Et pour tous les discours hippies fleuris, des punitions justes fonctionnent. Demandez à vos parents;)
Ryan

9
Le seul problème est que Jon Skeet sera toujours assis au sommet avec 100 000 représentants. Jon Skeet ne travaille pas pour votre entreprise? Peu importe. Il sera toujours là.
Tom Anderson

1
Bon point - peut-être que l'insigne de honte «J'ai vérifié une classe sans une seule ligne de commentaire» devrait expirer dans un certain temps ou être révoqué une fois que vous avez fait quelque chose de positif - sinon, il n'y a aucune incitation à s'améliorer comme vous l'avez déjà fait a obtenu «la marque» et cela n'a plus d'importance
Ryan

Réponses:


20

Les récompenses extrinsèques telles que l'argent, les badges ou les représentants fonctionneront à court terme , comme les régimes et tout autre système basé sur les récompenses / sanctions.

La récompense intrinsèque , comme le but et l'autonomie, devrait être utilisée à la place et fournir des résultats à plus long terme. Il est beaucoup plus difficile de le mettre en pratique que de simples systèmes de récompense extrinsèques, mais cela paie.

De nombreux experts ont fait des recherches sur le sujet. Voici mes deux favoris:

Daniel Pink a fait un excellente présentation à TED sur le sujet qui est facile à regarder et à comprendre.

Alfie Kohn , auteur de Punished by Rewards , a écrit à ce sujet:

Bien sûr, les pots-de-vin et les menaces peuvent produire une conformité temporaire. Offrez une récompense aux adultes pour aller au gymnase ou aux enfants pour ramasser un livre, et cela peut fonctionner - pendant un certain temps. Mais ils en viennent à se considérer comme des motivations extrinsèques, donc lorsque la récompense n'est plus disponible, il n'y a aucune raison de continuer. En effet, ils peuvent être moins intéressés par l'exercice ou la lecture qu'auparavant.

Un autre problème avec les récompenses (et les punitions) est qu'il modifiera le comportement des gens. Par exemple, si vous accordez des bonus à vos employés, ils se concentreront sur l'obtention de ces bonus, quels que soient les autres objectifs (à l'échelle de l'entreprise). Cela créera l'individualisme et la concurrence entre les départements et les employés. Le ressentiment aura lieu et tout le monde regardera tout le monde. Surtout lorsque l'un de vos objectifs est de "contribuer à mesurer les performances individuelles".

Le reste de l'employé peut réfuter les règles du jeu et quitter. L'augmentation du chiffre d'affaires deviendra alors un nouveau problème.

Veuillez noter que de nombreuses suggestions sur la façon d'améliorer la motivation ont été faites dans cette communauté .


2
Pierre, même si je suis d'accord avec certaines des choses que vous dites et les conclusions de Daniel Pink, je ne pense pas qu'elles s'appliquent à la solution telle qu'il les a décrites. Ce serait différent si le représentant, les badges, etc. étaient liés à une récompense monétaire, mais ici, ils ne sont utilisés que pour améliorer un comportement qui a une signification intrinsèque. À certains égards, ce n'est pas du tout différent des aspects de jeu de stackexchange qui, on doit le dire, ont été globalement bénéfiques. C'est un problème complexe, donc il doit être mis en œuvre avec soin
Homde

2
@mko: L'argent est un type de récompense. Les badges ou la réputation en sont un autre. Je pense qu'ils ont exactement le même effet.

2
Pierre, je dois être en désaccord. Non seulement ces récompenses sont purement idéalistes, mais elles vous sont également accordées non pas par votre chef, mais par vos pairs. Leur reconnaissance est l'un des points de référence les plus importants pour nous de mesurer notre maîtrise et la pertinence de nos actions. Un système de votes, de badges et de score de réputation ne quantifie que le feedback et condense la boucle. Je veux dire, c'est pourquoi SE fonctionne.
back2dos

1
Pierre, je vous recommande vraiment de lire le livre "Drive" de Daniel Pinks qui aborde en profondeur les motivations et motivations. Il y a beaucoup d'exemples où une récompense monétaire était réellement préjudiciable alors qu'une récompense intrinsèque n'était pas '
Homde

1
oui, mais s'il s'agit d'un badge, la notation est une bonne mesure que celle qui servira à mettre en évidence et à conduire le comportement vers des récompenses intrinsèques. -À- dire que je ne pourrais pas beaucoup de soins de ma réputation réelle mais je ne veux être un bon développeur. Par conséquent, le représentant peut être un bon, sinon mesurer mes compétences absolues, mesurer par progrès relatif et me motiver à l'améliorer et à moi-même. Les choses que nous ne pouvons pas mesurer ne peuvent pas changer. La partie difficile est bien sûr de concevoir la mesure pour avoir réellement un sens et encourager le bon comportement.
Homde

5

Oui, ça pourrait

Mais seulement si vous le concevez très soigneusement, sinon cela pourrait se retourner contre vous. J'ai fait quelques commentaires mais j'ai pensé résumer ma position

Pour la réputation, l'objectif principal devrait être de fournir une mesure que les employés peuvent utiliser pour suivre leur amélioration des compétences au fil du temps. Concevez-le très soigneusement en gardant cela à l'esprit, le plus difficile est de trouver de bons moyens de mesurer les compétences, je ne peux pas du haut de ma tête le faire.

Les badges sont principalement une chose "amusante", je les garderais principalement à l'écart des problèmes plus axés sur les compétences. C'est-à-dire des badges comme "cette semaine, le hibou" ou un groupe "expédié! Badge" serait ok. Si vous avez des badges basés sur les compétences comme "Correction de la plupart des bogues" ou "Rapport de la plupart des bogues", réfléchissez très attentivement à la façon dont cela pourrait être perçu et joué. Les badges devraient davantage mettre l'accent sur la mise en évidence du comportement que sur sa promotion à l'OMI. Assurez-vous d'avoir des badges d'équipe et individuels.

Je recommanderais fortement contre les badges négatifs, ces choses devraient être amusantes et faire peur aux gens de faire des erreurs est dangereux. Générez plutôt un e-mail convivial et convivial pour ces cas.

Je déconseille fortement de les laisser décider et voter sur les badges. Les gens peuvent envoyer leurs suggestions de badges, mais comme leur effet sur les gens peut être assez grave, les badges utilisés doivent être déterminés par une décision prudente d'une personne qui sait ce qu'ils font et non par un vote majoritaire.

Les révisions de code sont une idée intéressante et je suppose que l'une des façons de générer une valeur de compétence. Mettre en évidence le code et en discuter pourrait être très utile. Cependant, cela pourrait se retourner, si tout le monde sait qu'ils sont jugés sur tout ce qu'ils écrivent, le développement peut ralentir. Surtout avec le développement itératif où vous écrivez parfois quelque chose rapidement et ensuite refactorisez vous ne voulez pas ce comportement.

Cela pourrait peut-être être compensé soit par la personne qui soumet le code elle-même, soit par quelqu'un d'autre qui ne peut soumettre que le code d'un certain âge. Néanmoins, il peut être difficile de savoir quels effets il y aura

À la fin, je pense que vous devrez l'essayer et voir ce qui fonctionne et ce qui ne fonctionne pas, il y a un bon livre intitulé Reality is broken qui pourrait être intéressant. Le livre "Drive" de Daniel Pinks est également à lire absolument.


2

À mon avis, NON , car il ne mesure pas la bonne pratique elle-même, mais un symptôme (si d'autres pensent c'est une bonne pratique).

Pour paraphraser un livre de l'oncle Bob (oublié le titre): Un bon code semble presque sans effort, il rend le problème trivial, comme si le langage avait été fait pour l'écrire.

Dans mon expérience, un tel code passe inaperçu, et ce n'est qu'après un long moment qu'il vient à l'attention, que ce code n'a jamais posé de problèmes, et peut-être alors on se souvient, que le problème était, avant l'introduction du code, un énorme gâchis d'incertitude et l'imprécision. Le code qui reçoit des éloges dans les critiques est généralement celui que les examinateurs considèrent un bon jour lorsqu'ils ne sont pas d'humeur à tâtonner, et qui a le moins de changements.


1
Euh - re: votre premier point - oui mais c'est le meilleur que nous avons n'est-ce pas? Les mesures de code ne donnent pas une image suffisamment bonne à elles seules.
Ryan

1
N'est-ce pas vrai pour tout type de méthode de révision de code?
nikie

Le problème n'est pas à mon humble avis que vous essayez de le mesurer, mais que vous définissez une boucle de rétroaction entre votre mesure et, en fait, la motivation des équipes. D'après mon expérience, cela conduit rapidement à motiver l'équipe à «battre les tests», pas à mieux coder.
keppla

1
"Beat the tests" est beaucoup plus applicable aux métriques que la révision manuelle de code. Pour pousser votre premier argument à l'extrême, vous dites qu'il n'y a aucun moyen de décider que quelque chose est «bon». C'est vrai, mais à un certain niveau, nous devons accepter que si suffisamment de gens pensent que quelque chose est bon, alors c'est probablement bon.
Ryan

1
+1 pour le deuxième argument - un excellent code peut ne pas être noté.
Ryan

1

L'idée apporterait une nouvelle dynamique à l'équipe. Si vous sentez que l'équipe est dans une ornière, c'est un bon moyen de faire bouger les choses.

N'oubliez pas que ce ne seront pas toutes les licornes et les arcs-en-ciel. Certains n'aimeront pas l'initiative, de sorte que la productivité / qualité globale pourrait en souffrir. Cependant, ce risque en vaut la peine. Cela dépend de votre situation.


1

Je suggère d'utiliser la motivation extrinsèque (ce que vous proposez est une forme de motivation extrinsèque) pour motiver les gens à faire des choses "mécaniques", répétitives et ennuyeuses, telles que:

  • Se présenter à l'heure aux réunions
  • Envoi des feuilles de temps à temps
  • Mise à jour de la documentation
  • Partager des informations avec l'équipe

Je ne l'utiliserais pas pour la motivation sur tout type de travail qui nécessite de la créativité, ou lorsque la qualité ne peut pas être mesurée objectivement. Par exemple, si vous avez une personne qui fabrique des widgets et vous pouvez valider mécaniquement si une pièce est bonne ou mauvaise, et vous avez un processus qui ne permettra de fabriquer une pièce que si elle suit le processus approuvé, alors il est productif de motiver le travailleur avec des récompenses extrinsèques pour la productivité parce que le processus ne lui permettra pas de prendre des raccourcis pour faire plus d'unités au détriment de la qualité.

Si vous n'avez pas ces garanties en place, votre tentative de motivation extrinsèque se retournera sûrement. La programmation tombe carrément dans cette catégorie - nous ne pouvons tout simplement pas mesurer de manière fiable la qualité des logiciels. En effet, lorsque vous créez un widget, il quitte l'usine et n'affecte pas le travail que vous faites sur le widget suivant, mais lorsque vous créez un logiciel, vous devez continuer à le retravailler encore et encore. Ce que vous faites maintenant a des effets à long terme. Ce sont ces effets à plus long terme qui sont très importants mais qui ne peuvent pas être mesurés. La motivation intrinsèque est un facteur de motivation beaucoup plus utile pour ce genre de chose.

Cela signifie:

  • Laissez les gens prendre la responsabilité de leur travail
  • Encouragez les gens à se parler de ce qui fonctionne bien et de ce qui ne fonctionne pas
  • Montrer une véritable appréciation pour le travail des gens

Une sorte de SO interne ne ferait-elle pas ces trois choses, je veux dire pourquoi les gens consacrent-ils autant de temps au SO? Et le point au sujet du «vote» est que je pense qu'il est beaucoup plus probable qu'il soit juste, précis et utile dans un domaine comme celui-ci parce que je suis totalement d'accord - nous n'avons pas de bonne manière non objective de mesurer la qualité.
Ryan

0

Une partie de ce qui fait que cela fonctionne est le grand nombre de participants qui ne se connaissent pas ou doivent travailler ensemble quotidiennement. Je pense que dans un petit groupe, cela deviendrait plus une façon de jouer le système pour bien paraître ou pour faire mal paraître vos concurrents pour la promotion. C'est pourquoi les évaluations formelles par les pairs sont souvent un système médiocre. Dans un petit groupe, les personnes ayant le meilleur représentant seront celles qui sont les plus astucieuses politiquement et non les meilleurs programmeurs.


0

La réponse courte est oui, cela pourrait fonctionner.

La réponse un peu plus longue est oui, cela pourrait fonctionner, mais cela pourrait également se retourner.

En plus d'être programmeur professionnel, je suis également analyste comportemental amateur.

L'une des principales conclusions de la science du comportement moderne est que le comportement est fortement influencé par ses conséquences.

Si vous contrôlez les conséquences, vous pouvez influencer le comportement dans une certaine mesure. Le degré dépend de l'importance des conséquences spécifiques pour chaque individu dont vous essayez de changer le comportement et de la facilité avec laquelle il peut éviter vos conséquences et trouver d'autres pour lesquelles il est disposé à travailler.

En tant que programmeur professionnel, l'une des conséquences de l'écriture de code est que je suis payé; arrête de me payer, et j'arrêterais de me présenter avant longtemps. Le salaire est une conséquence très importante pour moi (j'élève une famille), et il n'y a pas d'autres conséquences dans mon entreprise actuelle pour lesquelles je serais prêt à travailler au lieu d'être payé.

Si vous étiez mon patron, vous auriez à décider quelles conséquences (incitations, renforcements) m'offrir. Mais vous ne pouvez pas décider comment je les perçois. Par exemple, mon patron pourrait décider d'offrir une place de parking spéciale si je suis sélectionné comme "Codeur du mois". Si je vivais à San Francisco ou à New York et que je conduisais une voiture, je serais peut-être disposé à travailler pour cela. Mais là où j'habite maintenant, le stationnement n'est pas un problème et je peux quand même me rendre au travail à pied.

D'après mon expérience, le plus grand risque que vous courez avec la mise en œuvre d'un programme comme SO sur le lieu de travail est que vous pourriez être perçu comme offrant des votes par les pairs au lieu de payer aux gens ce qu'ils valent.


"L'une des conclusions de la science du comportement moderne est que le comportement est fortement influencé par ses conséquences." C'est une conclusion? Vraiment?? N'est-ce pas quelque chose que nous apprenons tous très tôt dans notre vie? Ne touchez pas aux choses chaudes car la conséquence est que ça fait mal! Remarquez que je bois encore trop parfois ...
Ryan

@Ryan: On pourrait penser. Mais "ne touchez pas aux choses chaudes parce que ça fait mal" ne fait pas une science. Montrer comment rendre les changements de comportement mesurables, reproductibles, reproductibles et prévisibles - c'est ce qui fait de la science du comportement une science.
Mike Sherrill 'Cat Recall'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.