仕事に必要な質問力、というか、自分が質問をする時に気をつけていること

投稿日:

ただのメモであって、誰か特定の個人に向けて「質問するならこうしろ」「こういう質問の仕方をして欲しい」と強制する意図で書いたものではない。

先日こんなことをつぶやいて、

たまたま今日も、

というのを脊椎反射的に RT してしまったので、書いておくのには絶好の機会な気がする。 今年4月からの新社会人で、上司や先輩から ggrks と冷たく言い放たれた経験を持つ若者には、何らかしら役に立つ要素が1つ2つあるかもしれない。

質問する前にまずは自分で調べる

  • インターネットに繋がるなら、検索してみる
  • 単純にググるんじゃなく、一次ソースに近い所や公式に絞って検索する方が、解決が早い傾向が強い(体感値、俺調べ)

    • 例として Apache http server の mod_cache について分からないことがあった場合、"mod_cache apache site:httpd.apache.org" というキーワードで Google 検索すれば公式の情報が出てくる
    • 単純に apache + mod_cache + 知りたいこと で検索しても、ヒットするページは玉石混交なので、そこから答えを探し出すのは骨が折れる
  • Stackoverflow とか Qiita のようなコミュニティで検索する

    • 自分よりももっと先に困っていた人がいるはず

リファレンスがあるなら活用する

  • マニュアルを見る

    • Linux コマンドなら man
    • Emacs なら describe-function / describe-variable
    • Java なら javadoc, Ruby なら rdoc とか ri とか
    • 製品付属のマニュアル
  • ソースが入手可能 / 手元にある場合、読めば分かるようなものは自分で読む

    • もちろん実装した人に直接聞いた方が早いだろうが、質問することでその人の時間を奪って良いのか考える
    • 例えば共同開発者に質問したい、とかであればプロジェクト完遂のために最良の方法を採ればいい
    • 何よりもちゃんとソースを読むことで、質問したかった事の周辺にあるものについて、深い理解を得られる
    • 実装の ''意図を知りたい場合'' は、素直に質問する。それは聞かないと分からない。

質問方法を吟味する

  • その分からなくて知りたいこと、質問したいことは、自分以外の他の人も同じように質問する可能性があるか?
    • アーカイブが残る ML やチャット、 Web 上のフォーラムなど、履歴が残せる所に質問を公開する
    • 回答も公開され、後から質問する人が探せることを期待する
  • いつまでに回答を得たいのか?確実に回答して欲しいものなのか、できれば教えて欲しいレベルなのか?
    • Skype 便利だけど、流速の早いチャットに質問投げてもスルーされることがある
    • メールで返信が返ってくるまで待てることなのか?
    • 電話で聞くほど緊急度高いのか?
      • 緊急対応しなければならないサーバートラブルとかでなければ、履歴を残しにくい電話は避けたほうが良い

正しい相手に、適切なタイミングで質問をしようとしているか?

  • 例えば私に Vim のことを質問されても、満足のいく回答をすることは恐らくできない。それと同じようなことをやろうとしていないか?
  • 望んでいる回答を、一発で返せそうな候補は他に居ないか?
  • 食事中だったり、会議中だったりしないか?
    • 時差の向こうの、顔を直接見られない相手に対してやりがち

相手が回答するのに必要な情報を渡せているか?

  • エラーログや stack trace などの情報に過不足はないか?
  • トラブルが起こっている場合、発生している環境や再現手順を正しく伝えられているか?
  • 過剰に情報を渡しすぎていないか?質問される側は情報を全部読むのに時間がかかるが、本当に大丈夫か?

他にも思い出したら追記する。

それと、 2001年か2002年ころに読んだ 2ch のスレで、こんなことが書かれていた。

Aさんに「これ、どうやったらできるんですか?」という質問をするよりも、「Aさんがこれをできるようになるまでに、何を学んだんですか?」と質問する方が、後でよっぽど自分の為になる。

すでに .dat オチしているだろうし、文言も正確に覚えていないのでリンク貼れないけど、だいたいこんなような内容。当時ものすごく共感したので、今後もこの姿勢は崩さないようにしていきたい所存。