内部の代表者、投票、バッジは、優れたプログラミングの実践を促進するでしょうか?


17

声を出して考えてみてください-私たちのプログラマーは投票/バッジ/担当者が好きなので、このようなスキームを企業のコードレビュープロセスに導入して、より良いコーディングを奨励できます。

何かのようなもの

  • あなた(またはあなたに代わって他の人)は、コードレビューのためにレビュー(スニペット、シングルコミット、または一連)を投稿できます。

  • 他の人はそれについてコメントすることができます(SEの回答に似ています)

  • バッジを与える/提案することができます(一部は良いもの、一部は「Comment Desert」などのように悪いもの)

  • コード自体とコメントとバッジに賛成票または反対票を投じることができます(例:誰かがバッジを提案し、あなたが同意した/同意しなかった場合)

このようなスキームの目的は

  • コードレビューの使用を促進するために、ちょっとした楽しみを紹介します

  • 品質の向上(このスキームでは、コードのレビュー対象者とレビュー担当者の両方が学習する可能性が高い)

  • コードレビューが「自我戦争」を引き起こす可能性を減らす

  • 個々のパフォーマンスの測定に役立つメトリックを提供します

これは機能しますか?考え?


2
コードレビューのためのStackExchange - -素敵なオープンソース/個人的なプロジェクトのためのアイデアが、多くの企業のための公共の非スターターだけが、このサイト見つけcodereview.stackexchange.com
ライアン

5
しばらくは良いアイデアのように聞こえますが、私が違うやり方をする唯一のことは、罰バッジを取り除くことです。彼らはスティグマと謙虚さを持ち合わせており、遅れをとろうとしている人々を追い詰めようとすることを思いとどまらせるでしょう。
maple_shaft

1
その難しいもの。残酷な真実は、成功から得られるよりも、多くの場合、自分自身や他の人からの失敗から多くを学ぶことができるということです。そして、すべての花のヒッピーの話のために、公正な罰が働く。両親に尋ねてください;)
ライアン

9
唯一の問題は、Jon Skeetが常に100kの担当者でトップに座っていることです。Jon Skeetはあなたの会社では機能しませんか?関係ありません。彼はまだそこにいます。
トムアンダーソン

1
良い点-多分、「コメントを1行も付けずにクラスをチェックインした」という恥ずかしさのバッジは、すぐに期限切れになるか、何かポジティブなことをしたら取り消されるはずです。 「マーク」を取得し、それはそれ以上の問題ではありません
ライアン

回答:


20

食事、その他の報酬/罰ベースのシステムのように、短期的には、お金、バッジ、または担当者などの外部報酬が機能します。

代わりに、目的や自律性などの本質的な報酬を使用し、より長期的な結果を提供する必要があります。単純な外因性の報酬システムよりも実際に使用するのははるかに困難ですが、費用はかかります。

多くの専門家がこのテーマについて研究しました。ここに私の2つのお気に入りがあります。

ダニエルピンクは、TEDで見やすく理解しやすいテーマで素晴らしいプレゼンテーションを行いました。

Punished by Rewardsの著者であるAlfie Kohnは、このテーマについて次のように書いています。

確かに、賄briと脅威は一時的なコンプライアンスを生む可能性があります。ジムに行くと大人に、本を拾うと子供に報酬を提供します。しかし、彼らは自分自身を外因的に動機付けられていると考えるようになります。確かに、彼らは以前よりも運動や読書に興味がなくなるかもしれません。

報酬(および罰)の別の問題は、人々の行動を変えることです。たとえば、従業員にボーナスを与えると、他の(会社全体の)目標に関係なく、従業員はそれらのボーナスの獲得に集中します。それは、部門と従業員の間で個人主義と競争を生み出します。怒りが起こり、誰もがみんなを見ます。特に、目的の1つが「個々のパフォーマンスの測定を支援する」ことである場合。

従業員の残りの部分は、ゲームのルールに反して終了する場合があります。離職率の増加は新しい問題になります。

このコミュニティでは、動機付けを改善する方法に関する多くの提案がなされていることに注意してください。


2
ピエール、ダニエル・ピンクのあなたの言うことや発見のいくつかには同意しますが、彼が説明したように、それらがソリューションに適用されるとは本当に思いません。担当者、バッジなどが金銭的な報酬に結び付けられている場合は異なりますが、ここでは、本質的な意味を持つ行動を強化するためにのみ使用されます。いくつかの点で、全体として有益であると言わざるを得ないスタック交換のゲームの側面とまったく違いはありません。ただし、これは複雑な問題なので、慎重に実装する必要があります
-Homde

2
@mko:お金は一種の報酬です。バッジや評判は別です。それらはまったく同じ効果があると思います。

2
ピエール、私は反対しなければなりません。これらの報酬は純粋に理想的であるだけでなく、チーフテンではなく仲間からも与えられます。彼らの承認は、私たちが自分の習得と行動の目的を測定するための最も重要な基準点の1つです。投票、バッジ、レピュテーションスコアのシステムは、フィードバックを定量化し、ループを凝縮するだけです。つまり、これがSEが機能する理由です。
back2dos

