プログラミング学習における質問の仕方

Javaコース講師の原田です。

プログラミング学習をしていると、エラーが出たり、環境構築でこけたり、プログラミング経験者に質問しないと解決できない!という問題が発生しますよね。

しかし、こんな時に

「今の状況をどう伝えたらいいのかわからない。」
「知識がないと思われるだろうか」

と、質問に対して億劫になる方もいらっしゃると思います。

そのため、今回はプログラミング学習における「的確な質問の仕方」をご紹介していきます!

質問の大前提

まず質問の大前提をお伝えしていきます。
質問は「質問を通して自力で課題解決する力を身につける」ためのものです。

意図をお伝えしていきます。
SEに求められる力はいくつかありますが、コミュニケーション能力・課題解決能力の二つは、「求める人物」として採用時にも挙げられる能力です。

つまり、SEという仕事は、他者とのコミュニケーションを通して、もしくは自力で課題を解決することの連続です。

どちらも重要ですが、いざとなれば自分で解決できる力をつけておく必要があります。
そのため、質問はSEとしての自力、課題解決能力を培うために効果的に使います。

悪い質問の仕方

では早速、質問の仕方に移っていきます。まずは、悪い質問の仕方から学びましょう。
悪い質問というのは、解答を手に入れることはできるものの、課題解決の試行錯誤が不足している状態です。
以下は、よくある質問の例ですが、先程の大前提である「課題解決能力を培う」ためにはあまり向いていません。

例)
ユーザの入力を受けて、指定した動物の大きさを1~100cmの間の乱数で出力するプログラムを作っていました。うさぎと入力したら、1000cmと出力される理由がわかりません。
※実行結果の画像を貼る

この質問を最後の節で、的確な質問へと改善していきましょう!

的確な質問の仕方

では最後に、的確な質問の仕方をご紹介します。
コツは、講師が調べるに当たって必要な情報を過不足なく伝えることです。
過不足なく伝えるためには、下記5つの項目を伝えます。

  1. どんな機能を作ろうとしていたのか
  2. 期待する動作・実際の動作
  3. エラー内容
  4. ソースコード
  5. どこまで調査を進めてどこからわからないのか?

各項目の内容は、例をもとに以下で解説していきます。

どんな機能を作ろうとしていたのか

問題文なしでは、どのようなプログラムが正解なのかがわからないため、機能の概略を伝えます。

例)
ユーザの入力を受けて、指定した動物の大きさを1~100cmの間の乱数で出力するプログラムを作っていました。

期待する動作・実際の動作

プログラムで期待していた動作と、実際の動作の差異を伝えます。

例)
◆期待する動作
1~100cmの間の大きさが出力される
◆実際の動作
1000cmと出力される

エラー内容

エラーの原因を突き止めるためには、エラーコードとエラーメッセージが必要です。
※今回の場合はないので割愛します!

ソースコード

コードがないと検証のしようもありませんね。

例)
public class KeyboardInput {
public static void main (String[ ] args) {
System.out.println("好きな動物はなんですか?");
String animal = new java.util.Scanner(System.in).nextLine();
Random rnd = new Random();
int randomSize = rnd.nextInt(1000) + 1;
System.out.println(animal + "は" + randomSize + "cmくらいですか?");
int size = new java.util.Scanner(System.in).nextInt();
System.out.println(animal + "は" + size + "cmなんですね。");
}
}

どこまで調査を進めてどこからわからないのか?

ここが課題解決能力向上の肝です。

自力で調べてどこまで理解できて、どこからが理解できないのか。
または、「○○」と検索したが調べ方が間違っているのか?
調べた内容を確認して、「○○は☓☓」と認識したがその認識に間違いがあるのか?

等々、⑤の内容で、試行錯誤を積み重ね、講師の経験値を盗むことができ、自力の課題解決能力の成長が決まってきます。

例)
1000という値になっていることからメソッドの引数定義に間違いがあると考えていますが、その認識で問題ないでしょうか?

以上、プログラミング学習における「的確な質問」の仕方をご紹介してきました。
より課題解決の試行錯誤を積み、質問力を高めることで、自力で課題解決できる能力を伸ばしていきましょう。