晩飯がまずかったんです。
よりも
チャーハンに隠し味で醤油いれたら、しょっぱかったんです。
のほうが何かしらアドバイスのしようがあるよね。って話です。
最近、それなりに経験を積み、ありがたいことに開発のリーダー的な立ち回りをさせてもらうことも増え、いわゆる新人プログラマな皆さんと関わる機会が増えました。
新人プログラマな方は経験が浅いこともあり、(特にバグ発生などに)質問を受けることがよくありますが、たいていの場合はイマイチ要領を得ない質問であることが多いです。
そういった時に「もっとこういう風に質問してくれ〜」と伝えている内容をまとめてみようと思い立ちました。
簡単な自己紹介
新卒からエンジニアをしていて、今年で5年目です。
セキュリティ中心にインフラ系エンジニアを2年半→web系エンジニアを2年ほどやっています。
web系に転向してからは、python / java / nodejs などバックエンドを中心に、フロント系も少しだけやっています。最近はpythonにはまっています。
先輩エンジニアが思っていること
質問するにあたって、質問相手がどう思っているのかを把握するのはとても大事なことです。
他人のことに関心を持たない人間は苦難の道を歩まねばならず、他人に対しても大きな迷惑をかけることになる。人間のあらゆる失敗はそういう人たちの間から生まれるのです。
アルフレッド・アドラー
苦難の道を歩む確率を少しでも減らすために、先輩が考えていることを先に知っておきましょう。
効率的に進めてくれ
多くのエンジニアは基本的に物事を効率的に進めたいと考えるタイプの人間です。
そう考えると、「わからないまま悩む」という非効率よりも、「先輩に聞いて理解する」という効率を求める人の方が多いのは明白です。
初心者が1時間悩んでもわからないことでも、慣れてる人なら5分で終わる場合があります。
「みんな忙しそうだし…」で1時間無駄にされるくらいなら、自分の時間を5分使った方がマシだと、たいていの諸先輩は思っています。
まれに、「わからないこと」を説教するタイプの人もいますが、そんな人は最低なので、別の人に聞いてください。そういう人は大体すでに嫌われています。
他の先輩と仲良くなる話のきっかけができたなぁくらいの気持ちで、別の先輩に教えてもらいましょう。
わからないことをわからないと言って
人は忘れる生き物です。(ほぼ)どの先輩エンジニアも人です。
つまり先輩エンジニアは、自分が新人エンジニアだったときのことを忘れています。
なので、新人エンジニアが躓いていたとしても、このくらいなら一人で大丈夫だろうとほったらかしてしまうことが多々あります。
あれは意地悪をしているんじゃありません。あなたが転んでいることに気づいていないのです。
大声をあげて、転んでいることをアピールしてください。
話の途中でもわからなければ止めてください。わからないまま説明する時間は紛れもなく無駄な時間です。
わかった時はわかったリアクションをして
先ほどの逆です。
多くの先輩方は、質問を受けた以上は後輩くんに理解してもらえるように説明しよう。という責任感に襲われています。
なので、説明している最中も、これで伝わってるかなぁと結構不安です。
そんな時にわかった時にリアクションがあると安心して話をすすめられます。
それに、わかっている時にリアクションがあると、逆にリアクションがない時は「いまいちわかってないのかな?」と説明を出すこともできます。
先輩に「あなたの理解度検知機能」を実装するためにも積極的にリアクションを取ります。
正しい質問の仕方
「ゴール」「やったこと」「現状」 を明確に含んで質問をしてください。
文章化するのが辛ければ、「ゴールは~~です」「~~をしました」「~~と表示されました」と箇条書きでもいいので、そのまま伝えてください。
なぜそうするのか
エンジニア(というより人間)は知識と過去の経験から最適な行動を導き出す生き物です。
どんなに凄腕なエンジニアでも、なにかを判断する時には脳内のGoogle先生で検索していると思っていいです。
Googleで検索するときは検索ワードが必要ですよね?
バグを引いたあなたは、バグが発生する過程を事細かに見ていたことだろうと思いますが、
senpai != you
ですので、「なんか動かなくなりました!!」と言われてもこちらとしては、知らんがな。です。
突然「昨日の晩御飯がマズかったです。どうしたらいいですか」って言われても、「それは辛かったね」くらいしか言えませんよね?
それよりも「昨日チャーハンつくったんですけど、隠し味に醤油を入れたら、しょっぱくなりすぎました」と言われた方が、アドバイスしやすいです。
(ゴール)→チャーハン
(やったこと)→醤油を入れた
(現状)→しょっぱい
です。
こう言われると「なにを当たり前な事を…」と思うかもしれませんが、実際多くの新人君たちはこれが出来ていないと感じます
でなければ、僕が仕事中に「あぁ!そういうことね!」と後輩に言う回数はもっと少ないはずです。
どう実践すればいいのか
簡単です。
箇条書きの形式で紙に書き起こせばいいんです。
ここでいくつかポイントがあります
「やったこと」は出来る限り漏らさず書く
特に操作の前後関係や、回数に関する部分は明確にしてください。
X回以上やったらバグる。みたいなことがわかっていれば「ループまわりの処理が良くなさそうだな…」とあたりをつける最高の材料になります
書くのがめんどくさいと思うほどの文章量にしないこと
これはひとつ前と相反しているようにも見えますが、そんなことはありません。
大事なのはめんどうな量の「文章」を書かないことです。
箇条書きでたくさん書く限りは問題ありません。
今まさにバグって困っているあなたが「めんどくさい」と思ってるほどの文章量は、特に困っていない先輩としては「苦痛」以外の何物でもありません。
原因がわかった後にそのメモを見直す
これが一番大事です。これさえちゃんとやれば、1,2は勝手に出来るようになると思います。
ちゃんと原因がわかった後に見直すと、自分がした「やったこと」のどこが間違っていたのかハッキリと見えると思います
これ意図的にすることで、「次はもっとこうしてみよう。」という気づきが生まれます。
わりと単純な内容ですが、上手に質問できることはれっきとしたスキルだと思うので、ぜひ試してみてください。
ご意見などあればコメントでお知らせください。