1
ピエール、インセンティブとモチベーションについて深く掘り下げたDaniel Pinks Book "Drive"を読むことをお勧めします。金銭的な報酬は実際には有害であるが、本質的な報酬は
なかっ

1
はい、しかしバッジの場合、評価はそれよりも本質的な報酬に向けて行動を強調し、推進するのに役立つでしょう。すなわち、私は私の実際の評判についてあまり気にしないかもしれませんが、私良い開発者になりたいです。したがって、担当者は、私の絶対的なスキルを測定しない場合、相対的な進歩によって測定し、それと自分自身を改善するよう動機付けするのに良いかもしれません。測れないものは変えられない。もちろん難しいのは、実際に何らかの意味を持ち、正しい行動を促すように測定を設計することです。
-Homde

5

はい、できます

ただし、非常に慎重に設計した場合にのみ、それ以外の場合は裏目に出る可能性があります。コメントをしましたが、自分の立場を要約すると思いました

評判を高めるための主な目的は、従業員がスキルの向上を追跡するために使用できる測定値を提供することです。それを念頭に置いて非常に慎重に設計してください。難しいことはスキルを測定するための良い方法を考え出すことです。

バッジは主に「楽しい」ものです。私は、バッジを主に、スキル指向の問題から遠ざけます。つまり、「今週の夜更かし」のようなバッジや「配送済みのバッジ」というグループは大丈夫でしょう。「ほとんどのバグを修正」や「ほとんどのバグを報告」などのスキルベースのバッジを持っている場合、それがどのように認識されゲームされるかについて非常に慎重に考えてください。バッジは、IMOを宣伝するよりも、行動を強調することに重点を置く必要があります。チームと個人の両方のバッジを必ず持ってください。

ネガティブバッジには強くお勧めします。これらのことは楽しく、間違いを恐れるのは危険です。代わりに、これらのケースについてわかりやすく役立つメールを生成します。

バッジを決定して投票させないことを強くお勧めします。人々はバッジの提案を送ることができますが、人々への影響はかなり深刻な場合があるため、バッジの使用は、多数決ではなく、自分が何をしているかを知っている人の慎重な決定によって行う必要があります。

コードレビューは興味深いアイデアであり、スキル値を生成する方法の1つだと思います。コードを強調表示し、それについて議論することは本当に役立つでしょう。しかし、開発者が書いたすべての可能性について判断していることを誰もが知っている場合、逆効果になる可能性があります。特に、時々何かをすばやく書いてからリファクタリングする反復開発では、その動作は望ましくありません。

おそらく、自分でコードを送信した人、または特定の年齢のコードのみを送信できる他の人によって相殺される可能性があります。それにもかかわらず、どんな効果があるのか​​を知るのは難しいかもしれません

私は終わり、私はあなたがそれを試してみて、どのような作品、何しません、ありますと呼ばれる良い本を参照する必要があります考えてリアリティが壊れていることが面白いかもしれませんが。また、ダニエルピンクの本「ドライブ」は必読です。


2

私の意見では、それはグッドプラクティス自体ではなく、症状(他の人それをグッドプラクティスと考えている場合)を測定するため、NOです。

ボブおじさんの本を言い換えると(タイトルを忘れました):良いコードはほとんど楽なように見えますが、それはあたかもその言語がそれを書くために作られたかのように、問題を些細なように見せます。

私の経験では、そのようなコードは気付かれず、長い間注意を向けた後、このコードは問題を起こさなかったこと、そしておそらく、問題はコードの導入前に非常に混乱したことを思い出しますとあいまいさ。レビューで賞賛されるコードは、通常、レビュアーが気分が良くないときに良い選択をするものであり、変更はほとんどありません。


1
えーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー。コードメトリックは、それだけでは十分な画像を提供しません。
ライアン

1
どんな種類のコードレビュー方法にも当てはまりませんか?
ニキエ

問題は、あなたがそれを測定しようとすることではなく、あなたの測定と、実際にはチームのモチベーションとの間にフィードバックループを設定することです。私の経験では、これはすぐにコードを改善するのではなく、「テストに勝つ」ようにチームを動機付けることにつながります。
ケプラ

1
「Beat the tests」は、手動のコードレビューよりもメトリックにはるかに適用可能です。あなたの第一の議論を極端なものにするために、あなたは何かが「良い」と決定する方法はないと言っています。まあそれは本当ですが、あるレベルでは、十分な人が何かが良いと思うなら、それはおそらく良いことを受け入れなければなりません。
ライアン

1
2番目の引数thoに対して+1-すばらしいコードは注目されない可能性があります。
ライアン

1

このアイデアは、チームに新しいダイナミクスをもたらすでしょう。チームが不満を感じているなら、これは物事を揺さぶる良い方法です。

