はじめに

この文書ではソフトウェアエンジニア育成の要点整理と考え方を示します。 現在、業務委託として参画している企業で共有した文書を公開できる形に書き直したものになりますので、 観点が偏っている可能性がありますが一定の価値があるかなというところでブログポストとしてまとめることにしました。

文書の構成としては

  • ソフトウェアエンジニアの能力の構造の定義
  • ステップアップの手段

について記載していきます。

Engineering Ladder について

ソフトウェアエンジニア市場における各々のソフトウェアエンジニアの絶対値を表現するための指標としての Ladder 例を定義します。 私の経験則的に、ほとんどの会社での Ladder 定義と近しい内容になっているように見えたので Urban Airship の事例 を引用します。

Ladder 例

Urban Airship の事例からの引用で 4 段階分のソフトウェアエンジニアのレイヤを示します。(マネジメント分類は含んでいません) https://gyazo.com/b084e9bad4e6566c2b6036a0ebbe841b

職業としてのソフトウェアエンジニアは Ladder 表の Lv.1 からキャリアをスタートし(例外はあります)、徐々に数値が上の Lv にレベルアップしていくイメージの成長曲線になります。 私の経験則としては、上記表の各 Lv は以下のイメージになります。

  • Lv1
    • 初学者、日本だと新卒でソフトウェアエンジニアになった人たちのゾーン
    • 1〜3年で Lv2 になることを期待されている人たちになります
  • Lv2
    • 世界のソフトウェアエンジニア市場のボリュームゾーン
    • 取り扱っている事業が小さい企業のソフトウェアエンジニアは扱うシステムが小さいがゆえにこのゾーンに滞留しがちです
  • Lv3
    • グローバルトップ以外の企業であれば、どのような企業でもソフトウェアエンジニアをやれるゾーン
    • アーリーステージのスタートアップで CTO (システムが簡単な事業の場合によく見ますね)
  • Lv4
    • シニアエンジニア・リードエンジニア・スタッフエンジニアなど、上級エンジニアのタイトルが付くゾーン
    • アーリーステージのスタートアップでの CTO (システムの難易度が高い事業の場合ですね)
    • レイターステージのスタートアップで TechLead、たまに CTO
    • 日本のメガベンチャーで 1 ラインを任せて数億〜数十億を作る期待値のソフトウェアエンジニア
      • 開発組織が 100 人で構成されていたとすると 5〜10 人がこのゾーンです(これくらいいないと回らない)

ソフトウェアエンジニア育成プラン: No.1 課題図書をこなす

ソフトウェアエンジニアを育成することは非常に難しく、一般的な人材育成のようにフォーマットを揃えたカリキュラムを実施しただけでベースラインをクリアできるようなものではありません。 本質的な問題は、ソフトウェアエンジニアが成長するステップの最初の一段目を登ることが非常に困難なことに由来しています。 IPA の基本情報処理技術者試験のシラバス の巨大さをみると一目瞭然ですが、 最初の一歩目に求める知識量が大きすぎることそのものが原因です。

そこで、最初の一段目を登るにあたり必要な要素を明確にすることを目的として課題図書リストを定義する試みを実施した結果を以下に記載していきます。 課題図書をこなしていく対象は、上記 Ladder でいうところの Lv1. Associate Engineer を想定しています。

課題図書

分類は基本情報処理技術者試験の分類を参考にしています。 (一部 Wikipedia などの外部サイトを参照しています)

概論・スタンス

基礎理論

基礎理論: 数学 / 情報理論 / 通信 / 計測 / 制御
アルゴリズムとプログラミング: データ構造 / アルゴリズム / プログラミング / 言語

コンピュータシステム

コンピュータ構成要素: プロセッサ / メモリ / バス / 入出力デバイス / 入出力装置
システム構成要素: システムの構成 / システム評価指標
ソフトウェア: OS / ミドルウェア / ファイルシステム / 開発ツール / OSS

技術要素

ヒューマンインターフェース: 技術 / 設計
マルチメディア
データベース
ネットワーク
セキュリティ

開発技術

システム開発技術: 要件定義・方式設計・詳細設計・構築・結合・適格性確認・導入・受け入れ・保守・廃棄
開発管理: 開発プロセス・手法・知的財産・開発環境管理・構成管理・変更管理

Web の歴史を通して学ぶシリーズ

ソフトウェアエンジニア育成プラン No.2 xxx

以降は後日追記します〜!

おわり