jfluteの日記 このページをアンテナに追加

2012-12-10

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

| 21:23 |

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

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

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

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

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

SeasarDBFluteML を読んでいる人は、
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
どっちの立場に立ったとしても、
とてもとても大切な "意識" ですね。

「なぜ?」

による追求のこころを忘れないように。
トラックバック - http://d.hatena.ne.jp/jflute/20121210/1355142214