フルスタックエンジニアとは?(转/整理)
フルスタックエンジニアとは一言で言うと「エンジニアのオールラウンダー」です。
Webシステムやアプリケーション開発では、要件定義から開発・運用・保守まで様々な分野を専門とするエンジニアたちが集まります。基本的にシステムエンジニア・サーバーエンジニア・データベースエンジニア・ネットワークエンジニアなどが分業で開発を行います。
しかし、分業で行うと時間的コストと人的コストが大きくなることがデメリットです。
1人で全ての開発業務を担えるフルスタックエンジニアがいれば、開発のスピードも上がり人件費も削減できます。
スタートアップ企業やベンチャー企業のように、できるだけコストを抑えたい企業にとってフルスタックエンジニアは貴重な人材なのです。
また、最近では単純な開発分野を人件費の安い海外にアウトソーシングするオフショア開発が盛んになっています。オフショア開発する一方で、高度な作業や運用・保守の分野については国内の優秀なエンジニアに任せる企業も多く存在します。
このような企業からも、高度で幅広い知識とエンジニアスキルを有しているフルスタックエンジニアは需要が高いのです
ただし、開発における全てのスキルを身につけるには相当な時間と努力が必要で、1つの分野を極めることすら難しいでしょう。
フルスタックエンジニアの定義
フルスタックエンジニアには明確な定義はありません。
一般的には以下の4つの領域をカバーできるマルチプレイヤー的エンジニアがフルスタックエンジニアと呼ばれています。
1.モバイルアプリ領域
2.ネットワーク・インフラ領域
3.フロントエンド領域
4.バックエンド領域
企業によっては「マルチエンジニア」と呼ばれる事もあります。
フルスタックエンジニアがいらないと言われる理由
一方で、「フルスタックエンジニアは必要ない」という議論が起こった事もあります。
その理由は、フルスタックエンジニアが興ったアメリカと日本での企業の体制の違いだとされています。
アメリカではスタートアップ企業が多く、起業時に専門性の高い人材を多数雇用するのではなく幅広いスキルを持った人材を少数雇用する方が効率的です。
そのためフルスタックエンジニアが重宝されるといった背景があります。
その点、日本では専門性の高い人材複数名でシステム開発を行う傾向があり、これは大企業であっても変わりません。
全体を把握するための管理職(プロジェクトマネージャーなど)もいます。
こう言った日本企業の特性が「フルスタックエンジニアは必要ない」と言われた背景にあります。
しかし近年では、フルスタックエンジニアのスキルの高さに貴重な人材として改めて注目が集まっているため、需要が高まっているのです。
マネジメントや採用の金銭的、時間的コストを考えても、フルスタックエンジニアはシステム開発現場の生産性向上の観点から存在意義があると再認識されています。
他エンジニアとの年収比較
エンジニアと言ってもその種類は様々です。
フルスタックエンジニアの年収は700~850万円程度と言われています。
他のエンジニアと比較した場合、その年収はどの程度なのでしょうか。
- システムアナリスト…約1,600万円
- UI/UXデザイナー…約1,000万円
- システムコンサルタント…約800~900万円
- フルスタックエンジニア…約700~850万円
- フロントエンドエンジニア…約600~700万円
- プロジェクトマネージャー…約500~600万円
- 社内システム企画・社内SE…約500万円
- サーバーエンジニア…約450万円
全エンジニアの平均年収が約540万円という点からも、フルスタックエンジニアの年収の高さが伺えます。
他の代表的なエンジニアと、およその年収の違いの参考にしてください。
複数のエンジニアスキルを有するフルスタックエンジニアですが、具体的にはどのようなプログラミング言語の知識やスキルが必要なのでしょうか?
フロントエンド開発の言語・スキル
Webサイトやアプリケーションの「実際にユーザーの目に触れる部分」を開発するフロントエンド開発のスキルが必要です。
フロントエンド開発によく使われる、以下のようなプログラミング言語やフレームワークを熟知しておかなければなりません。
・JavaScript
・JavaScriptのフレームワーク(jQuery・React.js・Vue.jsなど)
・HTML/CSS
・WordPressなどのCMS
バックエンド開発の言語・スキル
ユーザーの目に触れない裏側のシステムを開発するバックエンド開発のスキルも必要です。
バックエンド開発には、たとえばログイン機能や会員登録機能などのサーバ構築やデータベースの構築などが含まれます。
バックエンド開発に必要なプログラミング言語やスキルには以下のようなものがあります。
・Python
・Ruby
・PHP
・Java
・MySQL(データベース管理システム)
モバイルアプリケーション開発の言語・スキル
スマートフォンの普及により、モバイルアプリケーションを開発するITベンチャーが増えてきました。そこでフルスタックエンジニアにも必要になってくるのがモバイルアプリケーション開発のスキルです。
以下のようなプログラミング言語やフレームワークのスキルが必要になるでしょう。
・Swift(iOS)
・kotlin(Android)
・React Native(iOS/Android)
特に近年ではAndroidとiOS両方のOSに対応したアプリケーション開発ができるReact Nativeの需要が高まっています。
インフラ周りのスキル
フルスタックエンジニアにはネットワークやデータベース、サーバーなどインフラのスキルも必要です。
サーバーのセットアップや、アクセスを予想してどれくらいのスペックのサーバーが必要か設計したりしなければなりません。
最近ではAmazonが提供するAWSのようなクラウドサービスも登場しています。クラウドサービスにより、サーバー・ストレージ・データベース・ソフトウェアなどを自ら開発しなくても利用できるようになりました。
そのような背景もあり、フルスタックエンジニアにはニーズに合わせてAWSなどのクラウドサービスを選定するスキルも必要になります。
UI/UXに関するスキル
Webシステムの開発にはUI/UXが重要です。
UI/UXを簡単に説明すると、「ユーザーが快適にシステムを使えるようなユーザーインターフェースを整えるスキル」です。UI/UXを考慮しないと視認性や操作性が悪いシステムやWebサイトになってしまいます。
そのようなシステムやWebサイトは、利用されないだけでなくユーザーの滞在時間が短くなるデメリットがあります。
フルスタックエンジニアには徹底的にユーザー目線でシステム開発する能力も求められるのです。
フルスタックエンジニアに向いている人の特徴
-
勤勉である
-
モノ作りが好きな人
-
コミュニケーション能力の高い人