株式会社オージス総研Copyright © OGIS-RI Co.,Ltd. All rights reserved.

料理とソフトウェア開発

「3時のおやつ」担当の有名エンジニアと自ら焼いたチーズケーキを振る舞う社長


とある有名なソフトウェアエンジニアが作成したプレゼン資料を読んでいて、自己紹介欄の記述に興味を惹かれた。(書籍の)編集やDTP、社内ネットワークインフラ管理、プログラミングといった「まっとうな業務」とともに、自分の行っている仕事に「3時のおやつ作成」を挙げていたのだ。仕事ができる人の常として、「まっとうな業務」に追われてどうしても忙しいはず。おやつの作成を他の人に頼んだりだとか、どこかでおやつを買ってきたりできないのかとか、3時のおやつがそもそも必要なのかなど、次々と疑問が浮かぶ。

また、ある一部上場のソフトウェア開発会社の社長は、年に一回の株主総会で、自ら焼いたケーキを持参して株主らに振る舞っている。この社長は、自らが創業した会社を東証一部にまで上場させる一方で、ソフトウェア開発に関する書籍を何冊も書き上げた有名エンジニアでもある。チーズケーキを焼くだけなら社長以外でもできそうだし、株主に満足してもらうことが目的なら市販のケーキを買うだけで済みそうだ。普段から忙しく、株主総会に向けて入念な準備も必要な社長が、時間と手間を掛けて自らチーズケーキを焼くことにはやはり疑問を禁じ得ない。

おやつ作り担当のソフトウェアエンジニアや、チーズケーキを焼いて振る舞う社長への違和感は、経済学で用いられる「比較優位の原理」で説明できる。比較優位の原理とは「複数のものを必要とする経済の主体(個人、会社、国など)は、比較的優位(得意)なものの生産に特化して、他のものを交換で得るようにすれば、社会全体の生産性が高くなる」という概念だ。この比較優位の原理は、例えば国家間での自由貿易の利点を説明するときに論拠として用いられる。社会、あるいは会社といった組織のなかで分業が進むのも、比較優位の原理から説明できそうだ。

比較優位の考えを当てはめれば、ソフトウェアエンジニアや社長はおやつやケーキを作る時間を本業に当て、おやつ作りを別の人に任せるか、別途で購入すれば、社会全体の生産性の上昇につながる。簡潔にいえば、おやつ作りやケーキ作りは経済的に不合理なのだ。推測にはなるが、この不合理な側面については当のエンジニアや社長も承知しているはずだ。

喜んでもらえるものを作る楽しさ


では、なぜ彼らはおやつ作りやケーキ作りをするのか。おそらくそれは、ものを作ることや、できたものを他者に喜んでもらうことが楽しいからではないだろうか。そして、作る楽しさを求めているからこそ、経済的な不合理や作業の大変さを乗り越えながらもおやつやケーキを作っているのではないかと考える。

ものを作ることや、できたものを喜んでもらう楽しさは、プログラミングにもあてはまる。ソフトウェア開発論の古典であるブルックスの『人月の神話』では、プログラミングはなぜ楽しいのかという問いに対し、「ものを作り上げる純粋な喜び」や「他の人々に役立つものを作ることの楽しさ」を答えに挙げている。優れたソフトウェアエンジニアは、『人月の神話』で挙げられたプログラミングの楽しさを人一倍感じるのかもしれない。

ソフトウェアの仕様書は料理のレシピに似ている


一方で、ソフトウェア開発は一人では手に負えない複雑な状況が多い。これらの状況を解決するために、分業する場合が大多数だろう。しかし、これらの分業により作業の全体像が見通せず、もの作りの楽しさを感じにくいという側面もありそうだ。

マイクロソフトでWindowsの開発などに従事した経験を持つソフトウェアエンジニアで、ベンチャー企業の経営にも関わっている中島聡氏は、2006年3月のブログ記事「ソフトウェアの仕様書は料理のレシピに似ている」のなかである指摘をしている。

中島氏は「日本のIT産業で多く見られる上流(仕様の作成)と下流(プログラミング)を分けた階層構造でプログラムを作る工程は、プログラムを実際に書かない人がよい仕様を作ることはできないという原則に反している」と述べた。

さらに、プログラムの仕様書を料理のレシピに例え、「シェフがレシピだけ書いてキッチンにも立たないレストランには行きたくないし、ましてや自分で料理したこともないシェフが書いたレシピを元に作った料理がおいしいわけがない」と批判。確かに、シェフの代理で調理をしても、料理の楽しさは感じにくいだろう。

ソフトウェア開発が分業体制をとるのはやむを得ないことだし、上流と下流を分けた階層構造を変えるのも難しいことなのかもしれない。確かに、経済的合理性などを踏まえると、従来の階層構造にも存在理由があるのも間違いはない。現に、中島氏が2006年に発表したブログが多くの読者に読まれても、従来と変わらない階層構造の組織やプロジェクトが多く残っている。しかし、プログラムを実際に書かない人がよい仕様を作ることはできないという原則や、分業体制からはプログラミングの楽しさが損なわれていることも忘れてはならないのだ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

トップへ戻る
error: Content is protected !!