銀の弾丸は存在しないが、弾丸の作り方はある。

銀の弾丸は存在しない”

あまりに有名なBrooksの言葉である。これはF. Brooks Jr, "No silver bullet - essence and accidents of software engineering",Computer, Vol20,No.4,1987の論文でのキャッチーなタイトルからきている。銀の弾丸とは狼男を倒すことのできる弾丸である。このメタファは、要するに、ソフトウェアの生産性や信頼性、そして再利用などにおける「飛躍的」で「汎用的な」解決方法は存在しないという警鐘であり、1987年に言われたことは今でもそのとおりである。
 ちなみにこのキャッチーなタイトルだけが一人歩きして、ソフトウェア開発の困難性に対して馬鹿の一つ覚えのようにこの呪文を唱えていないだろうか。そういう人は、そもそも一回でもこの論文を全部読んだことがあるだろうか。この論文は、最初にこのように書いた後、何が困難にさせているか、それに対して銀の弾丸的な期待をされたどのような技術があり、それらが銀ではない理由を示し、最後にじゃあ、われわれはどうやって銀の弾丸のない状況で狼男と戦うべきかに対する示唆を示している。たとえば、戦いの示唆で言えば、「要求開発のための高速プロトタイピング」や「プロトタイプとしてのソフトウェア」や「買えるものは作るな」とか「インクリメンタル開発」、「ソフトウェアは構築ではなく成長」とか「創造的な優れた設計者の確保」など、20年前に今思えば非常に本質的かつ先進的な指針が書いてある。ぜひ、一度この論文をちゃんと読んでほしいし、俺ももう一度じっくり読みたい。
 また、彼がいっているのはあくまでソリューションとしての銀の弾丸はないと言っているだけだ。決して個々のソフトウェアの課題をどのように解決するか、という「問題解決プロセス」に一般解がないとは決して言っていない。われわれは、銀の弾丸を持つことはできないだろうが、決して弾丸の作り方を考えることをあきらめてはならないと思う。
 最近銀の弾丸とは言わないまでも、解決策だけを安直に実践して効果がでないから、その解決策がダメでやっぱ銀の弾丸はないよねとか相当暴力的な論理展開でしたり顔で語る人がいるが、だめすよ。
 ある課題が、どのような前提条件や要求条件を持つ環境で存在しているという関係をはっきり把握し、それを元に、一定の問題解決プロセスを経て、解決策を決める。その過程を理解してこそ環境変化の多いこの世の中で、その解決策を有効に使い続けれるのである。そうじゃないと結局形骸化へのゴールが待っているだけなんだよね。
論語読んでいたら、孔子はかつて弟子にこういっていたらしい。

子曰く、ビジネス環境がたえまなく変化し、その一部であるシステムも進化をし続ける。いわんや人間をや。

ほんとかな。(#もちろんうそですが、同じようなことを言っています)

ソフトウェアエンジニアリング論文集80's~デマルコ・セレクション

ソフトウェアエンジニアリング論文集80's~デマルコ・セレクション

↑死ぬほど名著です。80年代のSEを馬鹿にしてはいけません。あれ、じゃあそれから進歩してないの?(汗)

#次回は私が生まれる前に今の自分が所属しているプロジェクトがやっていることと同じようなことを言っているLehman先生最強伝説を語るの巻です。お楽しみに。