ソフトウェア開発を理解していない人々
ソフトウェアの開発プロセスが一部で話題になっている。
- http://d.hatena.ne.jp/JavaBlack/20050602#p1
- http://d.hatena.ne.jp/JavaBlack/20050605#p2
- http://www.programmers-paradise.com/tdiary/?date=20050607#p02
- http://d.hatena.ne.jp/masanobuimai/20050611#1118460560
- http://blog.uzushio.org/?date=20050611#p03
- http://d.hatena.ne.jp/JavaBlack/20050613
ソフトウェアを開発する以上、結果として、何らかのプロセスを経て開発が行われる。そのプロセスを標準化すべきか否かという点で意見の相違が生じる。
開発プロセスの標準化は逆効果になりやすい。それは、開発プロセスの標準化を唱える人々の多くが、ソフトウェアというものを、ソフトウェア開発というものを理解していないことによる。ソフトウェア開発というものを理解していれば、開発プロセスの標準化には細心の注意が必要であり、簡単に逆効果に陥ってしまうことが予想できる。
ソフトウェアという情報
ソフトウェアとは何かと問われたら、「ハードウェアを制御するための情報である」と答えることができる。情報であるから、それは比較的容易にコピーできる。最近ではドキュメントもデジタルデータとして保存されるのが普通だからなおさらである。違法コピーのように、むしろ容易にコピーできすぎることが問題となっている。
ソフトウェア開発はハードウェアにおける設計
ソフトウェアが情報であるため、同じものを作ることはコピーにより容易に実現できる。ハードウェアにおいて同じものを作るのは製造であるが、ソフトウェアにおいてそれに相当するのはコピーである。
ソフトウェア開発に相当するのは、ハードウェアにおける設計である。
同じものを作らないソフトウェア開発
ソフトウェア開発は設計であるから、同じものを開発することには意味がない。同じものはコピーによりいくらでも作れるからである。同じものを開発することには意味がないということは、厳密に同じ開発プロセスであれば意味がないということである。
工場であれば、昨日作ったものと区別できないものを今日作るのは、ごく当然のことである。しかし、ソフトウェア開発において、昨日開発したもののと区別できないものを今日開発すれば、正気を疑われるだろう。
違いがあるからこそソフトウェアに意味がある。違いがあるからこそソフトウェア開発に意味がある。もちろん、ソフトウェア開発にも、同じ作業の繰り返しは存在する。しかし、それらのほとんどは、コンパイラやビルド・ツールとして自動化されている。
既存のソフトウェアとの差異が少なければ、従来の開発プロセスが効率的に使えるだろう。しかし、既存のソフトウェアとの差異が少なければ、そのソフトウェアを開発する価値も通常少ない。