プログラミングで質問する時、「正解を知りたい」と考えがちです。しかし実際には、質問の目的は答えを受け取ることだけではありません。
質問は、止まっている問題を次の一手へ進めるための手段です。
質問前に4つへ分ける
| 要素 | 書くこと |
|---|---|
| 現状 | 今、実際に何が起きているか |
| 目標 | 本来どうなってほしいか |
| 差分 | 現状と目標のどこが違うか |
| 次の行動 | 何が分かれば作業を再開できるか |
たとえば「ログインできません」だけでは、確認範囲が広すぎます。
現状: 送信すると401が返る
目標: 正しいメールアドレスとパスワードでログインしたい
差分: 入力は通るが、認証APIで拒否されている
次の行動: 401のResponseと送信項目を確認したい
ここまで整理すると、質問する前に自分で原因へ近づけることもあります。
「分からない」の段階を言葉にする
分からない状態は一種類ではありません。
- 用語そのものを知らない
- 調べる言葉が分からない
- 候補はあるが選べない
- 試したが結果を解釈できない
- 原因は分かったが修正方法が分からない
「どの段階で止まっているか」を伝えると、回答者は説明の深さを合わせられます。
良い質問のゴール
良い質問は、長い質問ではありません。やり取りの後に次の二つが明確なら、問題解決に役立ったと言えます。
- 問題の構造が前より分かった
- 次に試す具体的な行動が決まった
答えを丸ごともらっても、次の行動を再現できなければ学びは残りにくくなります。逆に、原因の切り分け方が分かれば、似た問題にも対応できます。
まとめ
質問は知識不足を隠す場ではなく、問題を前進させる場です。現状、目標、差分、次の行動を分け、どの段階で分からないのかを言葉にしましょう。