Create a new world

きっと誰もが新しい世界を作り続けているんだよ。

エンジニアの生産性を実測してみた。

よくエンジニアの生産性は10倍とか100倍とか開きがあると言われます。
僕自身、「そうだろうなぁ」と薄々は感づいていました。ですが実際に比較してみたら本当に10倍以上の生産性が出るんだなぁと実感したことがありました。今回はその比較について書いておこうと思います。

比較対象としたのは、自分が現在携わっているプロジェクトと、保守をしているプロジェクトの2つです。

定量的に測ってみる。

ソースコードの行数で測ってみました。ステップ数とかいろいろ言われますが、実際に測れるものはこれくらいだったので。
現在携わっているプロジェクトの手書きステップ数は約30000行。
それに対して、保守をしているプロジェクトの手書きステップ数は約10000行。

開発期間は、現在携わっているプロジェクトが約12ヶ月。
保守をしているプロジェクトは15ヶ月〜18ヶ月。
開発期間に関しては、要件定義フェーズから始まり、仕様変更や不具合が落ち着いてくるまでの期間としています。

この時点で生産性は3倍強〜4倍強。

定性的な要素も加味していく。

保守をしているプロジェクトでは、SQL文もソースコード内に直書き。実測内に含めていないストアドプロシージャが、おおよそ2000行程度でしょうか。
現在携わっているプロジェクトでは、SQL文はTableAdapter内に記述しているので、実測の対象範囲外となっていました。
SQL文の総行数は多分1万行を超えます。TableAdapterでは扱い切れないSQL文を扱うためにビューを作っていたりしたので、それも含めるとあと2000行くらい増えそうです。

画面数は、保守しているプロジェクトが20画面弱。
現在携わっているプロジェクトでは3サブシステムで100を超えるはず。

テーブル数も、保守しているプロジェクトでは20程度。
現在携わっているプロジェクトでは3サブシステムの合計が100を超えます。

案件自体の難易度も違います。
保守しているプロジェクトは、受注と出荷のデータを登録するだけというもの。
現在携わっているプロジェクトでは、勤怠管理・人事評価・給与計算のためのデータ集計の3サブシステムを開発。
法律や細かい運用ルールなど考慮すべき点の多さが違います。

開発人員は共に1人ずつ。ただし、保守しているプロジェクトは、1回交代があった後カットオーバーを経て自分が不具合解消・保守をやるようになりました。

生産性の違い

いったいどれだけの生産性の違いがあるのでしょうか。現在保守しているプロジェクトでは、どのようにして開発が進んでいったかはわかりません。ですが、定性的な要素も加味すると、10倍は超えてくるのではないでしょうか。
いや、決して自分が優れたプログラマというわけではありません。むしろ、普通にプログラムを書けるエンジニアと、コピペエンジニア(CSSとかひどかった。)の間での生産性がこれだけあるわけです。

普通にプログラムを書ける程度のエンジニアと、ハッカークラスのプログラマの間では、ここからさらに数倍、数十倍の生産性があるのでしょう。
それを考えると、ハッカークラスのプログラマとコピペプログラマの間の生産性が100倍以上になることも、納得がいくというものです。