10月からエンジニアになるための転職活動を開始しています。
6社カジュアル面談と2社1次面接を受けて、自分の課題に気づきました。
それは、「技術に関した質問に対して十分な説明ができない」です。
たとえば以下のようなものです。
- webサービスが動く一連の仕組みを説明できますか?
- データベースは作りましたか?どのような設計で作りましたか?
- 最近使っているクラウドサービスは?
- テストは書きましたか?どのようなテストを書きましたか?
説明できない原因はどこにある?
説明できない原因は以下の3つに集約されると思っています。
- 用語や概念の理解が足りない
- やったことがないのでわからない
- やったけど思い出せない
3つの中でも特に1.「理解が足りない」が最大の原因であると感じています。 たとえば「webサーバーとは何か説明してください」と言われて、「ええっと...」と詰まってしまう感じです。
これでは現場に入って関わる方々も困ってしまいます。
説明できるとはどういう状態か
「どうすれば説明できるようになるか?」を考えたときに、
そもそも説明できるとはどういう状態かというと、
「頭の中の情報をすぐに取り出して取得し操作できる」だと思います。
アプレンティスのメンターさんはこれを"再現性"と言っていました。
先ほどの「webサーバーとは何ですか?」と聞かれて、
「ちょっと待ってくださいね。今調べます」と言ってググるのは、
そもそも頭の中のメモ帳に「webサーバー」がない状態です。
例えばこれが「Rubyとはなんですか?」だったら、
何も見なくても「プログラミング言語の1つです。書き方がメソッド名がシンプルでわかりやすいです」と答えられます。
では、説明できるようになるにはどうすればいいのでしょうか?
説明できるようになるためにやっていること
僕がやっているのは、お題だけ用意して何も見ないで話す、です。
たとえば、「webサーバー」というお題で、真っ白な状態で話す、です。
※コワーキングスペースで学習しているので、実際に話すというよりは、頭の中で話すあるいは書き出したりすることが多いです。
何も見ないで話すと、自分がどこまで理解していて、何が理解できていないのかがわかります。
たとえば、「webサーバーは、ユーザーからインターネット経由でhttpリクエストが送られると、それに対してhttpレスポンスを返します」とします。
そしてその後、この回答が正しいのか、ググって調べます。
それで間違っているところを修正したり、足りないところを補います。
今までの学習法の反省および改善点
今まで、用語や概念でわからないことがあると、すぐ検索して調べたり、ChatGPTに聞いたりしていました。
その解説を見てわかった気になっていました。
しかし、その瞬間はわかった気になっても、次の日同じ質問をされたらまた調べないと答えられません。
つまり、理解していない=知識が自分のものになってないですね。
知識や情報を自分のものとして扱えるようになるには、ノーヒントあるいはキーワードのみでどこまで説明できるか?
を繰り返しやったほうがいいと思いました。
まだ始めて3日ぐらいなので、効果とか確認するには早すぎると思っています。 エンジニアとして生きていくために、ずっとやっていこうと思っています。
最後に
面接で「落選」の通知を見た瞬間は少し凹みますが、どの面接も必ず学びがあるので、とてもありがたいなと感じます。
エンジニアとして働き始める前に「説明できない」という課題に気づけたことで、「いつ質問されても答えられるように準備しよう」というつもりで記事やドキュメントを読むようになったので、プラスに捉えています。
現状は意識と少しの行動しか変わってないので、これを習慣にして、結果につなげたいと思います。