この手のを毎度どういう切り口で話そうか悩む。
なんの話をしたかったからかは忘れたけど、ふと銀の弾などないのことを思い出す機会があって、そういやぁブルックスのこの論文の話って、あんまりちゃんとしたことがなかった気がするなぁと思ってさ。
この手の話を他人にしたいと思う場合に、真っ先に悩ましいのは無論「補足なしで紹介してしまう場合のある種の害」に関して、なわけである。この件に関してここ20年内かで一番わかりやすかったのは、養老孟司著「バカの壁」だった。
「バカの壁」はちゃんと読んでちゃんと自分の頭で理解するなら名著なのだが、これが現実に生み出したのは、「「バカの壁」が攻撃する対象」の方が増長するという構造だった。タイトルがキャッチー過ぎて、言葉が独り歩きしてしまって、養老氏が本当に伝えたかったことは、世間的にはむしろ最も間違った解釈がなされたといって良い。
「今」、銀の弾などないについて触れなければならない場合、「バカの壁」と同じく注意深く紹介しないと「バカが増長する」というだけではなくて、当たり前のことなのだが、「時代性」についても慎重に検討しなければならない、ということ。
銀の弾などないに関しての「増長しうるバカ」は多分大きく2種類と思う。一つにはいわゆる「悲観論者」であり、「銀の弾などない、ので、努力するだけ無駄だ」と考えてしまうバカ。もう一方は想像付くだろうが「銀の弾などないわけがない」論者であり、おそらくこれの派生版は時代性を鑑みた「今なら」論者だろう。
どちらのタイプのバカも本質は実際は同じで、要するに「ちゃんと読まない」「自分の頭で考えない」ことに根があるのだが、「ちゃんと読んで自分の頭で考えた上での悲観論者/楽観論者」が「伝道者」になったとしても、「ちゃんと読まない」「自分の頭で考えない」者にとってはシンプルに「太郎さんも花子さんも言ってる」タイプの強化にしかならないので、決して本質部分は「伝わらない」。
まぁ、この「伝わらない」に関して一冊の本で論じたのが「バカの壁」だったりすんだけどね。これって、今風に言うと「共感力」の話なんだわ。
銀の弾などないが伝えようとする本質に関して、ワタシは「あらゆる労働者が共有して欲しい」と願っているけれど、問題はその「表層」の方。
「時代性」ね。今現時点において「オブジェクト指向の技法は厳しい状況にある」という「表層」をそのまま掬ってはいけない。これはさすがに「今」では言い過ぎである。けれども、そこに書かれている「理由」:
- オブジェクト指向のプログラマは、C++で連結リストやセット (集合) のような比較的低水準な抽象化によるクラスを作る傾向があり、高水準な抽象化を行ってクラスを作ることは行ってこなかった。 (ジェームズ・コギンズの雑誌記事より)
- オブジェクト指向についてプログラマを教育するとき、オブジェクト指向を特定のツール/言語を使うことだと教えてしまうことが多かった。本来はオブジェクト指向は設計 (ソフトウェア設計) の一つの種類 (オブジェクト指向設計) だと教育し、設計の原則を与えるべきであった。プログラマは設計の原則を学ばずに単にオブジェクト指向言語を使うだけであったため、恩恵は少なかった。恩恵が少ないのでは普及しないのは当然である。 (デイビッド・パーナスからブルックスに宛てられた手紙の内容より)
これは「今でも」ほとんど真実である。違っているのは「オブジェクト指向」が単に他のテクニックに置き換わる程度のものであり、本質的な部分はまったく変化していない。ゆえに「見解は変わらない」に関しては、ワタシにとってもまったく同じである。
銀の弾などない(あるいは「人月の神話」)は是非読んで欲しいわけなのだけれど、「じゃぁどうすればいいか」「じゃぁどう考えればいいか」を考えながら読むつもりがないなら、たぶん読んでも何も得られるものはないだろう。
「ぶっちゃけるならば」これが言うことは、「地道にやるしかねーんだよ、こんなん」てことだけなんだ。だけれどもじゃぁその「地道」ってなんだ、てこと、そこまで考えながら読むべき。
あともう一つ注意点としては、「あなたは何者か」に多かれ少なかれ依存するということ。「ソフトウェア工学」に関する著述の多くは「グループ全体」について論じるものである。特に「管理目線」で描かれるものが多い。そしてだからといって「ここはオレにゃぁ関係ねー」と考えないことである。「社会」なしには「あなた」は存在出来ない。全体主義ってわけじゃぁないけれど、たとえばあなたが単なる雇われプログラマなのだとしたら、「管理者に共感出来るように」なれ、てことだし、その逆もまた然り。