web-dev-qa-db-ja.com

内部の担当者、投票、バッジは、優れたプログラミング手法を促進できますか?

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

何かのようなもの

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

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

  • バッジを与える/提案することができます(「コメントデザート」などのように、いくつかは良いでしょう、いくつかは悪いでしょう)

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

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

  • コードレビューの使用を奨励するためのちょっとした楽しみを紹介する

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

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

  • いくつかの指標を与えるヘルプ個々のパフォーマンスを測定する

これはうまくいくでしょうか?考え?

17
Ryan

外部報酬 お金、バッジ、担当者などが機能します、短期、ダイエットやその他の報酬/罰ベースのシステムのように。

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

多くの専門家がこのテーマについて調査しました。これが私の2つのお気に入りです。

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

Alfie Kohn 、作者 Punished by Rewards 、この件について次のように書いています。

もちろん、賄賂や脅威は一時的なコンプライアンスを生み出す可能性があります。ジムに行った大人や本を手に取った子供に報酬を提供してください。しばらくの間はうまくいくかもしれません。しかし、彼らは外因的に動機付けられていると自分自身を考えるようになるので、報酬が利用できなくなったとき、続行する理由はありません。実際、彼らは以前よりも運動や読書への関心が薄れるかもしれません。

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

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

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

20
user2567

はい、できます

ただし、慎重に設計した場合にのみ、逆効果になる可能性があります。私はいくつかのコメントをしましたが、私は自分の立場を要約すると思いました

評判の主な目的は、従業員が時間の経過とともにスキルの向上を追跡するために使用できる測定値を提供することです。それを念頭に置いて非常に注意深く設計してください。難しいのはスキルを測定するための良い方法を考え出すことです。頭のてっぺんからそれを行うことはできません。

バッジは主に「楽しい」ものです。私はバッジを主にスキル指向の問題から遠ざけます。つまり、「今週の夜のフクロウ」やグループ「Shipped!バッジ」のようなバッジは問題ありません。 「ほとんどのバグを修正」や「ほとんどのバグを報告」などのスキルベースのバッジをお持ちの場合は、それがどのように認識され、ゲーム化されるかを慎重に検討してください。バッジは、IMOを宣伝することよりも、行動を強調することに重点を置く必要があります。チームバッジと個人バッジの両方を必ず持ってください。

ネガティブバッジは絶対にお勧めしません。これらは楽しいものであり、間違いを恐れる人を作るのは危険です。代わりに、それらのケースに役立つメールを生成してください。

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

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

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

最後に、試してみて、何が機能し、何が機能しないかを確認する必要があると思います。 現実は壊れています という良い本があります。これは興味深いかもしれません。また、ダニエルピンクスの本「ドライブ」は必読です。

5
Homde

私の意見では、[〜#〜]いいえ[〜#〜]、それは良い習慣自体を測定するのではなく、症状(他の場合と考えるそれは良い習慣です)。

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

私の経験では、そのようなコードは気付かれず、長い間注目された後、このコードは決して問題を起こさなかった、そしておそらく問題はコードの導入前に、不確実性の巨大な混乱であったことを覚えているかもしれませんとあいまいさ。レビューで賞賛されるコードは、通常、レビュー担当者が気にしないときに良い日に見ているコードであり、変更が最も少ないコードです。

2
keppla

このアイデアは、チームに新しいダイナミクスをもたらします。チームが轍を踏んでいると感じたら、これは物事を揺るがす良い方法です。

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

1
Jeff

私は、外的動機(あなたが提案しているのは外的動機の一形態です)を使用して、次のような「機械的」で反復的で退屈なことをするように人々を動機付けることを提案します。

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

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

あなたがそれらの安全対策を講じていなければ、外因性の動機でのあなたの試みは確かに逆効果になります。プログラミングはこのカテゴリに直接分類されます。ソフトウェアの品質を確実に測定することはできません。これは、ウィジェットを作成すると、それが工場から出荷され、次のウィジェットで行う作業に影響を与えないためですが、ソフトウェアを作成するときは、何度も何度もやり直さなければなりません。あなたが今していることは長期的な影響を及ぼします。非常に重要ですが、測定できないのは、これらの長期的な影響です。本質的な動機付けは、この種のものにとってはるかに有用な動機付けです。

つまり、次のことを意味します。

  • 人々に自分の仕事に責任を持たせる
  • 何がうまく機能して何がうまくいかないかについて人々に話し合うように励まします
  • 人々の仕事に心からの感謝を示す
1
Scott Whitlock

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

0
HLGEM

簡単な答えは、はい、それはうまくいく可能性があるということです。

少し長い答えは、はい、それは機能する可能性がありますが、逆効果になる可能性もあります。

私はプロのプログラマーであるだけでなく、アマチュアの行動アナリストでもあります。

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

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

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

あなたが私の上司だった場合、あなたは私にどのような結果(インセンティブ、強化者)を提供するかを決めることができます。しかし、あなたは私がそれらをどのように認識するかを決めることができません。たとえば、私が「今月のコーダー」に選ばれた場合、上司が特別な駐車スペースを提供することを決定するかもしれません。私がサンフランシスコまたはニューヨーク市に住んでいて、車を運転した場合、私はそのために働くことをいとわないかもしれません。でも今住んでいるところは駐車場は問題なく、とにかく歩いて通勤できます。

私の経験では、職場でSOのようなプログラムを実装することで実行する最大のリスクは、人々に価値のあるものを支払う代わりに、仲間の投票を提供していると見なされる可能性があることです。