質問力がエンジニアをつくる
プログラミングはわからないことが多いからこそ、質問の仕方を極めていきましょう。
上手な質問をつくることには3つのメリットがあります。
・質問相手の時間を最小限に留める
・自分の時間を効率的に使える
質問力は、今後のエンジニア人生に大きな影響を与えます。質問がうまい人ほど要点をえているため、信頼されて仕事が回ってきます。
質問は恥ずかしいと最初は思ってしまいます。誰でも最初はわかりません。
正しい聞き方さえできれば、困っている人をないがしろにする人はいません。安心して質問しましょう。
質問方法
まずは結論、質問の仕方は次の5ステップです。
①前提を話す
②ゴールを示す
③何に困っているか
④どう考えて何を試したか
⑤その結果どうなったか
そもそも、わかりにくい質問とは何でしょうか?私は「いきなり各論を聞いてくること」だと思います。
「ここのコードを変更したらこういうエラーが出て~」という質問の仕方です。
こうした質問には必ず聞き返さなければなりません。「今何をしていて、何を実現したくて、どこまでできていて、どこからできていないのか」
この聞き返すやり取りをなくして「相手が考えるだけで完結する状態をつくること」が良い質問です。
具体的に見ていきましょう
前提を話す
前提を話すとは、いま自分がどんな作業をしているのか簡潔に話すことです。
当たり前と思われますが、驚くほどできる人は少ないです。ほとんどの人が「コードを見せて何に詰まっているか」から説明します。
相手は初見です。自分が何をしているか詳しく知りません。その状態でコードだけ見せられても、現状確認からしなければならないので、相手の時間を奪います。
まずは、簡潔に現状を説明しましょう。地図を広げた状態です。
ゴールを示す
自分が達成したいことの説明です。現状を話したあとは「どこにたどり着きたいか」を説明しましょう。ゴールがわからなければ、手段が適当か判断できません。
広げた地図に宝のありかを示した状態です。
何に困っているか
ここまできて、ようやく問題点の説明です。実装する方向性が見えないのか、エラーが発生しているのか現在の状況を簡単に説明します。
画像でエラーを示すなど共有できる情報は共有しておきましょう。
道が塞がれていて宝のありかまでたどり着けないことを伝えた状態です。
全体像を見せてから、実装したいゴールを示して、ここの部分で困っていると言う流れです。
どう考えて何を試したか
自分の行った行動を示すことで、相手が同じことをする時間を省きます。自分の確認方法が間違っていれば指摘してもらえます。
何をしたかだけを言いがちですが、大事なのは「なぜその行動をしたか」です。その思考が間違っていれば同じミスを繰り返してしまう可能性があります。
相手に自分の考えを伝えることで、考え方の違いに気づき、成長につながります。
地図を見たら裏から回れそうだから試してみた状態です。
結果はどうなったか
結果がわかれば、経験値の高い人であれば新たな可能性に気付くかもしれません。行動と結果はセットで伝えましょう。
断崖絶壁で行けなかった。という感じですね。
ここまで丁寧に質問できれば「ヘリ貸してあげるから宝とってきちゃいなよ!」といってもらえるはずです!積極的に質問しましょう。
質問例
最後に質問例をつくってみます。やっぱりイメージが大事ですよね。
【質問】ユーザー登録機能のViewの記述の仕方
■前提
チャットアプリのユーザー登録機能を作成中
■ゴール
ユーザーが入力した値にバリデーションをかけてデータベースに保存すること
■何に困っているか
入力した値がデータベースに保存されない。エラーメッセージは表示されない。
■どう考えて何を試したのか
問題点を切り分けるため、ログを出したところ、データがコントローラーまで送られていないのでView側の記述に問題がある。配列で値を渡す必要があるため、name属性の指定方法に誤りがあると考えて〇〇と修正してみた。
■結果はどうなったか
◯◯というエラー画面が表示された。どのように記述を直せばいいかわからない。
ここまで話せばまずname属性周辺を確認してもらえます。経験者ならその周辺を確認して原因を特定してくれます。
質問をする時は書き出してみるのが一番いいです。書き出した結果、自分の中で問題が整理されて解決してしまったというのは「エンジニアあるある」だと思います。
初めは難しいです。毎日積み重ねることでのみ質問力はついてきます。めんどくさいと思ってからが勝負です。
コメント