ソフトウェア開発に進歩がない理由

ITプロジェクトの実態とは!」というエントリで取り上げられていたソフトウェア開発を皮肉った絵をきっかけに、ソフトウェア開発では30年以上も前の本が通用するという話題になっている。

実際、「十年一日のごとく進歩なし」と書いたように、ソフトウェア開発には進歩がないかのように見える。それには以下のような理由がある。

  • 人の心は読めない
  • ソフトウェア開発に関わる人々が学習しようとしない
  • 同じものを開発しない

人の心が読めないことによるコミュニケーションの難しさ

人の心は読めないから、意図されたものと書かれたものとが違っても、他人にそれを知ることはできない。それどころか、人間の記憶はさほどあてにならないから自分自身ですら意図したものと書いたものとが違っていることに気づきにくい。でも、最初から顧客が必要だった物と顧客が説明した要件とが食い違っている。
コミュニケーションの難しさは、ウォーターフォール開発が誤って伝わった事実が皮肉にこれを証明している。

学習しようとしない人々

コミュニケーションが難しくても、それを認識していれば対策も立てられる。ところが、ソフトウェア開発に関わる人々がコミュニケーションの難しさをなかなか学習しようとしないため、同じ失敗を繰り返している。
ここで重要なのは、「ソフトウェア開発に関わる人々」の中に顧客も入っているこということだ。いや、顧客こそ、コミュニケーションの難しさを認識すべきである。コミュニケーションの難しさを認識せずに、単に人月単価だけを比較しているから、結局安物買いの銭失いということになる。市場原理は、顧客が安くて良いものを選択しなければ働かない。単に安いものを選択するだけでは安かろう悪かろうにしかならない。顧客が学習せず、学習しない企業、学習しない技術者を選択してしまうため、学習する企業、学習する技術者が逆に淘汰されてしまう。

同じものを開発しない

ビジネスとしてのソフトウェア開発では全く同じものを開発するということはない。少なくとも、全く同じと知っていて開発することはない。同じものを開発しないため、過去の経験は必ずしも有効ではない。
また、同じものを開発しないため、ビジネスとしてのソフトウェア開発では充分な精度の定量的データが一般に存在しない。充分な精度の定量的データが存在しないため、客観的な議論が成り立ち難い。思い込みや偏見に左右されやすい。