web-dev-qa-db-ja.com

目標が機能しない場合でも、開発者に目標を設定する必要がある

一般的に受け入れられている その 測定可能な目標を設定する ソフトウェア開発者向け 機能しない 組織目標(いわゆる「 測定機能障害 」)。

しかし、私の会社では、すべてのスタッフに目標を設定する必要があり、人事部によってそれらを作成するよう奨励されています [〜#〜] smart [〜#〜] 。過去に、仲間の第一レベルのマネージャー(チームリーダー)と私はいくつかのアプローチを試みました。

  1. 「テクノロジーXでトレーニングを行う」、「誰も理解できないコードYのドキュメントを作成する」など、通常のジョブに追加される測定可能な目標を設定します。年間のパフォーマンス評価に関しては、開発者を書面の目標ではなく、通常の仕事の測定不可能な価値についての私の意見に基づいて評価してください。
  2. 「タスク管理システムによって記録されたとおりに行われる日々の作業」、「導入されたバグの数」、「発行された生産の数」などの非常に具体的な目標を設定します。これにより、より良い「スコア」を達成するために、見積もりが膨らみ、バグの分類が不正確になりました。興味深いことに、チーム内の本質的な信頼が損なわれ、彼らが常に高い地位に値すると感じていなかったため、このシステムを高く評価している開発者でさえもそれを好まなかった。
  3. 「通常の仕事をうまくやる」の変種であるあいまいな目標を設定します。年次評価に関しては、その評価は目標に対するパフォーマンスを反映しますが、目標自体は測定可能または達成可能ではなく、眉をひそめています。

これらはどれも理想的ではありません。ソフトウェア開発者の有効性に反する証拠があるにもかかわらず、ソフトウェア開発者にとって意味のある測定可能な目標を作成しなければならないという同様の状況にあった場合、どのアプローチがあなたに最も効果的でしたか?


私が見つけた関連する質問は、同じ点にはまったく対応していません。


Update(2009年11月18日):私の質問には10の賛成票があり、最高評価の回答には4つの賛成票しかありません(私からのそれぞれ1つを含む) 。これは何かを教えてくれると思います:おそらくジョエルと他の人が正しいこと、そしてスタックオーバーフローの結合された知恵がanyに悪影響を与えることなくゲームをすることができなかった開発者にとって説得力のある、測定可能な目標を思い付かないこと彼らの仕事の真の(測定不可能な)価値。試してくれてありがとう!

83
Paul Stephenson

あなたにとって最適なアプローチは何ですか?

唯一の目的:バグを見つけたり、他の批判を受けたりせずに、コードのインスペクション/ピアレビューに合格し、レビューアーとして私に何かをやり直すように頼む

ノート:

  • 私は、新入社員の迅速なフィニッシュ能力を測定していませんでしたし、次のことを奨励していませんでした。
  • コードレビューで私が探していたものを人々が学んだので、それは学習の機会ですおよび品質管理の尺度であり、単なる経営目標ではありません
  • 私のコメントには2つのカテゴリがあります。
    1. これはバグです:チェックインする前にこれを修正する必要があります
    2. 提案として、私はそのようなことをしたでしょう
  • しばらくすると、人のコードをレビューすると、「修正が必要」なアイテムが見つかりなくなります(この時点で、作業をレビューする必要はなくなります)。
21
ChrisW

個人的には、2種類の目標を設定しようとしています。

  • ビジネスに焦点を合わせた目標(これが結局私たちが報酬を得ている理由です)。たとえば、「2009年6月1日までにプロジェクトXを完了」)。これらの目標は多くの場合、チームの複数のメンバー間で共有されます(そして、彼らはこれを認識しています)。チームは、プロジェクトを早期に導入するか、必要な機能を超えることにより、目標を上回ることができます。より多くの機能を作成したり、バグを減らしたり、チームの他のメンバーを指導したりサポートしたりすることで、個人は目標を超えることができます。

  • 個人の成長目標。たとえば、開発者がスキルセットに追加したい技術を含むプロジェクトを完了したり、ユーザーのドメインをよりよく理解したり、リーダーシップを獲得したりするなど。

私はそれが重要だと感じています:

  • 目的はスマートです
  • 目的はビジネスのニーズに合わせられます
  • 目的に「通常の作業」を含めます。実際、これらは最も重要な目的です。
  • 従業員には、設定した目標を超える機会があります

最後に、ソフトウェアメトリックスを目標として使用しません。ゲームメトリックスは簡単すぎて、おそらく必要なものが提供されません。特定の行動に出入りする誰かを指導したい場合にのみメトリックを使用します。

14
Bids

これはすべて、「第1レベルの管理」という事実に要約されます。ほとんどの管理者は従業員を知りません。実際の日々の計画と開発の一部である代わりに、SMART=のようなものが現れます。マネージャーが実際の仕事をする人とより多くの時間を過ごすなら、これはどれもありません。必要です。

個人的には、アジャイルな環境で作業することを好みます明らか開発者の誰が生産性と品質意識の面でパフォーマンスするか。真のアジャイルアプローチでは、開発者だけでなく、設計者、テスター、顧客、製品マネージャーがプロセスに含まれている必要があります。これは当然、マネージャーの観点からのより良い洞察につながります。

9
Martin Wickman

