Matz氏はソフトウェア開発は建築と同じだとは言っていないが、あるコスト(例えば家一軒分)を払った場合に、建築の場合はある一定の水準が期待できるのに対して、ソフトウェア開発はそうではなく、「初心者」と「顧客の意識」に大きな問題があると述べている。
アーキテクチャ(architecture)とかビルド(build)など、ソフトウェア開発は建築由来の言葉が多い。符合する部分もいくらかはあるが、挙げていくと一致しないことの方が多い気がしてくる。例えば、
(2)新規性。建築では「家を建てる」といった場合に、特殊なものや奇抜なものを求めない限り、ツーバイフォーなど構造や工法、部材までほぼ決まっている。一方ソフトウェア開発では、「在庫管理ソフトがほしい」といった場合に、既存のシステムとの兼ね合いやユーザーの要求によって、一見同じようなものでも、機能や構造が異なることが多々ある。(既存のものを買ってきて済ませる場合はソフトウェア開発は発生しないので、ここでは考えないことにする)
(4)資格。建築の場合は建築士や左官技能士など資格を持っていれば安心できる。一方ソフトウェア開発では、最もポピュラーな情報処理技術者試験は(国家試験ではあるが)資格ではなく、何の意味もないとさえ言われることがある。
など。それぞれ考えていくと、ソフトウェア開発は建築よりも複雑であるということが言えるんじゃないかと思う。
一方で、Windowsのソースコードは一億行以上ある。優秀な人材を大量に集め莫大な資金を投入したWindowsにバグが存在するのは、スーパーエンジニアからすればレドモンドの連中が間抜けだからということになるのだろうが、私としてはMicrosoftにとってさえソフトウェア開発は複雑なものなのだ、という見方を採用したい。
そんなわけで、「ソフトウェア開発ではそれに近いことが平気でまかり通っている」という認識には同意しない。プロジェクトが火を噴くのはソフトウェア開発が本質的に複雑だからであって、初心者や向上心のない技術者のせいではないと思う。