勘と経験と読経

略すとKKD。ソフトウェア開発やITプロジェクトマネジメントに関するあれこれ。

プログラマの質、チームの質

ロバート・L・グラスの「ソフトウエア開発 55の真実と10のウソ」では「優秀なプログラマは最悪に比べ28倍優れている」という記述がある。ただしこれはプログラマ個人に関する記述であって、ソフトウェア開発チームの質とはまた違った軸だという事に注意しないといけない。

プログラマ個人の質

ロバート・L・グラスの「ソフトウエア開発 55の真実と10のウソ」に書かれた真実の一つに「プログラマの質の差はケタ違い」というものがある。実際に様々な研究も多くあり、ケタ違いというのは感覚的なものではなく、事実である。グラスの本では28倍という数字が出ているが、実際には10倍程度になるらしい(Making Softwareの30章に詳しい話が書いてある)

ただし注意すべきなのはあくまでこれが「プログラマ個人」に関する話であるということである。

  • プログラマ個人の生産性の差は、あくまで学術的な研究によって導き出されている
  • 生産性の定義すら、明確なものがあるわけではない
  • プログラマ個人の生産性の和が、ソフトウェア開発チームの質となるわけではない

実際のプロジェクトでは、個人の生産性を表す、有用でありかつ統計的に正当な指標を見つけることは困難です。私の経験では、研究の場面以外について言えば、個人の生産性を測ろうとするのは大抵、その指標に基づいて何か統計的には正しくないことをしようとする時です。ですから、私は研究目的で個人の生産性を計測することには価値があると思いますが、実際のプロジェクトでそのような計測に工数を使う価値を見出すことは困難だと考えています。
Making Software ―エビデンスが変えるソフトウェア開発 30章 10倍が意味するものは? プログラマの生産性のばらつき測定(マコネル)

チームの質

過去のシステム開発は、既にあるプロセスをシステムに引き写していくような単純なものも多くあった(手作業業務の電子化、OA化など)。しかし近年、複雑にビジネスとITが絡み合ったソフトウェアを開発することが通常となっている。ひとりひとりが決められた作業をするのではなく、チームとしてコミュニケーションをとりながら開発するスタイルが重要となってきている。注目するのは個人ではなくてチームの質である。重視するのは個人の生産性ではない。

Team Geekに書かれたこの文章に尽きると思う。

プログラマとして成功するには、最新の言語を覚えたり高速なコードを書いたりするだけではいけない。プログラマは常にチームで仕事をする。君が思っている以上に、チームは個人の生産性や幸福に直接影響するのである。
 本書の基本的な考えは単純である。ソフトウェア開発はチームスポーツであり、技術的要因と同じだけ人的要因が影響するというものだ。何十年もかけてプログラミングの技術面を学んだとしても、人間的要因を学んでいない人がほとんどだ。成功するにはコラボレーションについて学ぶことも必要である。ソフトウェアエンジニアリングの「ソフトスキル」に投資すれば、同じだけの努力でより大きな効果が得られるだろう。
Team Geek ―Googleのギークたちはいかにしてチームを作るのか はじめに