抱えている問題を誰かに相談している最中に、自分で解決策を思いついた経験はありませんか?
そんなときは爽快な気分になりますよね。でも、この現象を意図的に起こせるようになれば、他人の時間も浪費させずに済み、もっと良い気分になります。
ラバーダック・デバッグとは?
プログラミングの世界で「ラバーダック・デバッグ」と呼ばれているアプローチがあります。
問題にぶつかったとき、すぐに誰かの助けを求めるかわりに、自分で問題をよく考えるためのやり方です。プログラマーは変人が多いので、そのためにラバーダック(ゴム製のアヒル)に話しかけるという伝統があります。
ラバーダックにまつわるエピソードを1つ紹介します。あるところに、部下から相談されるのが大嫌いな上司がいました。その上司は部下から問題を相談されると、自分ではなく部屋に置いてあるアヒルのはく製に話せと言うのだそうです。
そして、ある若手エンジニアが、言われたとおりにアヒルに問題を説明しているうちに、答えが見つかることがよくあることに気づきます。
彼が本当にしなければならなかったのは、問題を言葉で表現するという作業だったのです。
良い質問ができれば、それだけ解決策も見つかりやすくなります。プログラマーのJeff Atwood氏は、このコンセプトを自身のサイトStack OverflowとStack Exchangeに組み込みました。
Atwood氏は、どうすれば、質問者が、他のユーザーが理解し、回答しやすい質問ができるようになるだろうと考えました。
回答する人がたくさんの補足質問を返さなくても済むようにしたかったのです。そこで同氏は、良い質問をするための要件を定義することにしました。
以下にそれを少し改変したものを紹介しますので、みなさま自身の問題解決に役立ててください。
各ステップそれぞれで、問題が解決する場合もあります。まだ解決していなければ、次のステップに進んでください。
1. 質問を言葉にする
思考をスローダウンさせるだけで答えが見つかることがあります。そのためには、問題を言葉で表現することです。声に出してもいいし、書き出してもかまいません。
ここで手抜きは禁物。声に出さず、「頭の中で話そう」とすると、思考に集中するためにエネルギーを浪費してしまいます。
ですので、メモアプリに入力したり、音声メモに話しかけて、きちんとアプトプットしてください。独り言を言うのが恥ずかしいなら、電話をかけるフリをするのもありです。
2. 詳細を付け加える
どういう経緯で問題を抱えることになったのですか? 問題を解決できなかったらどうなりますか?
質問文の一字一句を慎重に調べて、専門家でなくとも理解できるように書かれているか確かめてください。(問題を親や子どもに説明するつもりで)
コンテキストを付け加えましょう。
技術的な質問なら、
- 使っているブラウザ
- デバイス
- OSのバージョン
- 干渉の可能性のあるプラグイン
- 拡張機能
- アプリ
- 周辺機器
などを漏れなく書き込みます。
これはあらゆる種類の質問に当てはまります。
時間管理の問題なら、 タイムスケジュールをすべて書き出してください。
お金の問題なら、
- 収入
- 支出
- 負債
- 支払いの遅延
などの情報を追加します。
こうした詳細情報をもとの質問に併記してください。
それから、必要に応じてわかりやすい順番に並び替えてください。
3. ゴールを伝える
何がおかしいのかは説明していても、どうなれば正しいのかを説明し忘れている場合もあります。
望ましい結果と、現在の状況が望ましくない理由を説明してください。
どのような形の解決策が欲しいのか、解決したらそのうえで何をしたいのかを詳しく説明します。
また、望ましくない解決策があればそれも伝えるようにします(テック系ヘルプフォーラムには、質問者がとうてい受け入れられないような「解決策」がしばしば投稿されます)。
4. 自分でどこまで調べたかを伝える
もちろん、自分でも調べてみる必要があります。
Google検索もしないうちから、Twitterで質問を投げるようなまねはしないでください。調べたサイト、相談したフォーラムをリストし、そこでわかったこと、わからなかったことを書き出してください。
すでに誰かに相談していれば、その結果どこまで解決し、何が未解決なのかを説明してください。
また、相手に問題を理解してもらえなかったのなら、なぜそうだったのかも伝えてください。
5. 実際に質問をする
ここまでの作業をしても、まだ解決策が見つかっていないとしたら、さぞフラストレーションが溜まっていることでしょう。
でも朗報があります。
今やあなたは、非常にうまくまとめられた質問文を手にしています。その質問を同僚や上司、アドバイザー、フォーラムに投げかけてみましょう。
問題が解決したら?
その経緯と結果を自分のプログや、Redditに投稿してください。
メモアプリのスクリーンショットをツイートしてもかまいません。知恵の実をみんなにも分けてあげましょう。
あわせて読みたい
Image: stockfour/Shutterstock.com
Source: Stack Overflow, Stack Exchange, Live Journal, Coding Horror
Nick Douglas - Lifehacker US[原文]