目次
プログラミング学習をしていると、必ずわからないことやどうしても解決できない問題が出てきますよね。
こんな時、プログラミング講座を受講していれば講師に質問できますし、独学の場合でもWeb上のコミュニティで質問を投げ掛ければ誰かが答えてくれるのがインターネットのいいところです。
しかし、質問をしても「もう少し詳しい状況説明がないとわかりません」等と逆質問を受けたり、何だか講師の人と噛み合わなくて何度もやりとりをしたり…といった経験はありませんか?
それ、もしかするとあなたの質問のしかたに問題があったのかもしれません。
この記事ではプログラミングにおける正しい「質問のお作法」を解説します。
質問のお作法が身に付けば、自分や相手の時間を無駄にせず効率的に問題解決できるようになるので、これまで意識したことがなかった方はぜひご一読ください。
「第○○回目講座のコードを自分でも書いて実行してみましたが、エラーになってしまいます。どうすれば解決できますでしょうか?」
よく目にするタイプの質問ですが、実はこれは悪い質問の典型例です。
何がいけないのでしょうか。
「どうなっていたら成功なのか?」(何がしたいのか)の部分がありません。
この質問では講座を指定しているので講師には詳しく書かなくても伝わる可能性はありますが、自由入力に対して何らかの処理をして返すようなプログラムだったりすると、質問者が一体何を入力してどんな結果を想定していたのか見当がつきませんよね。
ここがわからないとその後の話がこじれてしまいます。
ひとことに「エラー」といっても様々な種類があります。
変数への参照エラー、指定されたパスにファイルがない、無限ループ等、枚挙にいとまがありません。
プログラムに問題があるのか、実行環境に問題があるのか、その切り分けですら手がかりがないので何のアドバイスもできないことになってしまいます。
一般的に「何かわからないことがあればすぐに人に聞く」のが良しとされる業界もありますが、プログラミングやITの業界では「検索サイトで調べてすぐに出てくるようなことは人に聞かない」「15分くらいは試行錯誤してみる」のが最低限のマナーとされています。
「知を集約してタスクを効率化し人々を単純作業から開放する」ことこそがプログラミングの最終目的であり、それに反することは好まれないからでしょう。
自分で試行錯誤した内容とその結果が書かれていないため、どこが悩みどころなのか?が伝わりにくくなっています。
先述のポイントを一言でまとめると、質問してから解決までの間にだらだらと時間がかかってしまうのが特徴です。
もちろん、質問した内容自体が難解なテーマでありその解説に時間がかかってしまうこともありますが、そのような場合は本質的な部分に時間をかけているので問題ありません。
質問を受けた側が「何がわからないのか?」「どんな答えを求めているのか?」を把握するための本質的でないコミュニケーションの部分に時間がかかってしまうのが問題なのです。
プログラミングの業界では特にロジカルな人が多いため、質問をした時にゴールの明確化や課題の言語化、問題の切り分けといった部分が甘いと「できないプログラマーだな」とレッテルを貼られてしまうことがあります。
教えることや説明すること自体は、それを通して自身の理解を深めたりすることもできるため好きな人が多いです。
そのためこれらがきちんとできていれば好意的に教えてくれますが、できていなければ「またこの人か…」と嫌な顔をされてしまうかもしれません。
先輩方を困らせないためにも、現場に出る前の今のうちから質問のお作法を身に付けておくのがとても重要です。
それでは、どんなことに気をつければいいのでしょうか。
次のポイントさえ押さえれば恐れることはありません。
先ほどの「悪い質問」にならないよう、裏返しのことをやっていくだけです。
単に「第○○回講座のコードを実行した」だけではなく、それがどんなコードで、実行するとこういう結果になる想定である、というところまで書きましょう。
例えば「自分の姓を文字列で入力するとその文字数を返してくるプログラムで、『Nakamura』と入れたら『8』が返ってくるはずです」などと書くといいでしょう。
原因を特定するために必要なので、最低限下記の内容は盛り込むようにしましょう。
これが最重要です。エラーの内容をヒントに、自分なりに調べて方法を試してみるだけでも様々な知見が得られますし、うまくいけば自力で解決できてしまうこともあるでしょう。
もし解決できなくても、「この方法を試してみたけれど今度はこんなエラーが出てダメだった」ということを質問に追記できれば、質問を受けた側にとってもより具体的なヒントになります。
プログラミングにおける「質問のお作法」について解説しました。
お作法というと堅苦しい感じがしますが、肝要なのは「相手と自分の貴重な時間を無駄にしないよう丁寧にコミュニケーションする」ということです。
ここで説明したポイントを押さえていれば問題ありませんので、気軽に質問しながら慣れていくのがいいでしょう。
もちろん、質問前の試行錯誤のフェーズは自分の学習にも役立ちますので忘れずに行ってくださいね。
オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!
プレミアムプランを2週間無料体験しよう
今すぐ詳細を確認する