社内で挑むモブシステムデザインインタビュー
はじめに
みなさんこんにちは!
ワンキャリアでDevRelチームを担当しています中西(@nana_nigiiro)です!
今回は2023年3月から実施している「モブシステムデザインインタビュー」についてお伝えします。
システムデザインインタビューに興味のある方にとっても、参考になる内容になっていますので、もしよければご一読ください。
システムデザインインタビューとは?
まず、システムデザインインタビューとは、大規模なシステムの設計やアーキテクチャに関する知識とスキルを評価するときに行うインタビューのことです。
GAFAM等の外資IT企業で、シニアレベルのポジションや、ソフトウェアアーキテクトを採用する場面でよく用いられます。
典型的なインタビューでは、与えられた問題(例えば、「大規模なソーシャルネットワーキングサイトの設計」や「分散型キー値ストアの設計」など)に対してシステムの設計を提案することが多いです。
その提案を通じて、どのように効果的な設計をし、またそのシステムが潜在的な課題や制約(パフォーマンス、リソース使用率、可用性、信頼性など)にどう対応するかを評価します。
詳細はGoogleがオフィシャルの動画を出してくれているため、興味のある方はこちらをご覧ください。
モブシステムデザインインタビューの導入背景
以前、別の記事で「LeetCode解くまで帰れま10」企画について共有させていただきました。
今回のモブシステムデザインインタビューも、エンジニアリングマネージャーの江副さんが発案した「とにかく皆のレベルアップに必要そうな知識を叩き込もうぜ!!」という剛腕施策の第2弾となります。
モブシステムデザインインタビューを通じて、エンジニア全員がシステム設計やアーキテクチャに関するベースの知識・スキルをつけることはもちろんのこと、その中でも特に、開発におけるトレードオフの感覚を身につけることを主旨として置いています。
どんな場合でもこのアーキテクチャを適用すれば大丈夫といった、銀の弾丸は存在しません。
機能要件、非機能要件を考えると、システムAでは素晴らしいアーキテクチャであっても、システムBでは全然だめということが起こります。
そのため、常に、要件に立ち返ってその時点で最善のアーキテクチャを考える必要があります。
しかし、この思考法は一筋縄では身につきません。前提となる知識が必要ですし、その上で実際に思考や実践をしてみないとわからないこともたくさんあります。そこで、このインタビューを通じて、その考え方に慣れてもらうことを目指しています。
モブシステムデザインインタビューの具体的な取り組み
毎週1時間、メンバーで集まり、出題者がインタビュイーを1人指名して実施しています。選ばれなかった他のメンバーは、チャットでインタビュイーをサポートします。
具体的なモブシステムデザインインタビューの流れは以下の通りです。
初めての人でもインタビュイーがしやすいように設計しているため、試験などで行われるシステムデザインインタビューとは少し異なることにご注意ください。
まず「①機能要件」〜「③リソース見積もり」について、インタビュイーはドキュメントにまとめながらインタビュアーに説明していきます。
インタビュアーは、インタビュイーの説明の中で足りてない観点があれば、追加で質問していきます。
ある程度内容がまとまったら、図面作成ツールでシステムの大枠を設計していきます。(④High-level design)
その後、インタビュアーからの追加質問に答えながら、より詳細なアーキテクチャを設計して完了です(⑤Detailed design)。
また、毎回システムデザインインタビューというわけではありません。
前提となる知識の底上げを目的に、CAP理論やリアルタイム処理とバッチ処理の違い、データの暗号化の必要性など、システム設計に関連する重要なトピックについてディスカッションしながら学ぶ機会も設けています。
普段の業務の中では深く考える機会が限られるため、ディスカッションが盛り上がることが多く、非常に学びになる時間になっています。
定性的な評価にはなりますが、エンジニアメンバーへのアンケートを見ると、モブシステムデザインインタビューの目的通りの効果が出始めています。
モブシステムデザインインタビューのススメ
モブシステムデザインインタビューは多くの学びが得られます。
社内でモブシステムデザインインタビューをやってみたい、個人でシステムデザインについて勉強したいという方に向けて、参考になる書籍やリポジトリなどをご紹介します。
オススメの書籍
オススメのリポジトリ
個人で勉強したい方は、紹介した書籍やリポジトリをまずは読んでいただき、基礎的な知識をインストールすることをオススメします。
その後、ネットで具体的な例(YouTube, X(旧Twitter), Googleドライブ等)を調べてみて、実際に要件やアーキテクチャを設計してみてください。
チームでモブシステムインタビューをする場合は、インタビュアー役の方が事前に準備をしておく必要があります。
基礎的な知識のインストールをした上で、お題と聞くべき観点をまとめておきましょう。
(可能なら事前に自身でも実践しておくと、インタビュイーに質問しやすいです。)
敷居が高いように感じる場合は、まずはシステムデザイン基礎知識の共有会あたりから始めると良いかも知れません。
終わりに
今回はワンキャリアで実施している、モブシステムデザインインタビューについてまとめました。
実際に私も参加してみて、技術について皆でディスカッションできる非常に良い取り組みだなと感じています。
今回の記事が、システムデザインインタビューに興味を持っている方の参考になればとても嬉しいです。
ちなみに、ワンキャリアではエンジニアを絶賛募集中です!
今回取り上げたような取り組みにワクワクするような方は、ぜひ1度カジュアルにお話しましょう!
モブシステムインタビュー以外にも色々取り組んでいますので、興味あれば以下の記事もお目通しください。
▼ワンキャリアのエンジニア組織のことを知りたい方はまずこちら
▼カジュアル面談を希望の方はこちら
▼エンジニア求人票
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?