2007年5月19日

Be Negative!

ビジネス書などを見ていると「頭のいい人は、失敗の原因ばかり探しているからダメだ」とか「いいからとりあえずやってみろ」とか書いてある。

冗談ではない

私は、何かを行うに当たって、事前に失敗要因を挙げられない人を信頼しない。なぜならそういう人は、
  1. 何も考えていない/予測能力が無い
  2. 嘘をついている/詐欺にはめようとしている
のどちらかに決まっているからだ。2は論外として、予測能力はどんなジャンルにおいても成功するための絶対条件じゃないか。これを否定するような人間は偶然成功した人間か、詐欺師ぐらいなものだ。

簡単な例を考えよう。

例えば大学受験。あなたは慶應義塾大学を受けることにした。


この時、予測能力が無い人は、同じ受験生の学力など考えることも無く、特に準備もせずに受験する。これで合格するならあなたはほとんど天才で、大学に通う必要自体無いかもしれない(学士号が欲しい、と言うのはあるかもしれないので受けるなとは言わないが)。

予測能力のある人は「周りの人間のほうが学力が高いから受験しても失敗する」と予測する。この予測はこの段階では「仮説」なので、これを検討するために過去の合格者・不合格者の学力レベルや自分の現在の学力レベルを検討する。もし不足分があったら、それを補うための方策を考えるはずだ。


予測能力の無い人は、筆記用具が必要になる、と言うこと自体忘れるかもしれない。
予測能力のある人は、筆記用具が必要だから忘れないようにする方策を立てる。またどのような筆記用具が必要になるか検討する。


このように「失敗要因」を挙げ、それに対処する方法を考える事はとても重要だ。エンジニアに必須の能力であり、エンジニアが徹底して鍛えられなくてはいけない能力と言っても良い。この時に対処方法を思いつかず、あるいは思いついても高コストでとても払えない、と思って手を出さないというのは、決して悪いことではない。

むしろ、深く考えずに「とりあえずやる」事の方がよほど迷惑だ。できもしないのに「できます」と言い募り、任せてみたら「できませんでした、てへ」で済まされては、周りが迷惑する。しかも、十分な方策を練っても失敗したならやむをえないと思うが、対策なしでは…。


このように失敗要因を考慮する能力はエンジニアに絶対必要な能力だ。この能力が高い人間は、「対策を立てる」段階で竦んでしまう場合がある。というのも「対策がうまくいかない理由」も思いついてしまうため、失敗要因の連鎖が頭の中で構成されてしまい、絶対失敗するかのように思われるからだ。

しかし、この恐怖は教育と訓練で消すことができる。一定確率以下の失敗要因は無視して構わないはずだ。一連の失敗連鎖の中には、「メタ失敗要因」とも言うべきものが見つかるはずで、時にはそちらを先に解決することで一気に実現可能性が高まるかもしれない。失敗要因が大量に出てくる理由のひとつに、システムが複雑すぎるから、という事がありえる。もっと単純にすると、逆に robustness があがるかもしれない。いきなり大掛かりに実地をすると被害が甚大になる場合は、小規模なプレテストを実行することで解決策が見出せるかもしれない。

こうして教育された、「失敗要因ばかり考えてくよくよする人」が作り上げるものは、製品であれ、システムであれ、きわめて高品質で、よく考えられた、堅牢なものになる。どこぞのOSのように毎月のように update してもなお、緊急 update が発生するとか、カタログ上のスペックは優れているが、毎日のようにどこかが壊れているとか、そういうものにはならない。


というわけで、もしあなたが成功したいなら、私は次の事を勧める。
Be Negative!!