シニアポジションに応募し始めたとき、私はエンジニアらしいアプローチをとりました。要件をリバースエンジニアリングしたのです。
年収18万〜35万ドルの企業におけるシニア、スタッフ、プリンシパルエンジニアの求人を50件集め、以下のことがわかりました。
ほぼすべての求人に登場するキーワード
一貫して登場するフレーズがあり、もはや必須条件と言えます:
- 「本番システム」(50件中47件)— チュートリアルを作る人ではなく、深夜2時にオンコール対応した経験のある人を求めています。
- 「クロスファンクショナルな協働」(50件中44件)— プロダクト、デザイン、データ、運用と連携します。自分の領域を超えてコミュニケーションできますか?
- 「メンターシップ」(50件中41件)— 教えられなければ、シニアではありません。それだけです。
- 「アーキテクチャの意思決定」(50件中39件)— 単にチケットを実装するのではなく、システムを設計できる人を求めています。
- 「運用の卓越性」(50件中35件)— SLO、監視、インシデント対応。構築するだけでは不十分。運用できるかが問われます。
年収18万ドルと30万ドル以上を分けるもの
シニア(18万ドル)からスタッフ(25万ドル以上)へのジャンプは、まさにこれです:
シニア:「機能を構築し、システムを保守する。」 スタッフ:「技術的な方向性を定義し、他のエンジニアを支援する。」
具体的には:
| シニアエンジニア | スタッフエンジニア |
|---|---|
| コードを書く | コードを書き、何を構築するかを決める |
| PRをレビューする | コードレビューの基準を定義する |
| バグを修正する | バグの種類そのものを防止する |
| アーキテクチャを実装する | アーキテクチャを設計する |
| 監視を利用する | 何を監視するかを定義する |
| プロセスに従う | プロセスを作成する |
多くのポートフォリオが間違っている点
数多くのエンジニアポートフォリオ(自分の古いものも含む)を見た結果、以下のパターンが見えました:
多くの人が見せるもの:「ReactとNode.jsでXを構築しました。」 採用担当者が見たいもの:「Xという制約のもとでReactをVueより選び、そのトレードオフを受け入れました。」
多くの人が見せるもの:「テストカバレッジ95%です。」 採用担当者が見たいもの:「決済パイプラインに対象を絞ったコントラクトテストを導入し、本番インシデントを60%削減しました。」
**多くの人が見せるもの:**技術スタックのリスト。 **採用担当者が見たいもの:**システムをスケールさせ、制約のもとで困難な意思決定をした証拠。
これに基づいてポートフォリオを再構成した方法
この分析の後、3つの変更を加えました:
1. プラットフォームエンジニアリングのページを追加。 SLO、インシデント訓練、セキュリティ対策、リファレンスアーキテクチャ。これにより「デモを作るだけでなく、システムを運用している」ことを示します。
2. 「課題」セクション付きのケーススタディを追加。 何を構築したかだけでなく、何がうまくいかなかったか、どう診断したか、何を学んだかを記載。これが運用経験のシグナルです。
3. 価格設定付きのサービスページを追加。 就職活動において逆効果に思えるかもしれませんが、強力なシグナルを送ります:「私は切羽詰まっていない。選択肢がある。あなたと働くことを選んでいる。」 交渉のレバレッジは現実に存在します。
誰も語らない面接のシグナル
気づいたことがあります。年収25万ドル以上のレベルでは、面接は「その仕事ができるか」ではなく、「そのレベルの思考ができるか」を問うものです。
彼らがテストしているのは「リンクリストを実装できるか」ではありません:
- システムを説明するとき、障害モードに言及するか?
- 意思決定を議論するとき、トレードオフに触れるか?
- 何かがうまくいかなかったとき、責任を取るか、ツールのせいにするか?
- 複雑なシステムを非技術者に説明できるか?
私のポートフォリオは、面接が始まる前にこれら4つの質問すべてに答えるようになっています。
実践的な教訓
シニア以上のポジションを目指すなら、ポートフォリオは以下に答えるべきです:
- あなたが運用した(単に構築しただけでなく)最も複雑なシステムは何か?
- 実際にトレードオフを伴う意思決定をした経験は?
- 何が壊れ、どう修正したか?
- 自分の知識を他人に教えられるか?
技術スタックは思うほど重要ではありません。運用の成熟度は思う以上に重要です。
