問題の本質をたどる帰り道

young「これ ConditionBean でどうやります?」
jflute「まあ、こうすればできるけど、どうしたの?」

young「これをこうしなければならなくって...」
jflute「ほう、でもなんでそうしないといけないの?」

young「それはこれがこういうことになってるから...」
jflute「ほう、なんでそんな風になってるの?」

young「それはこういう問題があるから...」
jflute「...」
young「...」

jflute「それ、こうしちゃえばいいね」
young「!?」
数え切れないほどのよくあるやりとりです。
結局、ConditionBeanのそのやり方は要らなかったし、
そのまえのやらなきゃいけないことも要らなかったし、
そのまえにそんな風になってる必要もなかったし。
もうDBFluteは完全に無関係だったり。

SeasarDBFlute の ML を読んでいる人は、
jfluteがこういうやりとりをよくやっていたと、
記憶の片隅に残っていたりもするのではないでしょうか。
(あと現場でjfluteの近くにいる人は心当たりがあるかも!?)

"A" というまず最初の問題があって、
それを解決しようと "B" をやろうと、
"B" のために "C" が必要で、
でも "D" という問題があって...

気付いたら、頭の中が "D" でいっぱいになりがちなもの。
別にそれは悪くない、だってそれが必要だと思って、
一生懸命に "D" への道を辿ってきたんだから。
ただ、"D" が問題の中心ではないことは忘れてはいけない。

いつでも "A" に帰れるようにしておかないと。

時々、自分では "A" に帰れなくなる場合もあります。
「D ってことは、C or E or F あるんじゃないかと?」
「そうそう、C です」
「ってことは、B or G or H があるんじゃ...」
「そうそう、B です」
という風に導くこともしばしば。
まあ、それがjfluteの仕事といえば仕事ですが。
質問や相談をするときは「その問題領域の背景」も
添えましょうと、よく言います。
急いでるときとか、必ずじゃなくてもいいけど、
問題の本質がだいぶ遠ざかってしまっている場合は、
違うアドバイスもできるかもしれないから。

というか、そのとき "A" に帰れることで、
相談する前に "A" の根本の解決がふと見えたりも。
"A" を解決する "Y" を自分で見つけちゃうかも。

だから、帰れるって大事。

ただ、実際の思考は、
A -> B -> C -> D と単純ではない。
直線ではなく、ぐにゃぐにゃと曲がった道かもしれない。
だからこそ、帰りづらいときもあるのだ。
 
思考の辿った道に、何かタグ付けができれば、
階段の踊り場のようなターニングポイントがあれば、
そこだけを記憶にとどめておく。
寄り道してきた道まで辿る必要はない。
帰るときはポイントを一直線で結んで帰ればいい。

書いてて無理があるなぁ、難しいなぁと思ってるんだけど、
たぶん帰れる人は自然とそれをやってるんだと思う。
単なる意識というか習慣だけの話だから、
もし、心当たりがあったら意識してみるといい。
だんだん習慣づいて自然とやるようになるでしょう。
質問や相談をされた場合は、
丁寧にその問題領域の背景を追求してみましょう。
"D" を解決することが解決とは限らないから。

どういう画面が必要か、どういう機能が必要か、
要件定義でも通じる話ですし、
共通ライブラリを作るときにも通じます。
というか、どこでも通じる話です。

特にDBFluteの開発では、重要なポイントでした。
現場の声が最高に大事、要望は宝です。
ただ、その要望は必ず jflute フィルターを通ります。
要望の内容がそのまま実装されないこともあります。

ごめんなさい、って感じですが、要望を出した人は、
DBFluteの全体を把握してるわけではありません。
そのままの実装では他の機能とのバランスを崩し、
長期的な不具合となりかねません。そうすると、
逆に要望を出した人の不利益にもなってしまいます。
それができないフレームワークは、
いつかメンテ不能となり成長が止まるでしょう。

そのバランスをとりつつ、
適切なDBFluteの機能として実装し、
かつ、その人の問題も解決するのが、
DBFluteの守護神であるjfluteの仕事です。

そう、要望を実装するのが仕事ではなく、
その人の問題を解決するのが仕事なのです。
それが同時に他のユーザーも助けにつながればと。
「要望した人 - jflute - 他のユーザー」
の、Win-Win-Winの関係を保つこと。

ブランドもなにもないツールなので、
「すっごい役に立つ」というきっかけ以外に
使ってもらえる理由がないから。

とはいえ、これって、
他のレイヤでも通じる話なんじゃないかと。

【追記】
後に、こんなブログ書きました:

// 質問のコツその一: なんでその質問してるのか?も伝えよう
http://d.hatena.ne.jp/jflute/20170611/askingway1
どっちの立場に立ったとしても、
とてもとても大切な "意識" ですね。

「なぜ?」

による追求のこころを忘れないように。