自チームのエンジニアに System Design Interview をやってみた

エンジニアのスキルレベルチェックという文脈で System Design Interview が気になっていたので、自チームのエンジニアにやってみた。

System Design Interview とは?

ググれば出てくるので説明は割愛します。

どうやって実施したのか?

チームメンバーには System Design Interview のことは伏せて、 ミーティング開始時に「System Design Interview をやります」って感じで始めたので、 System Design Interview を受けた経験のある人以外は初見で取り組むことになった。

実施時間は System Design Interview 自体の説明も込みで大体30min~60minくらいだった。

System Design Interview の内容自体はそんなにひねったものでもなく、教科書通りだったと思う。 ただ、自分が副業でシステムアーキテクチャ周りの技術支援をしていることもあり、 それを通しての要素?みたいなものは盛り込んだ。

実施するたびに自分自身もインタビューの進め方をブラッシュアップしていったので、 一番最初に受けた人よりも最後に受けた人の方がやりやすかったと思う(pospomeの説明がスムーズだったり、ヒントが多かったり、特定の回答を引き出すための質問を用意したりしました)。

実際にやってどーだったか?

エンジニアとしてのレベル感がそのまま結果として出る傾向にある

一番印象に残ったのはエンジニアとしてのレベル感がそのまま出るという点だった。

現在はググれば大体の情報は手に入るので、 シニアなエンジニアとジュニアなエンジニアの差(できることの多さ)みたいなものはどんどん縮まっている印象がある。 なので、エンジニアのスキルレベルを確認するのは意外と難しい(普段の業務でも差が出にくいケースがある)。

これはシステムアーキテクチャでも同じ話だと思っていて、 特にAWS/GCPのようなクラウドの場合は公式が色んな情報を提供していることもあり、 「それほどエンジニア同士で差はでないのではないか?」と思っていた。

しかし、その場でパッと課題が出されるシチュエーションだと自身が今まで得てきた知識と経験によってインタビューを進めていくことになるので、 自分の予想以上にエンジニアとしてのレベル感がそのまま出ている感じがあった。 (当たり前なんだけど)ネット上に情報あっても意外と知らないことは知らないんだなーと。

実際にシニアなエンジニアとジュニアなエンジニアでは結果に大きく差が出た。

コミュニケーション能力

System Design Interview の面白いところはコミュニケーションが必要な部分だと思っていて、 知識と経験があっても、そこが弱いと話を上手く進めていくことができない。 時間が限られていることもあり、必然的に論理的に物事を説明する能力や必要な情報量に絞って説明する能力を確認することができる。

細かいところだと、分からないところは「分かりません」と言って話を先に進めるという行動の有無や、 矛盾を指摘されたときの反応など、自分が想定した以上にコミュニケーション部分の良し悪しが見える結果となった。

得意分野と不得意分野が明確に出る

当然といえば当然だが、その人の得意分野と不得意分野が見える。 「この人意外とこーゆーところも知っているんだ(気にするんだ)」というのがちょこちょこあったので、 People Manamgement をしている立場としてそれを知れたのは良かったかなと思っている。

出題する側も難しい

出題する側も苦労するなーと思った。

回答者のテクノロジースタックとマッチしない場合、会話ができなくなる可能性があったり、 会話を進めるにつれて要件が矛盾してくる可能性がある。 結果的に回答者の動きに合わせた進め方を結構作り込むことになった。

Spannerへの圧倒的な信頼

System Design InterviewではSpannerが圧倒的な人気を誇っていて、ほぼ全員がこれに言及していた。

たしかにプロダクトとしての性質だけだと各種要件を満たしやすいデータベースなので、 System Design Interviewのコミュニケーション過程である程度言及されるのは想定していたが、 あまりにSpannerが登場するので、途中からわざわざ"Spanner対策"みたいなものを用意することになった。

まとめ

結論から言うと「やってよかったなー」と思いました。

DMMプラットフォームのマイクロサービスアーキテクトチームはこんな感じのチームです。 興味のある方は以下のMeetyから連絡もらえれば、チームのミッションや業務内容を説明することができます。 お気軽にどーぞ。