~サカモト@エンジニアキャリア論が回答~
エンジニアのための「転職&キャリア」相談室有名テック企業への転職、年収アップ、理想のキャリアを築くための方法は? エンジニアのための無料キャリア相談で人気の「サカモト@エンジニアキャリア論」さんが、エンジニアから実際に寄せられた相談内容をもとに、転職成功の秘訣や年収・キャリアアップに役立つ情報を紹介していきます!
~サカモト@エンジニアキャリア論が回答~
エンジニアのための「転職&キャリア」相談室有名テック企業への転職、年収アップ、理想のキャリアを築くための方法は? エンジニアのための無料キャリア相談で人気の「サカモト@エンジニアキャリア論」さんが、エンジニアから実際に寄せられた相談内容をもとに、転職成功の秘訣や年収・キャリアアップに役立つ情報を紹介していきます!
こんにちは、サカモトです。
とある外資系企業でソフトウエアエンジニアとして働く傍ら、Twitterやnoteなどで、テック企業の面接情報、面接で聞かれる技術質問の解説、さまざまなエンジニアのキャリアストーリーなどを中心に情報発信活動しています。
今回もソフトウエアエンジニアを高給で採用している企業の面接について解説していきます。
前回、高給エンジニアの採用面接は「コーディング面接」、「行動面接」など、一般的な日系企業とは異なる面接形式をとっており、オファーを得るための要素としては「面接対策」、「経験」、「運」が必要だと話しました。その上で、短期的には「面接対策」を、長期的には「経験」を自らがコントロール可能な項目として定めて、準備していくことが必要です。
今回の記事では「システムデザイン面接対策」と「経験」について話していきます。
サカモト@エンジニアキャリア論さん(@sakamoto_582)
外資テック企業で働くソフトウエアエンジニア。エンジニアがテック企業トップに行くためのキャリア論をTwitterなどで発信中
システムデザイン面接は、リアル世界のソフトウエアシステムの設計を面接の場で議論していく形式です。
普段の皆さんのソフトウエアエンジニアの業務内容に非常に近いものがあるため、特に対策せずとも通過できる可能性はありますが、面接の流れは必ず抑えておいた方が良いでしょう。
また、どのドメイン分野のシステムデザインを行うのかを予想するのは難しいですが、「某企業は自社の課題についてお題を持ってくる」という話もあるので、面接を受ける企業のシステムくらいは予想をつけておいた方が良いです。
信頼性、拡張性、保守性などを意識した大規模システムの設計を、利点・欠点を説明しながら進めていく必要があるので、特に分散システムを構築した経験がない方は注意しましょう。
この面接対策の鍵は、自身のエンジニアとしての引き出しの多さと深い知識が重要な要素になってきます。
これは、何かサービスを設計する上で一意に決まることはなく、常にトレードオフを意識し、技術的にリードしながら設計できるかを見ているからです。
例えばデータベース一つとっても、「シャーディングを行うべきか」「どのようにシャードにデータを分けるか」などスケーラビリティーを意識しながらシステムの複雑性に対してどのように立ち向かうか? といった点が重要です。
例としては、
・URL短縮サービス(Bitly)
・ソーシャルメディア(Twitter)
・動画サイト(YouTube)
・ファイル共有サービス(Dropbox)
……などをデザインせよ、といった問題が予想されます。一般的にはMiroなどのホワイトボードツールを活用して問題に取り組む場合が多いです。
システムデザイン面接の対策としては、専用の教材を読む事が考えられますが、皆さんの普段の業務がこの面接を対策する上で最も大切です。
ゼロから大規模なシステムを設計する経験などは、滅多に得られるものではないかもしれません。しかし「なぜこのシステムはこの設計になっているんだろう」「このシステムが仮に月間1億人使うと仮定したら、どこに問題が起きるだろう」と考えることはできます。
また、面接では小規模なシステムより、大規模なシステムが題材にされる傾向があります。転職を考えているのであれば、できるだけ大規模なシステムを開発している企業を目指した方が、将来的にシステムデザイン面接を行う上で必要な能力を養うことができます。
高給エンジニアの採用面接では「経験」が大事だと話しました。採用面接において、「経験=応募ポジションの業務をこなす上で必要な経験」のことを指します。
企業に応募する際の求人内容は、多くの場合次のようなフォーマットで書かれています。次はダミーの求人です。
【職種】フルスタックエンジニア
[会社説明]
~~~~~~~~~~~~~~~~
[チーム説明]
~~~~~~~~~~~~~~~~
[業務内容]
・バックエンドをメインとして、フロントエンドまで開発すること
・チーム開発において、積極的にチーム内外とコミュニケーションを行いながら開発を進めること
・ユーザーからのフィードバックやプロジェクト要件に基づき、継続的に改善しユーザーに価値を届けること
・テストコード、コードレビューなどを通じて、メンテナンス性の高いコードを書くこと
[応募資格(必須)]
・Webアプリケーション開発経験3年以上
・Node.js、Python、React、TypeScriptなどの言語やフレームワークの知識
・データベースに関する基礎的な知識
・アルゴリズムやデータ構造に関する基礎的な知識
[応募資格(歓迎)]
・コンピュータサイエンス、もしくはそれらに関連する技術領域や経験を持つ学士号まはた修士号をもっている
・GraphQL開発の経験
・マイクロサービスに関する開発の経験
ここで注目すべきは「業務内容」と「応募資格」です。ここに書かれていることは、そのままその企業で働く上で期待されていることです。もし現時点で目標にしている企業があれば、求人をいくつか読み、逆算して経験を積むことをオススメします。
全てを満たしている必要はありませんが、その数が多いほどポジションにマッチしていると見なされるので、プラスの方向に働くことはあってもマイナスになることは決してありません。
前回に引き続き、高給エンジニア採用についてお話ししました。エンジニアとして年収を上げていくにはさまざまな手法がありますが、私はその手法の一つとして面接対策を行い、高いオファーを獲得する事をオススメしています。
この記事が、少しでも読者の皆さんのキャリアのサポートになればと思います。
最後に、『エンジニアtype』読者の皆さんからも相談があれば、ぜひサカモトのTwitterまでDMください。模擬面接を通して率直なフィードバックも可能です!
>>https://twitter.com/sakamoto_582
※応募前に『note』記載の応募条件をご確認ください。相談内容(DMと通話内容)に関しては、個人情報は伏せたかたちで、SNSや記事等でコンテンツ化させていただくことがあります
※こちらの記事はInterviewCatを参考に書かれています。
NEW!
NEW!
タグ