ソフトウェアは工業製品ではない

ブログを書かなくなって2年程経つので、書き方、というかペースを忘れてしまった。
就職活動で家に居ることも多い(出るのは昼食と喫茶店ぐらいか 苦笑)ので、何か毎日書き込むようにしよう。

家に居るとネットサーフィン(死語か?)を過ごしている時間が長くなり過ぎるので時間を制限している。あるいは目的を絞って探し物をしている。

そんな中で、インストールマニアックス2009 繋がりで、

「ソフトウェアは工業製品ではない」、Rubyのまつもと氏が講演
http://www.atmarkit.co.jp/news/200904/10/matz.html

なところにたどり着いた。

「ビューティフルコード」を読んだことはないのだけど『コード(ソフトウェア)を書くというのは、組み立てのことではなく、製造業でいう「設計」に相当するという。』は同意。多くの人が言っていることだけど、ソフトウェア開発は製造業界に属するけれど(株式的には通信業となる)、「製造」よりも「設計」が主な仕事になる。

これは「ブラック会社に勤めてるんだが、もう俺は限界かもしれない」で出てくる「設計」してから「製造(コーディング)」という流れを見ると業界外の人にも分かる、、、かもしれない。

または、昨今流行であるオフショア開発も
・日本で設計(詳細設計まで作成)
・中国で製造(詳細設計を元にコーディング)
という流れで、詳細設計とコーディングの間に伝達する情報が整理されてまとめられている、という点を見ると「設計」と「製造」が工程として分かれているのが分かる、、、と思う。

さて、まつもとひろゆき氏の言う「ソフトウェア」のところを、敢えて曲解すれば、いわゆるIT会社(SIerと呼ばれるものも含めると)

・システム構築を主たる仕事とするSE(システムエンジニア)
・ソフトウェア開発を主たる仕事とするPG(プログラマ)

という分類が(就職斡旋やIT派遣)には存在している。実際、各会社の中でこれらが部門(SEのほうはネットワーク部門、あるいは営業も含んでいたりする)に分けられていることが多い。また、単価(人月)という形でひとりあたり(属人性のない)の金額が決まっている。これは当然のようにプログラマのほうが安い。

# 余談だが、IT派遣の単価を見るとフリーSEとPGではほぼ同じ程度、むしろフリーSEのほうが単価が安かったりする。

という分類を踏まえていると、情報の伝達の仕方が

顧客→営業→システムエンジニア→プログラマ

となっている場合、顧客や営業から見ると、プログラマは

・如何に安くコードを製造してくれるか?
・如何に迅速にコードを提供してくれるか?

なことを要望されるので、そうなるとこれは自動車産業でいう製造工程に見えなくもない。というか、システムエンジニアや営業が行うプレゼンテーションやシステム設計の作業までは見えるだろうけど、設計(ソフトウェア設計と呼ぶ?)やコードを書いているプログラマの作業は、まさしく「製造」=「マシン」に見えなくもない。

まあ、実際オフショア開発になってしまうと、まさしくコーディング=製造ということになるんだが。
なので、ソフトウェア開発が「設計」かどうかは別として、「設計」と「製造」の定義をソフトウェア開発のために見直すか(新しい用語を作るか)、他の業界と比較がしやすいように(誤解込みで)用語をそのまま受け入れるというのがいいじゃないかな。
因みに今の私は後者のほうがいいと思っている。他の業界のノウハウ(建築業界の工程表とか、自動車業界のモックアップの概念とか)が流用できるので、下手に独自な概念を持ち出すよりもうまくマッチングさせていく方がよい。
そう、町工場のモデルを参考にするといいと思うだが。長くなったので、この話は後日。

カテゴリー: 開発 パーマリンク