ここで、あえて宣言しましょう。
大規模開発でも上手く行きますか?という問いかけは無意味であると。
ただし、小規模システムを指向する私という文脈に置いて、です。
(そして、裏を返せば、大規模システムを扱う立場からすれば、「小規模開発でも上手く行きますか?」という問いかけが無意味であると発言しうる可能性があります)
規模(スケール)の違いは様々な質的な相違を発生させる §
まず1つ確認しなければならないことは、ソフトウェア開発の文脈において、大は小を兼ねない、という事実です。これは、製造業の分野で、スケールメリットを追求する少品種大量生産の方法論を、多品種少量生産にそのまま適用できないことと同じと言って良いでしょう。たとえば、数百人のスタッフと数年の歳月を費やして開発される巨大ソフトウェアの方法論を、3日で作り上げる一発アイデアプログラムに適用しても上手く機能しないということです。そして、逆も真なりです。
そこから導き出されることは、いともシンプルで、規模が違えば最善の方法は異なる、というものです。
たとえばエクストリームプログラミングに投げかけられる問いかけ §
たとえばエクストリームプログラミングに投げかけられる問いかけとして、「小規模開発に有効なのは分かりますが、大規模開発でも有効ですか?」というものがあるようです。私自身は問いかけられたことはないので、正確などころはどうか分かりませんが。
そのように問いかけられれば、やはりエクストリームプログラミングの信奉者としては、ぜひとも大規模開発でも有効であることを示したい、と思うことがあるかもしれません。
しかし、規模が違えば最善の方法は異なる、という上記の話を踏まえて考えると、小規模開発で絶大な効能を発揮する方法論は、それだけで極めて有益なものであり、それが大規模開発でも有効であるか否かは重要ではない、と言っても良いのではないかと思うわけです。たとえ、大規模開発では上手く行かないと揶揄されても、大規模なシステムを扱わない私のような立場には何の意味も持ちません。
常識を疑え! §
規模が違えば最善の方法は異なる、という前提に立つとすれば、どのような常識であろうと、それがどのような規模に対して有効な常識であるかが確認されねばなりません。
従来、パソコンは小規模システムに使われるもので、大規模システムでは端末程度に出番しかありませんでした。その状況で、パソコンに対して語られる常識は、そういう範囲内に収まっていたと思います。
しかし、今やパソコンの世界のメインフレーム文化に浸食され、またパソコンとそれ以上のランクのコンピュータの境界も曖昧になっています。
その状況で語られる常識は、いつの間にか、パソコンが玩具と揶揄された時代に語られた常識とは、想定される規模が違うようになってしまったような印象を受けます。
であるならば、あくまで小規模なシステムを指向する私のような立場から見れば、今のパソコンの世界にある全ての常識が有益であるという前提は取れません。規模の違いにより有効ではない常識も少なからず存在するのではないか、と思うわけです。
そして、なぜ常識に逆らっていくのかという理由 §
以上のような考え方を取るなら、パソコンの世界にある常識のうちのいくつかに逆らう態度を取ることは必然であると言えます。
むしろ、全ての常識を受け入れて、優等生のようにそれを実践することこそが危険な行いであると言えると思います。
しかし、どの常識がどのような規模、対象に有効であるか、その境界は明確ではない場合が多いと言えます。ですから、試行錯誤していろいろ考え、そして実践する必要があるわけですね。
それこそが、このオータムマガジンにしばしば出てくる、様々な反常識的なコンテンツの存在意義と言うことができるかもしれません。
携帯電話のプログラミングの常識は非常識? §
こんなことを考えるのは、パソコンよりももっと規模が小さい携帯電話のプログラミングをやろうと考えているためかもしれませんね。携帯Javaのプログラミングの常識は、あからさまに一般のJavaプログラミングの常識を根底から覆すような非常識の山です。