玄録

玄録は、秀玄舎の事例を通した、
実践研究の成果をご報告する不定更新の
ビジネスレポートです。

プログラミング生産性の個人差

生産性の構成要素

2004.11.19

  • Facebook
  • mixi
  • hatena

 ソフトウェア開発のコスト明細を見ると、しばしば「人月」という言葉が使用されます。言葉のとおり、1人のプログラマーが1ヶ月で製造(コーディング)できるプログラム量の単位を示しています。

 ひとくちに”1人月”という表現をし、その工数をもとにソフトウェア開発費用が算出されますが、実は個人の生産性は大きく異なります。

 この「個人によって生産性が異なる」という事実に関する認識は、ユーザー企業にとってはシステム費用の正当性に関わり、システムベンダーにとっては自社の利益に大きく関わります。重要な個人差があるにも関わらず、そうした表現でシステム開発の規模や費用が決定されるのは、個人差を指標化することが極めて困難だからです。

 しかし、個人差に対する認識は、ユーザーにとってはより優れたベンダーを選定するために、システムベンダーにとっては技術者の教育や評価のために、非常に重要です。本シリーズではシステム構築におけるミクロな課題である、プログラミング生産性の個人差要因について報告します。レポートの最後ではシステムベンダー向けに、技術者のプログラミングスキルを高めるための実践的な訓練方法を、ユーザー企業向けに生産性の高いシステムベンダーを見極めるポイントについてご報告しています。

“3つの構成要素”

 ソフトウェアを開発する場合、プログラマーに必要となる知識(要素)は、「プログラム言語の習得」、「プラットフォームの理解」、「プログラミングの構成力」の3つになります。この3つは、例えて言うならば、日本語の文章を執筆するには日本語を覚える必要があり、その文章を載せる媒体(本や新聞、WEB)の特徴に合わせた記述方法があり、人に読んでもらうために文章(の構成)力が必要になることに似ています。プログラミング生産性の個人差は、このプログラマーに必要となる3つの要素に対して能力差があるからです。

 「プログラム言語の習得」度の差とは、どれくらいプログラム言語に精通しているかであり、初めてのプログラム言語を扱う人よりも既に何度もその言語で開発している人の方が高い効率で開発できるのはあたりまえです。中には、初めての言語でも苦にせず開発できる人もいますが、これは独学等により、そのプログラム言語で開発するには十分なレベルまで理解していたからだと考えてよいでしょう。また、関数などの具体的な利用経験は、確実に2回目以降の生産性を高めます。

 「プラットフォーム理解」度の差とは、アプリケーションを動かすプラットフォームをどれくらい理解しているかです。作成したアプリケーションを実行するには、何かしらのプラットフォーム(OS等)が必要となり、この時アプリケーションはプラットフォームが提供している機能を利用したり、プラットフォームの特性に依存したりします。つまり、特定のプラットフォーム上でアプリケーションを構築する場合、プラットフォームが提供する機能や特性(やれる事/出来ない事)を把握しているのとしていないのとでは、開発効率が違ってきます。生産性がこの要因に依存する度合いは、オープン化が進む中で、さらに顕著なものになりつつあります。

 例えば、理解出来てない場合は、実際に開発がはじまった後でプラットフォームの機能の仕組みを調べたり、実現できない事がそこで分かって作業のやり直しが発生する等の余計な作業が発生します。

《次回、第25回では、3つめの要素である「構成力」についてご報告します》