『米マイクロソフト、ウィンドウズの設計情報の一部を公開へ』という記事が新聞に出ていました。

新聞のいう設計情報とは何だろうと思って読んでみると、それは仕様書ではなくユースケース図やらクラス図やらシーケンス図でもなく、ソースコードのことです。

なんだ、新聞正しく認識してるじゃん。というか「ソースコード」を専門用語を使わずに説明しようとすると、ソフトウェアの「設計情報」という言葉を使わざるを得ないわけです。ソースコードは製造物そのものではないのですから当然ですね。

それにもかかわらず、ソースコードを書くこと(=プログラミング)はものづくりでいうところの製造工程にあたる、という誤解はソフトウェアを作る業界では一般的です。

製造工程であるから、完全な設計図があれば人件費が安いところに外注に出してコストダウンができるはずという風に思われてしまうわけです。そして「スキルが必要ない単純労働」と認識されてしまうのです。とある雑誌で「プログラマの年収は明らかにSEよりも低い。それはプログラマは単純労働であり要求されるスキルが低いからである」と書いてあってがっかりしました。

もし誰にも誤読されない(だから安く外注に出せる)ほど厳密で完全な設計図があるとすれば、それはコンパイルして実行できるでしょう。つまりその設計図はソースコードです。

ソースコードは製造されたモノではなく、製造するのに必要十分な情報なのです。設計図と製造工程の指示を一緒にしたようなものでしょうか。ソフトウェアにおける製造工程とは、たとえばCDをプレスする工程になるでしょう。

ソフトウェアの恐ろしいところは、ものすごくいい加減な設計であってもメカニカルな機械と違ってそれなりに動いてしまうことです。欠陥がすぐには表面化しないのですね。