倉庫をいっぱいにするためのソフトウェア開発?

「ソフトウェア開発の生産性」と口にする人々が往々にしてソフトウェア開発を理解していないということを13日22日25日のエントリで述べてきた。
実は、「ソフトウェア開発の生産性」と口にする人々は、ソフトウェア開発だけでなく生産性についても往々にして理解していない*1。ソフトウェア開発についても、生産性についても理解していないのだから、ソフトウェア開発の生産性については全く理解しておらず、見当はずれなことばかりを言っているのは何の不思議もない。

生産量とは目標の達成度合を示すもの

生産性とは、「生産量/投入量」である。投入量は広義のコストであり、何が投入量と言えるのかということが問題になることはあまり無い。ところが、何が生産量と言えるのかということはしばしば深刻な問題となる。

ザ・ゴール ― 企業の究極の目的とは何か』の54ページにこのようなセリフがある。

「君に言いたいのは、生産性なんてものは目標がはっきりわかっていなければ、まったく意味を持たないっていうことだ」

生産性というのは、目標(ゴール)への効率だからこそ意味を持つ。生産量とは目標の達成度合を示すものでなければならない。「(会社が潰れてもいいから)巨大なソフトウェアを開発してギネスブックに載る」というのが目標でもないかぎり、ソフトウェアの規模で生産量をあらわそうとすることは意味がない。

27日のエントリで述べているようにソフトウェア開発それ自体は、目的ではない。売れないソフト、役に立たないソフトをいくら開発しても意味は無い。『ザ・ゴール』の115ページにこういう会話が載っている。

「あれは何かね」
「倉庫です」彼が答えた。
「何のための」
「完成品をしまっておくためのです」
「もし、あの倉庫をいっぱいすることが目的で物を作っているとしたら、会社は生き延びることができると思うかね」

ソフトウェアの規模で生産量をあらわそうとする開発は、「倉庫をいっぱいすることが目的で物を作ること」である。

*1:もっとも、生産性についてきちんと理解している人はソフトウェア開発の分野以外でもそう多くないようである