違和感

ソフトウェアの仕様書は料理のレシピに似ている
http://satoshi.blogs.com/life/2006/03/post_8.html

ソフトウェア開発に階層構造を持ち込むのは、間違いだと思う。
http://blog.shos.info/archives/cat6/

から引用で

 これに関しては、自信を持って言えるのだが、「どんなに優秀なエンジニアでも、決してプログラムを自分自身で書かずに良い詳細仕様を作ることは出来ない」という絶対的な法則があるのだ。

この考えに同意。
以前に私も上司から、

「自分でプログラムを書かない上流のエンジニアが詳細設計書を作り、下流のエンジニアがコーディングをする」という工程

で、作業をするのが理想だと言われたことがあり、それに対して大いに不信感を持ったことがある。
前提として、自分でプログラムを書かないと良い詳細仕様は作れないと考えていたからだ。

システム開発は、建築に例えられることが多い(庭師とかもあったな)。
ここでは料理店の厨房で「シェフ」と「下っ端料理人」に例えられているのが面白い。

ソフトウェアのアーキテクトが自らプログラムを書いたり、下っ端のエンジニアの書いたコードをレビューするのは、レストランのシェフが自ら料理をしたり、下っ端の料理人の作ったスープの味見をするとの同じである。もちろん、レストランに行く側の立場になってみれば、そんなレストランで食事をしたいのは当然である。シェフがレシピだけ書いてキッチンにも立たないレストランには行きたくないし、ましてや自分で料理したこともないシェフが書いたレシピを元に作った料理がおいしいわけがない。

ちょっと思いついたのは、食品業界のチェーン店みないな業態だと、研修を受けて「下っ端料理人」クラスになった人間が、料理をつくってだしてるよなって話し。
まぁこの場合でも「シェフ」クラスは本部にいて「レシピ」を日々作ってるんだろう(^^;

「詳細設計書」=「レシピ」というには、ちょっと無理があるか。
でも他にシステム開発で「レシピ」相当のものは思いつかないので、ひとまず

  • 「詳細設計書、他もろもろの文書」=「レシピ」
  • 「開発されるシステム」=「料理」

ということで手を打つ。

システム開発の場合「レシピ」から「料理」が自動生成できれば、「シェフ」に対する「下っ端料理人」に人間は不要だ。現実問題無理だけどな。半分以上は自動化できそうだけど。
例えば企業システムなら、環境構築仕様書みて、システムのセットアップする人間はおそらく残る。この例でいうところの「下っ端料理人」クラス相当かも。

話しが発散しすぎた。

「自分でプログラムを書かない上流のエンジニアが詳細設計書を作り、下流のエンジニアがコーディングをする」という工程

が理想だと言った、上司の背景には

レストランのシェフが自ら料理をしたり、下っ端の料理人の作ったスープの味見をする

という、絵が見えているのかも。お客にだされる料理=「開発されたシステム」というわけだ。

  • 「シェフ」=「上流設計者」

  • 「レシピ」=「詳細設計書、他もろもろの文書」

の文書をつくり、、それに合わせて

  • 「下っ端料理人」=「下流のエンジニア」

  • 「料理」=「開発されるシステム」

を作るという話しをしたかったのだろう。

んー、文章を寝かせずに書くとこうなるという悪い例だな