ユニコーンと虹だけではないことを覚えておいてください。イニシアチブを好まない人もいるため、全体的な生産性/品質が低下する可能性があります。しかし、このリスクはそれだけの価値があるかもしれません。あなたの状況に依存します。


1

外部の動機付け(提案しているのは外部の動機付けの一種です)を使用して、次のような「機械的」で反復的で退屈なことをするように人々を動機付けることをお勧めします。

  • 会議に時間通りに現れる
  • 時間通りに提出されたタイムシートの取得
  • ドキュメントの更新
  • チームと情報を共有する

創造性を必要とするタイプの仕事、または品質を客観的に測定できないタイプの仕事の動機付けには使用しません。たとえば、ウィジェットを作成する人がいて、部品が良いか悪いかを機械的に検証でき、承認されたプロセスに従わない限り部品の製造を許可しないプロセスがある場合、やる気を起こさせるのは生産的ですプロセスは品質を犠牲にしてより多くのユニットを作成するためのショートカットを取ることを許可しないため、生産性に対する外因的な報酬を持つ労働者。

これらのセーフガードが適切に設定されていない場合、外部からの動機付けの試みは確実に裏目に出ます。プログラミングはまさにこのカテゴリーに該当します-ソフトウェアの品質を確実に測定することはできません。これは、ウィジェットを作成すると工場から出荷され、次のウィジェットで行う作業に影響を与えないためですが、ソフトウェアを作成するときには何度も何度もやり直さなければなりません。あなたが今やっていることは、長期的な効果があります。これらの長期的な影響が非常に重要ですが、測定することはできません。本質的な動機付けは、この種のことのはるかに有用な動機付けです。

つまり:

  • 人々に自分の仕事に責任を持たせる
  • 何がうまくいくのか、何がうまくいかないのかについて、お互いに話をするように勧める
  • 人々の仕事に真の感謝を示す

ある種の内部SOは、これら3つすべてを実行しませんか?なぜ人々はSOに多くの時間を費やすのでしょうか?そして、「投票」についてのポイントは、私が完全に同意するので、このような分野で公正、正確、そして価値があると私は思う -私たちは品質を測定するための良い非客観的な方法がないことです。
ライアン

0

この仕事をするものの一部は、お互いを知らないか、毎日お互いに仕事をしなければならない多数の参加者です。少人数のグループでは、見栄えを良くしたり、プロモーションの競争を悪く見せたりするために、システムをゲームするより多くの方法になると思います。これが、正式なピア評価がしばしば貧弱なシステムである理由です。小さなグループでは、最高の担当者を持つ人は、最高のプログラマーではなく、最も政治的に鋭い人です。


0

短い答えは、はい、それは動作する可能性があります。

少し長めの答えは、はい、うまくいくかもしれませんが、裏目に出る可能性もあります。

プロのプログラマーであることに加えて、私はアマチュア行動分析家でもあります。

現代の行動科学の特徴的な発見の1つは、行動がその結果に強く影響されるということです。

結果を制御する場合、ある程度行動に影響を与えることができます。程度は、行動を変えようとしている各個人にとって特定の結果がどれほど重要であるか、そして彼らがあなたの結果を回避し、彼らが働きたいと思う他の人を見つけることがどれくらい簡単かによって異なります。

プロのプログラマーとして、コードを書くことの結果の1つは、報酬を受け取ることです。私にお金を払うのをやめれば、やがて私は現れなくなります。給与は私にとって非常に重要な結果です(私は家族を育てています)。また、現在の会社では、給与を受け取る代わりに働きたいと思う他の結果はありません。

あなたが私の上司であれば、私に提供する結果(インセンティブ、強化子)を決めることができます。しかし、私がそれらをどのように知覚するかを決めることはできません。たとえば、「今月のコーダー」として選択された場合、上司が特別な駐車スペースを提供することを決定する場合があります。もし私がサンフランシスコやニューヨークに住んでいて、車を運転したなら、そのために喜んで働くかもしれません。しかし、私が現在住んでいる場所では、駐車は問題ではなく、とにかく仕事に行くことができます。

私の経験では、職場でSOのようなプログラムを実装することであなたが実行する最大のリスクは、人々に価値のあるものを支払う代わりに、ピア投票を提供するように感じられるかもしれないということです。


「現代の行動科学の特徴的な発見の1つは、行動はその結果に強く影響されるということです。」それは発見ですか?本当に??それは私たち全員が人生の非常に早い段階で学ぶことではないでしょうか?熱いものを触らないでください。結果は痛いです!気をつけて、私はまだ時々飲みすぎます
ライアン

@ライアン:あなたは思うだろう。しかし、「痛いから熱いものに触らない」ということは科学にはなりません。行動の変化を測定可能、再現可能、複製可能、予測可能にする方法を示すことこそが、行動科学を科学にする理由です。
マイクシェリル 'キャットリコール'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.