
Zoltán KalmárによるPixabayからの画像
(2019年10月31日投稿の記事を改編しました)
「ラバーダック・デバッグ」とはプログラマーが使う問題解決手法である
プログラミングの世界で「ラバーダック・デバッグ」と呼ばれているアプローチがあります。
問題にぶつかったとき、すぐに誰かの助けを求めるかわりに、自分で問題をよく考えるためのやり方です。プログラマーは変人が多いので、そのためにラバーダック(ゴム製のアヒル)に話しかけるという伝統があります。
ラバーダックにまつわるエピソードを1つ紹介します。あるところに、部下から相談されるのが大嫌いな上司がいました。その上司は部下から問題を相談されると、自分ではなく部屋に置いてあるアヒルのはく製に話せと言うのだそうです。
そして、ある若手エンジニアが、言われたとおりにアヒルに問題を説明しているうちに、答えが見つかることがよくあることに気づきます。
彼が本当にしなければならなかったのは、問題を言葉で表現するという作業だったのです。
職業プログラマーのエピソードに「ラバーダック・デバッグ」というものがあります。
デバッグというのはプログラムの間違いを見つける作業のことです。
間違いの原因がなかなか見つからないときに、職業プログラマーがラバーダック(ゴム製のアヒルのおもちゃ)に話しかけると、答が見つかるというエピソードです。
どこまで本当の話か分かりませんが、これの言わんとしている意味は私にはわかります。
それは「答は自分の中にある」ということなのです。
アヒルであれ何であれ、質問するには以下の手順が必要です。
質問を言葉にする
頭の中で質問を考えているだけではだめで、ちゃんと言葉にすることだ重要です。
質問の内容が曖昧だとここでつまづきます。頭の中でははっきりしていたつもりが、書き出したり口に出してみると要領をえないことがあります。
人に質問する前に一度頭の中から質問を外に出してください。
ゴールを伝える
そもそも自分がやりたいこと明確にしておかないと、どこに行くべきか迷います。
これも質問と全く同じで、頭の中でははっきりしているつもりでも、じつは曖昧だったりします。やはり頭の外に出しておきましょう。
人に質問する時には、相手に正しくゴールを伝えておかないと、全然異なるゴールに到達してしまうリスクがあります。また、もしかするとそのゴールに到達するならもっといいやり方があって、それを教えてもらえるかもしれません。もしそうなら、今困っているところはまったく関係が無くなります。
自分でどこまで調べたかを伝える
相手に一から十まで教えてもらわなくても良いということを伝えることも大事です。もしかすると相手が一から教えないといけないと勘違いしたら、拒絶されるかもしれません。
●
ラバーダック・デバッグのエピソードを引き合いに出すと、これをちゃんとやることで、自分で答を見つけることができるということになります。
なぜなら、アヒルは答を言ってくれませんから。
つまり、頭の中を整理すれば、他人の力を借りなくても、自分で答が見つかるということなんですね。
●
もちろん、人間相手に質問するときにもこの準備をやっておけばスムーズに事が運びます。
わからないことが出てきて他の人に聞きに行ったときに、話がかみ合わず期待した答えが得られなかったことはありませんか?
逆に、人から教えを請われているのですが、何を知りたいかがよくわからずに困ったことはありませんか?
これって、質問する人の頭の中が整理されていない可能性が高いんですね。
みなさんも、人に質問する前に、ラバーダックに質問するようにしましょう(笑)。
コーチングに似ている
なぜ、これをBlogに書こうかと思ったかと言いますと、コーチングのセッションに似ているからです。
「質問を言葉にする」というのは、コーチングの場合はむしろコーチの方が質問をして、クライアントが困っていることを具体的な言葉に落とし込んでいく活動に当たります。
「ゴールを伝える」も同じように、コーチがクライアントが本当にやりたいことは何なのかを解き明かしていく活動のことです。
「自分でどこまで調べたかを伝える」は「リソースの棚卸し」という活動と同じです。クライアントに自分自身にどんなスキルがあるのかということを気づいてもらうように、セッションの中で会話をしていきます。
やはり、問題解決というのは目的(ゴール)と課題(質問)を明確にするところから始まるということを再認識しました。