ストーリー
エンジニアのキャリアラダー
// ICトラック(Individual Contributor)
const IC_TRACK = {
junior: {
title: "ジュニアエンジニア",
level: "L0-L1",
focus: "指示された機能の実装、基礎技術の習得",
scope: "タスク単位",
},
midLevel: {
title: "ミッドレベルエンジニア",
level: "L1-L2",
focus: "自律的な機能開発、コードレビュー",
scope: "機能単位",
},
senior: {
title: "シニアエンジニア",
level: "L2",
focus: "技術設計、メンタリング、チームの技術リード",
scope: "プロジェクト単位",
},
staff: {
title: "スタッフエンジニア",
level: "L3",
focus: "組織横断の技術課題解決、アーキテクチャ設計",
scope: "複数チーム・プロダクト",
},
principal: {
title: "プリンシパルエンジニア",
level: "L4",
focus: "会社全体の技術方向性、業界への影響",
scope: "組織全体・業界",
},
};
// マネジメントトラック
const MANAGEMENT_TRACK = {
techLead: {
title: "テックリード",
focus: "チームの技術方針決定、ピープルマネジメント開始",
balance: "コーディング60% / マネジメント40%",
},
engineeringManager: {
title: "エンジニアリングマネージャー",
focus: "チーム運営、採用、1on1、プロジェクト管理",
balance: "コーディング20% / マネジメント80%",
},
director: {
title: "ディレクター",
focus: "複数チームの方針策定、組織設計",
balance: "コーディング5% / 戦略・マネジメント95%",
},
vp: {
title: "VP of Engineering",
focus: "技術組織全体の経営、ビジネスとの連携",
balance: "戦略・組織運営100%",
},
};
スタッフエンジニアへの道
// L2(シニアエンジニア)からL3(スタッフエンジニア)へのギャップ
const STAFF_ENGINEER_SKILLS = {
technicalExcellence: {
description: "複数ドメインにまたがる技術的専門性",
examples: [
"バックエンド + インフラ + データベースの深い知識",
"パフォーマンスの根本原因分析と系統的な改善",
"セキュリティ脅威モデリングの実施",
],
},
architecturalThinking: {
description: "システム全体を俯瞰した設計力",
examples: [
"マイクロサービスの適切な境界設計",
"技術的負債の定量的評価と改善計画",
"新技術導入のリスク評価とPoC実施",
],
},
organizationalImpact: {
description: "チームを超えた影響力",
examples: [
"全社的なコーディング規約の策定と推進",
"他チームの技術課題へのコンサルティング",
"社外への技術発信(ブログ、登壇、OSS)",
],
},
technicalLeadership: {
description: "技術的なリーダーシップ",
examples: [
"困難な技術判断でのファシリテーション",
"ジュニアメンバーの成長支援",
"チーム横断のRFCプロセスの確立",
],
},
};
スキルマップと成長計画
// 自己評価マトリクス
interface SkillAssessment {
category: string;
skills: Skill[];
}
interface Skill {
name: string;
currentLevel: 1 | 2 | 3 | 4 | 5;
targetLevel: 1 | 2 | 3 | 4 | 5;
actionPlan: string;
}
const SKILL_MAP: SkillAssessment[] = [
{
category: "設計力",
skills: [
{ name: "API設計", currentLevel: 4, targetLevel: 5, actionPlan: "社内APIガイドライン策定" },
{ name: "データモデリング", currentLevel: 3, targetLevel: 4, actionPlan: "DDD読書会参加" },
{ name: "分散システム", currentLevel: 3, targetLevel: 4, actionPlan: "Designing Data-Intensive Applications完読" },
],
},
{
category: "リーダーシップ",
skills: [
{ name: "メンタリング", currentLevel: 3, targetLevel: 4, actionPlan: "ジュニア2名のメンターを担当" },
{ name: "技術発信", currentLevel: 2, targetLevel: 4, actionPlan: "月1回の技術ブログ + 年2回の登壇" },
{ name: "意思決定", currentLevel: 3, targetLevel: 4, actionPlan: "ADRプロセスをチームに導入" },
],
},
];
継続的な学習
const LEARNING_RESOURCES = {
books: {
architecture: [
"Designing Data-Intensive Applications (Martin Kleppmann)",
"Software Architecture: The Hard Parts (Neal Ford)",
"Building Microservices (Sam Newman)",
],
leadership: [
"Staff Engineer (Will Larson)",
"The Manager's Path (Camille Fournier)",
"An Elegant Puzzle (Will Larson)",
],
},
practices: [
"社内の設計レビューに積極的に参加する",
"オープンソースプロジェクトのアーキテクチャを読む",
"障害レポートを分析して教訓を抽出する",
"技術カンファレンスで登壇する",
"RFCを書いて組織に提案する",
],
communities: [
"社内の設計ギルド / アーキテクチャ委員会",
"地域の技術コミュニティ(勉強会、カンファレンス)",
"オンラインコミュニティ(Zenn, Qiita, Dev.to)",
],
};
まとめ
| ポイント | 内容 |
|---|---|
| 2つのトラック | ICトラック(技術深化)とマネジメントトラック |
| スタッフエンジニア | 技術+組織的影響力。L3への道 |
| スキルマップ | 現在と目標のギャップを可視化して計画を立てる |
| 継続的学習 | 書籍、実践、コミュニティの3軸で成長し続ける |
チェックリスト
- ICトラックとマネジメントトラックの違いを理解した
- スタッフエンジニアに求められるスキルを把握した
- 自分のスキルマップを作成した
- 継続的な学習の計画を立てた
次のステップへ
次は「L2の振り返りとL3への道」を学びます。10ヶ月間の学びを振り返り、次のステージへの道筋を確認しましょう。
推定読了時間: 30分