TL;DL
未経験からIT業界に入った際、先輩方から質問・相談の聞き方が悪いと、しこたま怒られたので、自分のような新卒を生み出さないために、今まで教えてもらった伝わる聞き方を記します。
全体
以下の順序で話すと伝わりやすいです。
- 質問・相談の概要
- やりたいこと(目的)
- やったこと(対応)
- 結果どうなったか
- 何が問題か
- 他の解決策(自分で把握していたら)
- 解決策のメリット・デメリット
いくつか例として会話形式も載せています。
※会話の内容は超適当なのでご容赦くださいm(__)m
1.質問・相談の概要
悪い例
新人( ´・ω・`)「すみません、このコードの○○の部分の◇◇◇がd」
先輩(# ゚ Д゚)「まず何の話か言えやあぁぁぁぁぁ!」
新人( ´;ω;`)「すみません……」
兎にも角にもまず何についての話なのかを相手に伝えましょう。
これがないと何について話しているのか相手は分かりません。
更に相手が質問に答えられるかどうかを聞くとベストです。
概要を話した後だと、相手は答えるのにどれくらい時間がかかるかある程度分かることもありますので。
2.やりたいこと(目的)
悪い例
新人( ´・ω・`)「この○○の部分の実装なんですが、ここがうまくいかなくて……」
先輩( ゚ Д゚)「ほんならxxxっていう関数を使って、ここをこうしてこうしたら動くで」
新人(`・ω・´)「ありがとうございます!」
~レビュー時~
先輩( ゚ Д゚)「ん?ここ新人君がこの前聞いたところやな。何でこんな実装してるんや?」
新人(`・ω・´)「あ、そこは○○という機能が必要だったので、その処理を書きました!」
先輩(#゚ Д゚)「アホンダラァァァァァァァ!その機能でこの実装やと□□□や■■■の時にバグるやろがい!もっといいやり方があるわ修正せんかいボケェ!」
新人( ´;ω;`)「す、すみません……」
先輩は実装時の細かなフローしか聞かれなかったため、ただフローを動かす方法を答えただけなので、↑のようなことが起きてしまいました。(「いやそこは先輩が何の機能なのか聞けよ」という話は無しでお願いします)
自分がやりたいことは、かならず伝えましょう。
自分がやりたいことを伝えることで、その後話す「やったこと」が間違っていたり、もっといい方法を教えてもらえるかもしれません。
3.やったこと(対応)
悪い例
新人( ´・ω・`)「すみません、○○の件で■■の機能を作りたいんですが、エラーを吐いちゃってて」
先輩( ゚ Д゚)「おう、それで?」
新人( ´・ω・`)「え?いや、エラー内容がよく分からないから相談しt」
先輩(#゚ Д゚)「お前の目の前の機械は飾りか調べろボケェェェェェェェェェェェェ!」
おそらく先輩が期待したのは「○○というエラーを吐いているけど、■■や△△△等を試してもだめだった」とか、最悪「○○というエラーを吐いているけど、ググっても怪しい部分がよく分からない」とか調べたこと前提の質問だったのに、ろくに調べもせず聞いてきたからキレたんですね。
上記の例でいうと、エラー文はググれば和訳があります。場合によっては解決策まで書いている人もいます。
特にエンジニアは調べたら分かるものを聞かれる事をとにかく嫌いますので、問題に直面したらまずは自分で調べる癖をつけましょう。
先輩によっては、ググり方等効率の良い調べ方まで教えてくれます。
5. 何が問題か
悪い例なし(ここを端折る人はいないと思うので)
はい、ここが肝ですね。
新卒や未経験プログラマは、とにかくこの部分を一番最初に話してしまうため、うまく伝わりません。
1~5を伝えてから、何が問題かを伝えましょう。
6.他の解決策(自分で把握していたら)
これは自分が解決策を思いついてはいるけど、本当にこの方法で良いのか不安な時に聞くといいでしょう。
7.解決策のメリット・デメリット
これは6あってのものです。
メリット・デメリットを伝えるということは、自分が思いついた方法でどんなことが起こるのかちゃんと把握しているという証左です。
6,7含めて伝えられるようになると、相手からの評価も上がると思います。
最後に
上記手順でのフローを見てみましょう。
新人( ´・ω・`)「すみません、■■のプロジェクトのissue#50についてちょっと分からないことがありまして……質問大丈夫でしょうか?」(1)
先輩( ゚ Д゚)「おうええで、今は大丈夫や」シンジンノセキクルー
新人( ´・ω・`)「ありがとうございます。このissueを対応するにあたって、○○の機能を実装したくて、xx1のモデルにメソッドを作ったんですが」(2)(3)
新人( ´・ω・`)「このメソッドの30行目の部分でエラーを吐いちゃうんですよ」
新人( ´・ω・`)「エラーの内容は調べたんですが、これを解決すると別の部分でエラー吐いちゃって……」(4)(5)
新人( ´・ω・`)「これも調べてみると、モデルじゃなくてコントローラーにメソッドの中身を置くことで解決しそうなんですが、コントローラーが汚くなっちゃうんですよね……」(6)(7)
先輩( ゚ Д゚)「そうやな、この場合はコントローラーに書くんやなくて、xx2のモデルに書くとええで。そんでxx1のモデルからうんたらかんたら」
新人(`・ω・´)「あ、なるほどそうすれば良かったのか!」
先輩( ゚ Д゚)「ちゃんと調べられてエライやないか。この調子で頑張りや!」
新人(`・ω・´)「ありがとうございます!」
こうして新人君は怒られることなく問題を解決できました。
めでたしめでたし。
参考
もっとわかりやすく書いている人がいた