より安価な人材仮説

2008年2月8日

ソフトウェアの世界で一般的に受け入れられている信念の1つは、才能のあるプログラマーはより生産性が高いということです。生産性を測定できないため(生産性を測定できない)、これは証明できない信念ですが、合理的であると思われます。結局のところ、ほとんどすべての人間の努力において、ある人は他の人よりも優れており、しばしば著しく優れていることが示されています。また、プログラマー自身もよく観察しており、常に自分自身をより才能のあるカテゴリーにいると考えている人によって指摘されているようです。

当然のことながら、より優れたプログラマーは、正社員として雇用する場合でも、契約社員として雇用する場合でも、より多くの費用がかかります。しかし、興味深い質問は、これにもかかわらず、より高価なプログラマーは実際にはより安価なのでしょうか?

一見すると、これは愚かな質問のように思えます。より高価なリソースが、どのようにしてより安価になることができるのでしょうか?そのコツは、よくあることですが、コストと価値をより広い視野で考えることです。

技術に精通した人々は一般的に、才能のあるプログラマーは平均よりも生産性が高いことに同意していますが、測定が不可能であるということは、実際の数値を提示できないことを意味します。そこで、議論のために1つ作ってしまいましょう:2。平均的なプログラマーの給与の2倍未満で、2倍の才能を持つプログラマーを見つけることができれば、そのプログラマーは最終的に安価になります。より一般的に言えば、生産性の高い開発者のコストプレミアムが、その開発者の高い生産性よりも低い場合、より高価な開発者を雇う方が安価になります。より安価な人材仮説とは、コストプレミアムが実際にはより低いため、生産性の高い開発者を雇う方が、たとえ彼らがより高価であっても安価であるというものです。

気づいていない人がいるといけないので、この仮説はThoughtworksにおける私たちの哲学の重要な部分であり、私が独立コンサルタントから転職した主な理由の1つです。私たちは、料金は高かったものの、実際にはクライアントにとってより安価になると信じています。もちろん、多くのクライアントにこれが真実であることを納得させるのは困難です。客観的な生産性指標の欠如が再び問題となっています。私はまだ、ある見込み客とのミーティングで、私たちの料金が、私たちが入札していたシステムを以前に試みて失敗した企業よりも高いと不満を述べていたことを覚えています。私たちは、価値を提供しないプロジェクトに低い料金を支払うことは、財政的に賢明な戦略ではないことを丁寧に指摘しなければなりませんでした。

より安価な人材仮説には、いくつかの注目すべき結果があります。最も注目すべきは、実際には正のスケーリング効果に従うということです。チームが大きければ大きいほど、より安価な人材のメリットは大きくなります。平均の2倍の生産性を持つ10人の才能ある開発者のチームを、実際に彼らが平均の2倍の生産性を持っていることを測定した代替宇宙でプロジェクトを実行するために編成したとしましょう。そのため、雇用にかかる費用は正確に2倍になります。この場合、平均的なプログラマーのライバルチームは20人のチームになると当然のように考えるかもしれません。

問題は、その仮定は生産性がチームサイズに比例して増加すると仮定していることです。これもまた、観察によると当てはまらないことが示されています。ソフトウェア開発は、チームメンバー間のコミュニケーションに大きく依存しています。ソフトウェアチームの最大の問題は、全員が他の全員の行動を理解していることを確認することです。その結果、生産性はチームサイズに比例して増加するよりもかなり少なくなります。いつものように明確な尺度はありませんが、平方根に近いと推測しがちです。私の証拠のない推測を基準として使用すると、生産性を2倍にするには、チームサイズを4倍にする必要があります。そのため、私たちの平均的な才能を持つチームは、才能ある10人に匹敵するには40人を必要とします。その時点で、コストは2倍になります。

ここで役割を果たすもう1つの要素は、市場投入までの時間です。4人のチーム、才能のあるチームと平均的なチームの2つがあるとしましょう。才能のあるチームに対する議論の根拠を積み重ねるために、前の段落を無視し、才能のあるチームは平均的なチームの2倍の生産性しかないと仮定します。才能のあるチームが2倍の料金を請求する場合、財政的にどちらのチームを選んでも問題ないと仮定できるでしょうか?

残念ながら、才能のあるチームが再び勝利します。彼らは平均的なチームの半分の時間でプロジェクトを完了します。これは、顧客が配信されたソフトウェアからより早く価値を生み出し始めることを意味します。この初期の価値は、お金の時間価値によって複利計算され、出力あたりのコストが同じであっても、才能のあるチームを選択することによる経済的利益を表しています。

アジャイル開発は、この効果をさらに加速させます。才能のあるチームは、平均的なチームよりもサイクルタイムが速くなります。これにより、チーム全体がオプションをより迅速に検討できます。構築、評価、最適化。これにより、より優れたソフトウェアの生産が加速され、より高い価値が生み出されます。これは、市場投入までの時間効果を複合します。(そして、才能のあるチームは、いずれにせよ、より優れたソフトウェアを生産する可能性が高いと考えるのは当然です。)

サイクルタイムの短縮は、より優れた外部製品につながりますが、おそらく才能のあるチームが貢献できる最大のものは、内部品質の高いソフトウェアを生産することです。才能のあるプログラマーと平均的なプログラマーの生産性の違いは、おそらく優れたコードベースと平均的なコードベースの生産性の違いよりも小さいと思います。才能のあるプログラマーは優れたコードベースを生成する傾向があるため、これは、内部品質によっても生産性の利点が時間の経過とともに複合することを意味します。

これらすべては、少なくとも私には、非常に説得力のある議論のように聞こえます。また、広く受け入れられている議論でもあります(少なくとも、自分自身を才能があると考えるプログラマーによって)。しかし、ソフトウェア業界全体で受け入れられるにはほど遠いものです。才能のある開発者のプレミアム(給与/契約料の観点から)が生産性の違いよりも少ないため、これはわかります。おそらくこの主な理由は、生産性を客観的に測定できないことです。採用担当者は、より高価なプログラマーが実際に生産性が高いという客観的な証拠を持つことができません。客観的なのは、より高いコストだけです。その結果、採用担当者は、より高い価値の主観的判断を、客観的なより高いコストと一致させなければなりません。多くの採用担当者は、才能のあるプログラマーが個人的に価値があると信じていても、管理職、人事、購買に sepenuhnyaより高いコストを正当化することはできません。

この効果は、主観的な評価を行うことの難しさによってさらに悪化します。Thoughtworksでは、ピアアセスメントに依存しています。開発者の能力は、仲間のチームメンバーによって評価されます。結果は正確な精度ではありませんが、誰にでもできる最善の方法です。

これはすべて、才能のあるプログラマーの採用と維持が大変な作業であることを示しています。採用と評価は大変な作業です。非常に個人的な欲求を持つ人々に対処する必要があります。彼らは事実上低賃金であるため、追跡することがさらに重要です。そのため、採用担当者は、より高い生産性に対する判断の呼びかけに対してのみ、特定の追加作業とより高いコストに直面します。

ですから、私は状況を理解していますが、それを受け入れることはできません。ソフトウェア業界がその可能性を最大限に発揮するには、より安価な人材仮説を認識し、高い生産性と高い報酬のギャップを埋める必要があると信じています。