これまで見てきた測定可能な目標:

  • 認定試験に合格する
  • テクノロジーXを研究し、それに関するプレゼンテーションを行う
  • コミットされたビルドの重大な変更の数
  • 内部ナレッジマネジメントで書かれたwiki記事の数

開発者が個人的な開発のためのアイデアを持っているかどうかを開発者に直接尋ねてみてください。

8

「コードの少なくともn%が適切な単体テストでテストされていることを確認する」カバレッジツールを使用してそれを証明し、他の人にテストの品質をレビューしてもらいます。

7
Ed Guiness

開発者が機能しなくても目標を設定する必要がある

開発者が機能しない場合、いくつかの目的はおそらくjust彼らが何らかのインセンティブを与えるために必要なものですか? ;-)

7
Andrzej Doyle

SMART(実際に同じ場所で作業している可能性があります))という非常に具体的な目標を前もって持つことは、実際には良いアイデアのように思えますが、ほとんどのチームにとってはあまり実用的ではありません。

問題は本当に私たちの漸進的な目標の変化です。ビジネスは変化し、開発者として、適切な時間枠内で適切に対応する必要があります。

組織内のチームまたはグループの目的に関連する目標を設定することを検討してください。あなたのチームは、それが目的、つまりマクロの目的を果たさなければ、資金を提供されません。チーム全体に存在し、ビジネスに合った集合的な目標を持っています。人々に責任を与え、人々に説明責任を持たせます。彼らの成功と失敗を祝いましょう(もし私たちが失敗しないなら、私たちは試みようとはしないでしょう。それはあなたが人々に望んでいることです)。 HTH

4
Eric Sabine

次のような、プログラマーが作業するときに収集される多くのメトリックがあります。

  • 変更/追加されたSLOCの数
  • プロセスのさまざまな段階(ピアレビュー中、ピアレビュー後、リリース後)で挿入されたエラー/バグの数
  • 変更要求が満たされた/拒否された
  • 正式なドキュメント(ソフトウェアバージョンの説明、設計ドキュメントなど)

これらはすべて、管理およびソフトウェアの品質保証のためのプレゼンテーションに役立つ有形のものです。しかし、私はそれらが人々のパフォーマンスの実際の評価においてひどく有用であることを発見したことはありません-あなたがリストしたいくつかのリンクによってなされたポイントです。ジョエルのポイント ここ が有効であることがわかりました。メトリックがチームの良い雰囲気を促進することはありません。

残念ながら、私たちは皆、他の人(管理、品質保証、外部の請負業者など)によってメトリックが必要とされる世界に住んでいます。バランスをとる行為が必要であることがわかりました-それらの測定基準を提供するだけでなく、無形の証拠を提供する-無形のものは、必ずしも追跡されない各プログラマーが達成したものです。たとえば、他の人が触れたくないレガシーコードを調査するのに多くの時間を費やしたプログラマーがいました。その期間、彼の指標は低かったにもかかわらず、その努力は非常に貴重でした。

そのようなものを含めることがわかった唯一の方法は、追加の無形カテゴリの作成をプッシュし、他のメトリックと同等の重みを付けることでした。通常、これで特定のプログラマーのバランスを調整できます。

3
Matt Jordan

問題の1つは、部門/部門としてのIT組織には測定可能な戦略目標がないことです。そうすれば、個人の目標を設定しやすくなります。

例えば発生する問題チケットの数を減らすための部門のイニシアチブがあった場合、あなたは彼らが世話をするソフトウェアに関連するチケットの数に基づいて個人の目標を設定することができます。

ソフトウェア開発は共同作業であるため、チームレベルで目標を設定し、チームへの貢献度に応じて個人を評価する方が理にかなっています。

2
James Anderson

私が思うに、個人的な開発と実行中のプロジェクトをどのように連携させるかを決定することが重要なポイントです。開発者が自分自身を分析して弱点を見つけ、他の人にフィードバックを提供することは、改善される可能性のあるものを見つけ、それを測定する方法を見つけるための方法です。たとえば、完成したアイテムをドキュメント化することはめったにないので、その年の目標について、これを改善したいと述べ、作成するドキュメントの量がその尺度になります。私が本当にそれに従う方法に応じて、それはうまくいくかもしれませんし、逆効果になるかもしれません。一方で、これが私の仕事をどのように改善し、適切な方法として見られるかもしれないのかについての有効な懸念があるかもしれませんが、受動的で攻撃的または幼稚な見方は、それがあまり良くない場合、大量の文書を作成することです品質に関する用語は来年改善される可能性があります。これは考慮すべきもう1つのポイントです。1年で可能な限り改善するためのモチベーションは、間隔を空けた場合と比べてどうでしょうか。

効果的な開発者を定義することも、これの別の要素です。バグを最もよく修正するのは人ですか?新しいものは最も速く動作しますか?新しい作業は、迅速に行われなくても、テストとドキュメントで完了しますか?何を呼んでいるのですか有効「依存する」標準応答がここで明確にされるべきだからです。

1
JB King

私が好きな目標は次のとおりです。

プロジェクトクライアントからプロジェクトへの関与についてNの肯定的なレビューを求めます。

これは、顧客(内部または外部)からの書面による肯定的なフィードバックをいつでも得ることができるので便利です。取得するのは難しくなく、関連性があり、簡単ですが、リストの無意味な目盛りではありません。

1
Nat