2022年5月12日
|2022年5月24日
エラーが頻出するプログラミング学習において、分からないことがあるのは当然です。しかし、分からないことが出てくる度に一人で悩んでいては、学習効率が悪く、モチベーションも下がってしまいます。
そこで重要になるのが、質問をするということです。
しかし、質問することや他の人に頼ったりすることに慣れていない人もいますよね。この記事では、プログラミング初学者でも分かりやすいように、質問のテンプレートや良い質問/悪い質問の例示なども活用しながら質問の仕方を解説していきます。
この記事の目次
まず知ってほしいことは、質問という行為は、プログラミング初学者だけが行うものではないということです。
実を言うとベテランエンジニアでも分からないことは日常的にあるため、エンジニアの世界では、初学者・ベテラン問わず質問力が求められます。
質問をすることは、問題が解決できるだけでなく、質問に答える側にも気付きと発見をもたらします。分からないことが次から次へとやってくるエンジニアの世界にとって、質問と回答のプロセスは誰もが行う重要なことなので、恥ずかしがったりためらったりせずに、今のうちから質問に慣れていきましょう。
ただし、質問という行為は相手の時間を奪う行為です。必要以上の時間を取らせることは好ましくありません。具体的で分かりやすく、相手が最小限の時間で答えられるように質問を工夫し、お互い効率がよくなるよう「正しい質問の仕方」を学んでいきましょう。
質問することのメリットは、もちろん「分からないことが解決できる」ことですが、それ以外にも多くの利点があります。プログラミング初学者が質問をするメリットを3つご紹介します。
まず大きなメリットは、プログラミング学習に挫折するリスクを下げられるということです。
プログラミング学習は一定の期間を必要とするため、途中で挫折する人も多くいます。「分からない点を聞ける環境になかった」「エラーが解決できなかった」ことが原因となり、挫折や行き詰まりを経験している方が多いようです。しかし、プログラミングにおいて、分からない点やエラーは必ず出てきます。
もちろんそれらを自身で解決しようと試みることはとても大切なことですが、悩んだ挙句、問題解決できずに挫折してしまっては、元も子もありません。知り合いのエンジニアや質問掲示板、プログラミングスクールの講師など、他の人に頼って質問できる人は挫折しにくくなります。
質問をする際には、必ず「思考の道筋」や「現状の問題」を整理し言語化するという作業が伴います。この作業を繰り返していくうちに、問題の本質を論理的に見極められる問題解決能力が上がってくるでしょう。
数多くの質問を繰り返していくうちに、頭の中にエラー解決のための思考の道筋がどんどん蓄積されていくため、似た問題が発生した際に悩まず対応することができるのです。
問題解決能力が向上するということは、結果として自身のスキルアップや学習効率の向上にもつながります。
実際にエンジニアとして働く際にも、筋道立てて正しい質問ができること、自身で問題解決できるスキルを持っていることは非常に有効で、周囲から高い評価を得られることでしょう。
エンジニアにとって質問はコミュニケーションの一つです。特に新人エンジニアにとっては、質問が先輩エンジニアとの重要なコミュニケーションの機会となります。相手に配慮した効果的な質問の仕方に慣れておくことで、相手に良い心象を与えることができ、円滑な人間関係を築けるでしょう。
また、雑談でも質問力は役立ちます。良い質問ができる人は、質問を通して相手の関心ごとや考え方を引き出しやすいため、より深い信頼関係の構築に役立てられます。
質問することに自信がない人は、質問下手な人の特徴を知っておきましょう。もし自分が次の4つに当てはまるようなら、意識や考え方を変えておく必要があります。
ここから、それぞれについて詳しくみていきます。
質問のタイミングが分からない人は、相手の状況に過度に配慮していることが考えられます。相手への配慮は大事なことですが、そのせいで自分の時間が無駄になってしまっては、効率的とは言えません。
特にエンジニアとして就職した後は、問題解決にスピード感を求められます。自分の問題が解決しないと、チームとして働くエンジニア全体に影響を及ぼしますので、必要以上の遠慮は結果として迷惑を与えてしまうことも意識しましょう。
では、質問をする”適切なタイミング”とはいつでしょうか。
プログラミングの世界には、問題が起きたときの「15分ルール」というものが存在します。
「質問をする」という行為は、少なからず相手の時間を奪うことです。分からないことが出てきたとき、いきなり誰かに聞くのではなく、最初の15分間は本やインターネットなど、さまざまなツールを駆使して問題を解決しようと試みてください。
ただし、完璧に一人でやり切ろうとする必要はありません。15分後に解決の糸口も見えていなければ、それが今の自分の実力だと判断して、必ず人に聞きましょう。
ルール1を守らないと他人の時間を無駄にし、ルール2を守らないと自分の時間を無駄にしてしまいます。
時間は無限にあるものではないので、自分の時間も相手の時間も無駄にしないよう「15分ルール」の考え方を参考にしてみてください。
質問をしたくても質問できない人は、プライドが邪魔をしている可能性があります。「こんなことも分からないの?」と思われるのが怖い、無知な自分が恥ずかしい、自分の能力を過信してできない自分を認めることができない、などさまざまな心理があります。
しかし、教育側からすると初学者ができないことは大前提としているので、むしろ、質問をしてこない方が「やる気がない」「コミュニケーション能力が低い」と判断されてしまいます。基本的な質問であっても積極的に質問していきましょう!
プログラミングを初めて学習する人や新人エンジニアなどは、プログラミングの文法や処理の流れ、頻出するエラーなど、分からないことだらけです。自分が何で行き詰っているのかすら理解できない状況もあり得ます。そもそも「分からないことが分からない」状態だと、どのように質問をすればよいか分からず、質問をする行為自体、とてもハードルが高く感じるでしょう。
ここからは、「分からないことが分からない」状態から抜け出すためのポイントを3つご紹介します。
分からないことが分からない状態になる原因の1つは、専門用語の知識が不足しており、自分が行っている作業の全体像をイメージできていないことが考えられます。
まずは、スタートラインに立てるよう専門用語は確実に覚えましょう。専門用語のボキャブラリーが豊富になってくると、現状をより把握できるようになるため「分からないことが分からない」状態から脱しやすくなります。
分からないことを明確にするための重要な考え方が「問題の切り分け」です。問題が起こったときには、一つ一つの作業を分割して見直し、自分が理解できている部分、理解できていない部分を探る必要があります。理解できていない部分が明確になれば、その部分に自分がつまずいている原因があると予測できます。
ただ、切り分け方もわからない場合は「○○をしていてエラーが出たのですが、切り分け方がわかりません。教えてください。」と素直に聞きましょう。分からないことが分からない場合に効果的な質問の仕方です。
分からないことが明確になれば、後はそれを他の人に伝えられるよう言語化しましょう。
特に自分の思考の流れを他の人にも分かるように言語化することは非常に大切です。言語化できて初めて「分からないことが分からない」状態から脱したと言え、質問という行動に移すことができます。
言語化できた後は、まずGoogleなどの検索エンジンや書籍で調べてみてください。いきなり答えが見つからなくても、調べていくうちに自分の知識では言語化できなかった問題点や表現方法に出会い、さらに検索や質問の精度をあげていくことができます。言語化できることが増えるにつれ、分からないことが分からない状態の頻度も減ってくるでしょう。
「自分で調べるより人に聞いたほうが手っ取り早く答えが分かる」「答えだけ分かればそれでいい」という考えでは、いつまでたっても自分で解決できるようにはなりません。結果を教えてもらうだけでは、再び同じ問題に直面した時に、同じ質問を繰り返す可能性が高いでしょう。結果だけでなく、エラーが出たプロセスや解決するための考え方を理解することが大切です。
分からないことが出てきたとき、すぐ誰かに質問をするのはNGです。質問をする前に、まず自分でググってみましょう(ググる=Googleで検索して調べる)。
同じ悩みを抱えた人が書いた質問掲示板や、現役エンジニアが備忘録としてまとめているブログなど、インターネット上には膨大な量の情報があふれています。エラーが出た場合、とにかく調べてみましょう。解決に結びつく情報が得られるかもしれません。
ググってみて何か解決できそうなヒントを見つけたら、とりあえず自分でプログラミングしてみましょう。それでエラーが直るかもしれないし、直らなければ他の情報を探して、また試すことを繰り返します。
このように調査・考察・試行錯誤することが、自身のプログラミングスキルを確実に向上させてくれます。また、質問する際に「自分はエラーを解決するために○○を試してみました」と相手に伝えることで、解決策の選択肢を狭め、相手の思考の負担を軽減することにもつながります。
調査・考察・試行錯誤をある程度試し、自分の実力ではどうしようもないと判断できれば、現状を整理してまとめます。
自分の状況が分からないまま「○○が分かりません」と結果だけを質問しても、相手だって状況が分かりません。状況を知るために質問のラリーが増え、お互いに無駄な時間を使ってしまいます。問題を整理することが相手任せになっているので、また同じ質問を繰り返す可能性も高まります。自分なりに状況を整理してまとめる作業は、必ず行ってください。
整理の仕方が分からない人は、次のひな形を使用して整理してみましょう。
質問時のテンプレートを、問題のタイプ別に2種類ご用意しました。質問される相手が知りたい項目をまとめているので、そのままコピペして使ってもらうこともできます。
状況の整理や、状況を相手にわかりやすく伝えるためのフォーマットとしてご活用ください。
質問をして教えてもらったときに、「理解したフリ」や「理解したつもり」は絶対にしないでください。「理解したフリ・つもり」は「理解していない」に等しいので、後になって再び同じ問題に苦しめられます。
理解できなかったその時に「もう一度教えてください」と素直に言っていれば一回の質問で済んだことを、二回三回と繰り返すことで、相手と自分の時間を奪ってしまいます。何度も同じ質問をすることが申し訳なくなり、質問すらできない状況になっては、学習の挫折原因にもなりかねません。
質問をして、答えが分かったら「はい、おしまい!」ではありません。
自分のためにするべきこと、教えてくれた相手のためにするべきことをご紹介します。
質問に対する「答え」をもらい、エラーが直ったことに満足してしまうと、知識が定着しないまま、再び同じような問題に直面した時に、同じ質問をしてしまうかもしれません。ただでさえ忙しいエンジニアに対して、同じ質問を繰り返すのは大きな負担になります。
解決しっぱなしではなく「原因は何だったのか」「どのように解決したのか」を確認し、理解できていない部分があれば納得できるまで質問や調査をして手順を整理しておけば、同じようなエラーが出た時に自分で対処できるようになります。次に同じような問題が起きたときに、自己解決できるようにしておくことを大切にしてください。
質問をして教えてもらった方法を実行し、「結果はどうなったか」の報告とあわせて、お礼を必ず伝えましょう。
結果を報告しないと、相手は「問題は解決したのかな?」と不安になります。自身の業務をしていても、気になってあなたに結果を聞きに来るかもしれません。それは相手にとって無駄足なので、必ず結果がどうなったのか報告しましょう。また、解決するに至った経緯をすべて伝えておけば、質問に答えた人にとっても勉強になり、新たな発見があるかもしれません。
ここからは、実際の質問を想定しやすいように、エラーが出た場合の悪い質問例と良い質問例を見てみましょう。
まずは「悪い質問」の例。
この質問からは、「◯◯◯というエラーが出た」という結果だけしか分かりません。
相手は、質問に対して次のような疑問が色々とわいてきます。
■ そもそも何をしたいのか?
■ どんな操作をしてエラーが出たのか?
■ どのようなコードを書いたのか?
■ エラーメッセージを読んで何が原因だと推測しているのか?
■ 解決のために何を試したのか? …etc
情報量が少ないと、回答する側はありとあらゆることを想像しなければならないし、ベテランになるほど知識量が多くなるため、考えられる可能性が広くなります。
正しい質問の仕方をしていれば、回答する側も短時間で的確な答えを用意できるのに、情報の少ない質問ではやり取りが多くなってしまい、お互い無駄足になってしまいます。また、質問をされた相手は、問題を丸投げされたような印象を受け、不快感を抱くかもしれません。
先ほどの悪い質問例を、質問テンプレートを活用して良い質問例に直してみましょう。
※質問サイトなどを利用する場合は開発環境の情報も提示します。
プログラミング学習を挫折してしまう主な原因は、気軽に質問できる環境がないことです。完全オンライン・受講料無料の就職支援つきプログラミングスクール「学舎さくら」なら、専属の講師へチャットで気軽に質問できる環境を手に入れられます。
ほとんどの受講生が初心者であり、「分からないことが分からない」ようなプログラミング初学者でも、正しい質問の仕方から身に着けられます。分からないことがあれば、理解できるまで何度でも質問してください。
気軽に質問できる環境がなく、プログラミングに挫折しそう、行き詰っている人はぜひ「学舎さくら」で、質問できる環境を手に入れてみませんか。まずは、無料の個別説明会へのお申し込みをお待ちしております。
プログラミング学習や将来的にエンジニアとして活躍する場合において、「質問をする」ことは不可欠です。正しい質問の仕方を身につけて、繰り返すことでプログラミングスキルや問題解決力など、エンジニアに大事な力を向上させていくことができます。
質問をする場合には、問題に対しての理解を深めること、相手と自分の時間を無駄にしないことを意識して、事前準備を行いましょう。いきなり質問するのではなく、自分なりに調査・考察・試行錯誤し、質問前に状況の整理をすること。そして、状況をわかりやすく相手に伝える工夫をすることが大切です。
この記事の、質問テンプレートや例示を参考に、今後のプログラミング学習に役立ててください。
最新記事
プログラミング学習に暗記は不要!未経験から効率的に学習する方法
2024年4月18日
この記事の目次1 【結論】プログラミング学習に暗記は必要ない1.1 【理由1】すべて暗記するのは不可能なため1.2 【理由2】カンニングしてもいいため1.3 【
プログラミングに必要なパソコンのスペックとは?初心者向けの選び方
2024年4月18日
プログラミングには、最低限のスペックを備えたパソコンが必須です。とはいえ、初心者の人は「プログラミングに必要なパソコンのスペック」を把握していないでしょう。今回
インフラエンジニアのやりがい5選!向いている人や一日の仕事の流れも解説
2023年10月20日
ITエンジニアのなかでもインフラエンジニアに興味を持っており、「どのようなやりがいがあるのだろう?」と気になっている人もいるのではないでしょうか。 type転職