経験は関係ありません

ソフトウェア開発業界が長年にわたって存在しており、仕事の経験とコードの品質と従業員の生産性との間に強い関係はないことをご存知ですか?



1968年、プログラマーの生産性に関する調査が行われ( source )、最高のプログラマーと最悪のプログラマーの比率が次のとおりであることが示されました。





さまざまなバリエーションのこれらの図は、すでにすべてを見ています。 しかし、研究が平均7年のわずかな逸脱のある開発経験を持つプログラマーに対して行われたという事実は、誰にもわかりません。





しかし、それはずっと前であり、研究では多くの間違いがありました...



同様の研究が、他の科学者グループによって30年間繰り返されています。



研究リスト
  • カーティス、ビル。 1981 「プログラマーのばらつきを実証する」IEEE 69の議事録、No。 7:846。
  • ミルズ、ハーランD. 1983 ソフトウェア生産性。 マサチューセッツ州ボストン:リトル、ブラウン。
  • デマルコ、トム、およびティモシーリスター。 1985 「プログラマのパフォーマンスと職場の影響。」ソフトウェア工学に関する第8回国際会議の議事録。 ワシントンDC:IEEE Computer Society Press、268-72。
  • カーティス、ビル、他 1986 「ソフトウェア心理学:学際的プログラムの必要性。」IEEE 74の議事録、No。 8:1092-1106。
  • カード、David N. 1987 「ソフトウェア技術評価プログラム」。情報およびソフトウェア技術29、no。 6(7月/ 8月):291-300。
  • Boehm、Barry W.、およびPhilip N. Papaccio。 1988 「ソフトウェアコストの理解と管理」。ソフトウェアエンジニアリングに関するIEEEトランザクションSE-14、no。 10(10月):1462-77。
  • Valett、J。、およびFE McGarry。 1989 「ソフトウェア工学研究所でのソフトウェア測定経験の要約。」システムおよびソフトウェアのジャーナル9、no。 2(2月):137-48。
  • Boehm、Barry、et al、 2000 。 Cocomo IIによるソフトウェアコストの見積もり、マサチューセッツ州ボストン:Addison Wesley、2000年。




また、最悪の場合と最高の場合の違いを示しました(もちろん25倍未満)。 また、生産性と仕事の経験との関係も示されませんでした。



これはどういう意味ですか?



1968年以来、文字通りすべての開発が改善されています。言語、フレームワーク、ツール、プログラミングは、大学で数年間教えられています。 それにもかかわらず、プログラマの生産性は両方とも30年前に異なっていましたが、今日も異なっています。



これは、経験とは関係なく、優れたプログラマーと悪いプログラマーを区別するx因子があることを示唆しています。 現在、この要因が何であるかについてコンセンサスはありません。 作業を計画し、コードを記述する前にコードの構造を「見る」ことができると言う人もいます。 他の人は、最も生産的なプログラマーは、目に見える結果を迅速に生成できるプログラマーであると言います。 私の個人的な観察は、コードを読むことができる人がコードを最もよく書くことを示しています。



そして今何をすべきか?



問題の倫理的側面を破棄する場合、経験に関係なく、生産性の低いプログラマーをすべて解任する必要があります。 真剣に、上記の事実を考えると、比較的安価であるが生産性の高いプログラマーの小さなチームを入力できます。 そして、それは経験豊富な専門家のスタッフを維持するよりもはるかに有益です。



もう1つの結論は、論理に少し反しますが、実際にはよく見られます。長年の経験を積んだ後、プログラマーの生産性は上がりません。 プログラマーコードの生産性と品質を向上させる唯一の方法は、集中トレーニングとトレーニングを実施することです。



最後になりましたが、重要なこととして、プログラマーを雇用する方法論を強く修正する必要があります。 履歴書やロジックのタスクでキーワードごとにキーワードを削除する代わりに、候補者は生産性と品質を追跡できるように、できれば「実験室」条件でコードを記述する必要があります。



おわりに



生産性は効率とまったく同じではないことを理解する必要があります。 技術の複雑さが急速に成長している現代の世界では、技術を習得する時間よりも問題が多く、あらゆる問題に複数の解決策があり、ほとんどのコードがすでに書かれており、プログラマの生産性が前面に出ているのではなく、既製の解決策を見つけて組み合わせる能力がありますカスタムソリューションを考え出す能力。 しかし、プロジェクトが大規模になるほど、コードの生産性と品質が重要になり、チームの選択とトレーニングが重要になります。



All Articles