フルスタックエンジニアと聞いて、バズワード(注3)だと思う方は少なくないかもしれません。かくいう筆者もそうだったのですが、調べ始めてみると「なるほど、世の中の流れがこのような人材を必要としているのか」と感じるようになりました。この記事は、フルスタックエンジニアという言葉の意味を考えることが趣旨ですが、併せて、我々エンジニア(筆者も一応現役エンジニアです)がどのような方向性で生きていくのかについても考えます。
注1:Googleが提供するWeb検索サービスにおける特定キーワードの検索回数が時間経過に沿ってどのように変化を把握できるサービス。
注2:⇒ Googleトレンド「フルスタックエンジニア」
注3:一見、説得力があるように見えるが、具体性がなく明確な合意や定義のないキーワードのこと。(Wikipediaより引用)
フルスタックエンジニアの言葉の意味
まずは、フルスタックエンジニアの字面上の意味を見てみましょう。フルスタックエンジニアを英語で書くとfull stack engineerですから、「すべての層(の技術を扱える)エンジニア」ととらえて差し支えないでしょう。ただし、問題なのは「すべての層(full stack)とは、正確には何を(どの層を)含んでいるのか」です。
そこで、開発者系イベント(注4)の飲み会に参加していた次の5名の方にも、「どこまでの技術を持っている人がフルスタックエンジニアだと思う?」と聞いてみました。
- クラウド型のプロジェクト管理ツールの開発者
- Javaのアプリケーションサーバの開発者
- SI企業でインフラを中心に業務を担当されている方
- SI企業で金融系のアプリケーション開発を担当されている方
- フリーランスエンジニア
各人の見解は表1のとおりです。
注4:日本オラクルが2014年5月に開催した「Java Day Tokyo 2014」
注5:クラウド基盤を構築するためのオープンソースソフトウェア。
ご覧のとおり、各人の立場によって、人材としてのフルスタックエンジニアの定義は異なりました。
例えば、SaaSを提供する項番1の方にとってのフルスタックエンジニアとは、インフラ(ネットワーク、OS、仮想化など)に始まり、ミドルウェア(RDBMS、Webサーバ、キャッシュサーバ、NoSQLなど)、アプリ(SQL、Ruby、Java、JavaScript、スマートフォンアプリ開発、統計分析など)まで全部できる人です。それに対し、SI企業でインフラを担当する項番4の方にとっては、OpenStackという特定のインフラに関わるプロダクトを扱える人を指しています。一方で、項番3のSI企業の方は、メインとなる得意分野があってさらに得意な領域を増やすいわゆるパイ(π)字型人材を指しています。
面白いのは、Javaプログラミングを武器にJavaアプリケーションサーバの開発を生業とする項番2の方は、自身の専門性を武器にしているので、フルスタックエンジニアに関しては興味がないと言い切りました。項番5の方に至っては「契約業務から請求書発行業務、さらには顧客とのトラブルがあった際の裁判までできて、フルスタックエンジニアだ!」と言います。ちなみに、項番5の人に「それって、フルスタック社会人じゃないですか」と言ったら、「そのとおり」と大笑いされてしまいました。
人によって、フルスタックエンジニアの定義が異なることは分かりました。しかし、これでは結論が出ません。そこで今度は、フルスタックエンジニアという言葉がいつ生まれて、どのような意味で使われていたのかを調べてみることにしました。