スーパープログラマーとは何か?成熟していない組織で求められるプログラマー像

2020年4月18日

スーパープログラマーの概要

プロジェクトを成功に導くスーパープログラマー!

スーパープログラマーとは、1人でプロジェクトを成功に導いてくれるプログラマーのことです。
多くの場合、スーパープログラマーは彼・彼女を中心とした小規模なチームを編成し、プロジェクトを主導していきます。
プロジェクトが終了した後には、組織の人から伝説的な扱いをうけるのがスーパープログラマーです。
もちろんこうしたスーパープログラマー像はジョークに類するものであり、ソフトウェア開発の人類学者であるジェラルド・ワインバーグの著書『ワインバーグのシステム思考法 ソフトウェア文化を創る〈1〉』で紹介されているプログラマー像です。

スーパープログラマーが求められる組織

ワインバーグは、こうしたスーパープログラマーを求めるのは、個人だけの力に限界を感じ、組織として製品の品質を改善させようという意識は芽生え始めたものの、まだまだ業務のプロセスが確立されていない組織であるとしています。

CMMIの段階と求められるプログラマー像

CMMIとは何か

ワインバーグが考えるスーパープログラマーが求められる組織というのは、組織の成熟度を表すCMMIでいうレベル1レベル2あたりの組織です。
CMMIとはソフトウェアを開発する組織の成熟度を測るものです。
まったくプロセスが確立されていないレベル1の状態から、プロセスが確立され、定量的フィードバックを行いながら改善活動を行うレベル5までの5段階で組織を評価します。
つまり、スーパープログラマーというのは、ソフトウェア開発を行う組織がほとんど成熟していない状態の時に求められる人物であると言えるでしょう。

CMMIの初期レベルの組織の状態

CMMIのレベル1の組織というのは、組織とは名ばかりに個人として業務にいそしんでいるような組織です。
レベル2の組織はというと、管理手法が導入され始めたものの、それが定着していないような組織です。
ワインバーグが考えるスーパープログラマーが求められる組織というのは、CMMIのレベル1からレベル2あたりの組織です。
こうした組織では開発ツールとしての管理に関する知識がないため[1]G.M.ワインバーグ (著)、大野 徇郎 (訳)『ワインバーグのシステム思考法 ソフトウェア文化を創る〈1〉』共立出版 、1994年、27頁。、結局は特定の人の力に大きく依存してしまいます。
例えば複数人で開発できるように機能仕様書を作成したり、フィードバックを円滑に行えるツールを使ったりすれば、プログラマーの負担も少なく済み、開発もはかどるのに、こうしたプロジェクト管理の手法の知識がない状態です。
このようなCMMIの初期レベルの組織は、組織としてプロジェクトを運営する知識がないため、スーパープログラマーが出現し、信じられないほどの生産性で開発を進め、プロジェクトを成功に収めてくれることを期待しています。

スーパープログラマーを求めている組織が成熟できない理由

現実としては、そこまで「スーパー」ではないプログラマーが徹夜をしながら命を削ってプロジェクトを進めることになります。そして成熟度の低い組織の多くはそのプログラマーの実績を伝説的に持ち上げて語り継ぎます。
「これは○○くんがほぼ一人で開発してくれた!」
「△△さんが徹夜して頑張ってくれた!」

というように、犠牲になったスーパープログラマーを英雄のようにたたえます。
善意であれなんであれ、こうした状況は組織として正常と言えるのでしょうか。
田中芳樹のSF小説『銀河英雄伝説』の中に以下のようなセリフがあります。

「敗軍の将ですよ、私は」
「そう、同盟軍は敗れた。よって英雄をぜひとも必要とするんだ。大勝利ならあえてそれを必要とせんがね。敗れたときは民衆の視線を大局からそらさなくてはならんからな。」

銀河英雄伝説1 黎明篇

このように、英雄の存在というのは、本質的な問題から人の目をそらさせてしまいます。
本当は徹夜するプロジェクトになった原因や、一人で開発せざるを得なくなった状況を反省し、改善していかなければならないのですが、「スーパープログラマー」という英雄を仕立てることによって、問題の本質をあいまいにしてしまいます
ワインバーグも成熟度の低い組織の成熟度を高めていくには、意識の変化が必要であるとしていますが、管理手法どうのこうのよりも、プロジェクトを運営していく組織の意識の変化が何よりも大切だと言えるでしょう。

優れたソフトウェア開発手法が定着すれば、そこまでスーパーなプログラマーはいらない

今回はワインバーグの著書『ワインバーグのシステム思考法 ソフトウェア文化を創る〈1〉』に登場したスーパープログラマーを紹介してきました。
こうしたスーパープログラマーは、体系的にソフトウェア開発が進められない組織で求められるプログラマー像でした。
逆にいうと、成熟度が高まり、技術やノウハウの共有が行われる組織であれば、そこまで「スーパー」なプログラマーは必要とせず、プログラマーの作業負荷も均等になっていきます。
IT化が進むなかで、スーパープログラマーを求める組織は多くなっています。しかし、もしあなたがスーパープログラマーを求める組織にいれば、問題の本質から目をそらさず、組織のプロセスの改善に取り組んでいってください。
また、今回でてきたCMMIについてより詳しく知りたい方には、以下の記事も見ていただけますと幸いです。

1G.M.ワインバーグ (著)、大野 徇郎 (訳)『ワインバーグのシステム思考法 ソフトウェア文化を創る〈1〉』共立出版 、1994年、27頁。