※ 本講座は、動画コンテンツが未作成です。

はじめに

プログラマーとして仕事をする上で、「質問する」というコミュニケーションは実際の現場でもよく見かけます。

この「質問する」という行為は、いわばひとつのスキルです。

適切な質問ができるようになると、以下のようなメリットがあります。

  1. 学習効率がアップし、質問に回答してもらいやすくなる。
  2. 自己解決能力が上がり、自立した人材になれる。
  3. 採用も評価もされやすい人材になる。

      まさに、いいことづくしですね!

      ねこくん
      でも質問の方法なんて全然考えたことなかったよ。どうすればいいの?

       

      ということで、今回は 適切な質問の仕方 について解説していきたいと思います。

      いい質問とイマイチな質問

      いい質問とイマイチな質問の具体例

      まずは、いい質問とイマイチな質問の具体例を見てみましょう。

      いい質問

      〜の環境構築を行なっているのですが、以下のようなエラーが出ています。

      (コマンドのコードがテキストで見やすく貼られている)

      上記エラーをもとに、以下のような調査を行いました。

      1. 【調査した内容】
      2. 【調査した内容】

      これらから、問題の原因は〜だと推測し、以下の対応を行いました。

      1. 【実施した対応】
      2. 【実施した対応】

      しかし、いずれの対応をしてもエラーログも変わらず、行き詰まっています。エラーの原因の推測が的外れでしょうか?

      どなたかご存知の方はコメントいただけると助かります!

      イマイチな質問

      このコマンド打ちました。

      (コマンドのスクショが貼られている)

      エラーしました。どうすればいいですか。

       

      いい質問の何がいいか

      上記の例を見比べながら、いい質問の何がいいのかをみていきましょう。

       

      • いい質問は、自分自身でエラーの原因を調べ、自己解決を試みている。
      • いい質問は、どこまで調べて何がわからないのかがわかりやすく、質問に対して回答がしやすい。
      • いい質問は、原因の推測に至る過程も書かれているので、「よりよい調べ方」などのアドバイスももらいやすい。

       

      対して、イマイチな質問は、逆に質問を受けた側が質問し直さないと原因が特定しにくかったりしますし、次に同様の問題が起きたときも同じような質問を繰り返してしまいそうですよね。

       

      質問するのは、もちろんなかなか解決できない問題を解決するためではあるのですが、将来的に一人前のエンジニアとして働くためには

      • エラーを元にググったり
      • 公式ドキュメントを読んだり
      • (レベルが高くなると)ソースコードを読み込んだり

       

      を息をするかのごとく、当たり前にする必要があります。

      解決法そのものを知るだけでは、いつまで経っても自力で解決する力がつきません

      なので、学習効率を上げるためにも、いい質問ができる必要があるわけです。

      適切な質問ができる人材は評価されやすい

      いい質問ができることによるメリットをもう少し深掘りしていきますね。

      とだくんがめっちゃいいこと言ってるので、ちょっと覗いてみましょう。

       

      結論ですが、プログラマーが転職で採用される為に大事なのは「なんとかしそうな感じ」です。

      要は「自己解決能力が高そうな人」ということなんですけど、この「自己解決能力」ってすごく大事なんですよね。

       

      この記事を読んでいただけるとわかりますが、質問が下手だと、なんとかしそうな感じが皆無なんですよね。

      うまく質問できる方は、「回答者が答えやすいように自分の時間を使い、配慮している」わけで、そういう質問をする方は、人の時間もあまり奪いません。すると、プロジェクト全体の業務効率も上がるので、採用にメリットが生まれるんです。

       

      プログラマー
      めちゃ一緒に働きやすいし、いい感じになんとかしてくれる!
      ありがたいな!

      と思われます。

       

      採用にもつながりやすくなりますし、会社員であれば評価されやすく給与アップ、フリーランスであれば案件継続してもらいやすくなる わけですね。

      具体的にどうやって質問するか

      メリットがよくわかったところで、まだイマイチいい質問の仕方がわからないと思います。なので、初めのうちは以下の質問のテンプレに沿って質問をしていきましょう。

      質問する際のテンプレ

      先ほど提示した「いい質問」の具体例だと少し使いにくいので、もう少し一般化したものが以下になります。

      〜について調べている中で、以下のエラーが発生しました。
      
      【実行したコマンドや、エラーログを貼る】
      
      上記ログのうち、「〜」をもとに調べてみたところ
      「〜」という理由から「〜」が原因でエラーしていると予想し、以下のことを実施しました。
      
      【やったことを列挙(参考リンクを読んだ方がわかりやすいと判断すれば、それも添付)】
      
      これらの対応から「〜」が原因かと仮説を立てていますが、
      いずれの対応でも問題の解決に至りませんでした。
      
      原因または解決法をご存知の方はコメントいただけますと幸いです。

       

      このテンプレを使うと、以下の点が具体化されます。

      1. 問題点
      2. 試したこと
      3. 思考の軌跡

       

      すると、何で困っているのかもわかりますし、何を試してダメだったかもわかるので余計なやりとりが発生せず、考え方や推測に改善点があれば指摘してもらえるわけです。

      ぜひ使い倒してみてください!

      エラーが出たら何をするか

      さて、質問をする際に色々と自分で調べたほうがいいことはわかりましたね。ただ、はじめのうちはどうやって調べたらいいのかも、わからないことが多いので補足しておきます。

      ログを読め

      ログというのは、例えばコマンドを叩いたりしたときの履歴・記録のことです。

      例えば、Ruby のバージョンを確認するために、 ruby --v というコマンドを実行したときの、ログをみてみましょう。

      $ ruby --v
      Traceback (most recent call last):
      ruby: invalid option --v  (-h will show valid options) (RuntimeError)
      

       

      ログに慣れていない方は、もうここで

      ねこくん
      わけがわからん

       

      と思ってしまうかもしれませんね。ですが、ログは、解決のためのヒントです。

       

      プログラミングをやる以上、ログを読むこと、すなわち英語のテキストの意味を理解することは避けて通れません。

      ここに出ている英単語で意味を知らないものがあれば、Google 翻訳に頼るだけでなく、できるだけ単語の意味自体を覚える努力も同時にしていきましょう。ポイントは、調べるついでに覚えることです。(そうすることで、頻出英単語は自然と覚えるため)

       

      さて、ここのログで何を伝えているかというと

      ruby: invalid option --v

      --v は不適切なオプションです。

      -h will show valid options

      -h で、有効なオプションが表示されます。

       

      とあります。調べてみると --v というオプションではなく、 -v (または --version)というオプションで、Ruby のバージョンを確認することができることがわかりました。

      $ ruby -v
      ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
      

      ということで、正しく Ruby のバージョンが表示されましたね。

       

      ログを読み理解することは、英語が苦手な初心者ほど甘く見がちですが、とても大事なことなので覚えておきましょう。

      ログをもとにググれ

      エラーログを読んでも、やるべきことが明確でなく、何をしたらわからないことも多々あります。そういったときは、エラーログをコピーしてググりましょう

      ここは必要になったら追記します。

      公式ドキュメントを読め

      公式ドキュメントは、ほぼすべて英語なので英語に苦手意識があると避けがちなんですが、最新の正しい情報は公式ドキュメントにあります。

      例えば、Qiita の記事などは、更新されずに放置されているものはたくさんあります。

      すると、情報が古いがために、その通りにやっても解決されなかったりするんですよね。で、公式ドキュメントを読んだらすぐに解決できたりします。

       

      ここは英語に臆さず、少しずつでも読む意識をつけないとなかなか改善されません。触れる機会が増えていけば、自然と経験値も溜まっていきますし、楽にもなっていきますので、とにかく英語から逃げないでください!

      Slack で質問をするときの工夫

      ここからは、より具体的な注意点になります。

      コードのスクショを貼り付けない

      Slack は、画像の共有もドラッグ&ドロップで簡単にできてしまうので、とりあえずスクショ撮って投稿しちゃいがちです。

      ですが、この方法だと「回答者が検索しづらい」んですよね。

      どういうことかというと、当たり前ですが、スクショはコピペができません

       

      回答者も、質問を受けて、何か調べたり回答するときにコマンドを貼り付けたりしたいのですが、それが画像だと、スクショを見ながら直打ちせざるを得ない んですよね。

      そこで、ぜひ実践して欲しいのが、以下の2つです。

       

      1. スニペットの利用でコード(ログ)を見やすくする
      2. バッククオート3つで囲んでコード(ログ)を見やすくする

       

      スニペットの利用でコード(ログ)を見やすくする

       

      スニペットを利用すると、プログラミングコードがいい感じにハイライトされて投稿できます。ただし、スレッドでの返信では使えないので、質問を投稿するときに使うと便利です。

       

      バッククオート3つで囲んでコード(ログ)を見やすくする

       

      スレッドでは、スニペットの利用はできません。なので、基本的にこちらを使いましょう。Slack の説明だと少しわかりにくいですが、バッククオート( ` )3つで囲って、以下のように記入すると、囲んだ部分が見やすくなります。

       

      こういった工夫は、本当に小さな工夫ではありますが、極力無駄な作業が発生することは省いていくようにすると、とても喜ばれます!(特にエンジニアは!)

      もちろん、コード以外のブラウザに表示される画面などは、普通にスクショで共有で OK です。

      1つのコメントで1つの質問を書ききる

      Slack は、コメントに対して返信する「スレッド機能」があります。

      このスレッド機能は、「1つのコメントに対して返信するかたちで」スレッドが作成されます。

      そこで、質問自体を細切れにしてしまうと、どのコメントに対して返信すればいいかがわかりにくくなってしまいます。後からチャンネルを見た方でも、自分に関係のある情報が探しやすくなるという点でも、1つのコメントで1つの質問を書ききる ようにすると Good です!

      まとめ

      いい質問ができるようになることは、本当にメリットだらけなんです。

      1. 学習効率がアップし、質問に回答してもらいやすくなる。
      2. 自己解決能力が上がり、自立した人材になれる。
      3. 採用も評価もされやすい人材になる。

       

      いきなり完璧な質問ができるようになれ!とは言いません。このテキストを1回読んだだけでは、明日になったら半分は忘れてしまうでしょう。

      でも、質問は何度もすることになりますし、その度に少し思い出してあげてください。そうすれば、少しずつよくなります!

      参考

      以下の記事もかなり参考になります!

      15分頑張って調べてダメなら聞くルールは結構おすすめ。

       

      Take off Rails の紹介

      本記事は、仕事で使えるスキルを身につけるための Ruby on Rails 教材 である Take off Rails のコンテンツのひとつです。

      質問の仕方を教えるのも、これができないと実務でとても困るからなわけです。趣味ではなく、実務レベルのスキルを身に付けたい方はぜひ受講をご検討ください。詳細は以下。