皆さんは、フルスタックエンジニアという言葉をご存じでしょうか。この言葉は、ITシステムの開発においてフロントエンドからバックエンド、インフラまで幅広い技術領域をカバーするエンジニアを指します。
多様なスキルセットを持つフルスタックエンジニアは、一見するとあらゆる技術的課題に対応できる理想的な存在に思えます。しかし、はたして現実的に「フルスタックエンジニア」を目指すことは可能なのでしょうか? この記事では、フルスタックエンジニアの定義や実態、さらにその現実的な道のりについて考察していきます。
フルスタックエンジニア(Full Stack Engineer)は、「満杯に積み重なった(Full Stack)」と冠せられている通り、一人でサービスの開発から運用、保守まであらゆる領域で活躍できるITエンジニアのあり方です。その業務内容は下記のようにさまざまであり、一定の役割やポジションを指してフルスタックエンジニアと呼ぶわけではありません。
・社内システムのフロントエンドからバックエンドまで一気通貫した開発
・チーム立ち上げや要件定義のフェーズからアプリ開発をハンドリング
・システム開発を進めながらインフラの整備やキッティングも担当
対象となる技術領域としてはフロントエンド、バックエンド、データベース、クラウド、インフラなどが挙げられ、セキュリティやプロジェクト管理の知見が求められることもあります。
・フロントエンド:HTML/CSS、JavaScript、React、Vue.js、Angularなど
・バックエンド:PHP、GO、Python、Java、Ruby、C#、TypeScriptなど
・データベース:データベース設計・管理の知識、SQL、MySQL、PostgreSQL、MongoDB、API開発など
・クラウド:AWS、Google Cloud、Azureなどの運用、仮想化/コンテナ、CI/CDなど
・インフラ:HTTP、DNS、ハードウェア運用管理など
・セキュリティ:セキュアコーディング、セキュリティ機器運用、暗号化、セッション管理など
・プロジェクト管理:Git、テスト自動化、アジャイル・スクラムといった開発フレームワークの知見など
さまざまな領域で活躍できるフルスタックエンジニアはニーズが高く、特にIT人材不足の状況において給与や待遇面でメリットが得られることが期待されます。実際に大手転職サイトなどで「フルスタックエンジニア」と検索すると何百もの求人が表示されます。
企業に取ってもキャリアの方向性としても一見、理想的に思えるフルスタックエンジニアですが、「難しい」「器用貧乏」などと称されることもあります。以下に、その具体的な理由を掘り下げて論じます。
先に述べた通り、フルスタックエンジニアでは幅広い領域でのスキルが求められます。しかし、それぞれの分野には非常に深い専門知識が存在します。例えば、フロントエンドの快適なUI/UXデザイン、バックエンドの高度なアルゴリズム設計や最適化、ネットワークの信頼性を保証するトラフィック管理やセキュリティ対策などです。
そのような広範な分野が日進月歩で更新されていく状況で最前線の知識を保ちつづけるのは容易なことではありません。そのため、フルスタックエンジニアの知識は「広く浅く」になる可能性があり、結果として何でもできるが専門性が薄い「器用貧乏」と指摘されることがあるのです。
複数の領域をカバーするフルスタックエンジニアはプロジェクト全体の理解が求められるため、多忙かつマルチタスクとなりがちです。その結果各タスクに割く時間や集中力が分散してしまうことで、仕事の効率や質、ワークライフバランスを保つことが難しいと感じるエンジニアも多いようです。
特に大規模なプロジェクトや専門家の協働が求められる局面では、このバランスの難しさが浮き彫りになります。チームを管理しながら実際に手も動かすフルスタックエンジニアには技術力、スケジュール管理能力、コミュニケーション能力など性質の異なるさまざまなスキルが求められるためです。
テクノロジーの進化や知識のコモディティ化を背景に、各技術分野の専門性がますます重要視されるようになっています。生成AIやノーコードツールの進化が進む一方、AIやデータサイエンス、クラウドネイティブなアーキテクチャ、サイバーセキュリティなど、ITに関する専門知識の高度化は進んでいます。
そんな中で、幅広い人材と協力したり管理したりすることを得意とするジェネラリストを目指すか、特定分野に精通したスペシャリストを目指すのかをキャリアパスで意識する機会は増えました。その結果、フルスタックエンジニアとしての働き方に不安を抱える声も多く聞かれるようになったのです。
フルスタックエンジニアの特性やニーズの高さと、実際に目指すことの難しさについて述べました。少子高齢化を背景とした生産年齢人口の減少やDXに関するニーズ増を背景に2030年には約79万人のIT人材が不足すると言われており、IT人材一人一人が担う役割は多様化することが予想されます。また、スタートアップなど人材一人一人の担う役割や責任が大きい企業ほど、フルスタック性が高い傾向にあることも報告されています。
フルスタックエンジニアは目指すものというより、そのときどきに必要なスキルを発揮した結果としてなるものというのが多くの方の実感に合致するのではないでしょうか。
『フルスタックエンジニアの成熟度モデル』(Fintan)では、4段階のレベルを設け、サーバーアプリケーション、Webフロントエンド、モバイル、開発プロセス、データベース(DB)、インフラの6つの領域で要求されるスキルと経験を定義しています。
同資料はクリエイティブ・コモンズ・ライセンスで再配布や翻案も許諾されているため、自身のスキルセットや成熟度の客観的な判定やメンバーの教育などで活用することも可能です。
ITエンジニアのキャリア像としてポピュラーなものでありながら、どこか実態があいまいな印象もあるフルスタックエンジニアについて解説しました。フルスタックエンジニアと一口に言っても求められるスキルや担当する仕事内容は千差万別です。フルスタックエンジニアを採用したりフルスタックエンジニアとして働いたりする場合は、前述の成熟度モデルなどを参考にキャリア像を具体的に描いてみることをおすすめします。