今日はシンプルな話。
とある日常の風景
A か B か?
どっちにしようか決めていて...
seaさん「Aだー」
landさん「Bだー」
piariさん「Aだー」
bonvoさん「Aだー」
dstoreさん「Bだー」
ambaさん「Aだー」
seaさん「うむ、Aだね、やった!」
landさん「bonvoさんもAなら仕方ない」
piariさん「これで幸せがやってくるね」
dstoreさん「まあ、じゃあAはAでいいとして、
Aの苦手な部分をどうするか考えないと」
seaさん「えっ!?」
piariさん「まだAにケチつけるの?」
amba「もう決まったことじゃんよ」
dstoreさん「いや、そうじゃなくて...」
seaさん「ギラ!」
dstoreさん「ぐはぁ」
...
まあ、さすがに実際はこうかもですね。
seaさんとかみんな「Aだー、Aだー」
dstoreさん (...)
seaさん「あら、dstoreさん、どうしたのかしら?」
dstoreさん「あっいや、なんでも...Aで良かったね」
seaさん「おーーーー、ホッホッホ」
失敗するのはAでもBでもない
まず、言います。
すべての選択肢にメリット、デメリットがあります。
これを絶対に忘れてはいけません。デメリットのない選択肢なんてありません。
A が B のすべてを包含していること...まあ、あり得なくはないですが、その場合は大抵の場合、議論にすらなっていません。それなりに議論することになった A と B は、互いに良いところを持ち、互いに悪いところを持っていることでしょう。
場合によっては、AでもBでも、どちらでもそこまで大きな違いがないこともあります。
もし、失敗するとしたら...
選んだほうのデメリットに目をつぶって、ただボーっと使うこと
それはシンプルなこと
わたしたちがやるべきことは、A か B か最適な方を選ぶために分析をし、A だろうが B だろうが、決まったら決まったらで、
決めた方のメリットを最大化し、
デメリットを最小化するだけ
最大化する施策も必要だし、
最小化する施策も必要です。
でも、seaさんたちのように、デメリットには目を背けがちです。でなければ、せっかく選んだ A を、つぶしてしまうことになります。
もし、あなたが A を応援しているのであれば、A になったことを喜んでる場合ではありません。A のデメリットによる問題が発生しないような、施策を考え実施するのです。
それこそが、A のためになるのです。
dstoreさんは、最初 B を推していましたが、A になったらなったで、ちゃんとプロジェクトが成功するように、デメリットの部分をリスクヘッジしようとしていたわけですね。
分析は終わっているのだろうか?
A か B を議論しているときは、みな政治的な理由でメリットばかりを強調し、いつしかデメリットに目を背け、それを忘れるようにすらなっています。それが落とし穴です。
jfluteは、数多くの現場と関わる立場上、Aか?Bか?の議論に巻き込まれることが多い立場です。最近ではすっかり、この話ばかりしているように思えます。
昨今は多様化も進み、多くのツールの品質も上がり、どのプログラミング言語でも、どのフレームワークでも、"使い方を誤らなければ" 失敗するようなことはほとんどないでしょう。
個人的には、当然「A がいいなぁ」とか「B がいいなぁ」とか、あれこれは持っていますが...
すっかりそこよりも...
A でもいいから B でもいいからそのツールの思想と特徴をしっかり捉え、最大化と最小化の施策を明確に行うことに重点を置いて欲しい
その思いが強くなりました。
そのプロジェクトにフィットするかどうか?という点においても何も変わりません。フィットする部分、しない部分を見極め、真摯に対処をしていくのです。
もし、それができないのであれば、そもそも「Aにする?Bにする?」の判断自体も正しくできていないと思われます。
さいごに
さて、このブログを読んでいるかもしれない、DBFluteのユーザーのみなさんへ。DBFluteを使って頂きありがとうございます。とっても嬉しいです。
マニアックなDBFluteを使っているということは、"周囲からの大変なプレッシャー" の中で選んだことでしょう(^^。DBFluteの良さを理解して頂いている証拠です。感謝感謝です。
ただ、DBFluteのデメリットも見つけてください。そのプロジェクトに合わない部分もあるはずです。そして、大きな問題にならないようにするための施策を考えてください。そうすれば、メリットがもっと活きるでしょう。
それがプロジェクト成功の鍵です。
...
【追記】こちらにも通じる話ですね。
=> フレームワーク選定という寂しい工程と一つの希望
=> フレームワークの思想、意識して使っていますか?
=> 使いこなしてないAと使いこなしてるA