少し前に流行ったフルスタックエンジニアという言葉ですが、流行りすぎて真のフルスタックエンジニアが雲隠れしてしまっているように見えます。
今回は、フルスタックエンジニアを名乗るための条件を考えてみましょう。
フルスタックエンジニアとは?
一言で言うと、サービスを何もないところから独力で立ち上げられる能力を持ったエンジニアです。プログラミング以外にも、インフラ、ネットワーク、データベースなどに至るまで様々な能力が必要になります。
「要件定義~テストまで」という意味でフルスタックエンジニアを名乗っている方もおられますが、今回はあくまで「その人がいればサービスを立ち上げられる」という意味でのフルスタックエンジニアを考えていきます。
インフラ
Linuxをはじめ、OSやミドルウェアの「仕組み」を知る必要があります。最近では、AWSやGCP、Azureなどのクラウドサービスの知識も求められる傾向があります。
- 主要サーバー用OSの知識があり、環境構築ができる
- HTTPサーバー用ミドルウェアの知識がある
- ファイアウォールを適切に設定できる
- サービス(デーモン)の設定、制御ができる
- Azure、GCP、AWSなどの主要クラウドのいずれかを扱える
- ログの解析ができる
- パケットキャプチャを扱える
バックエンド知識
データベースをはじめ、RestAPIなどの概念および、適切なフレームワークを選択するための知識が求められます。フロントエンドほど流行の流れは早くありませんが、常に最新技術に目を向ける必要はありそうです。
- 複数の言語の知識
- フレームワークの幅広い知識
- 通常のHTTP通信以外の知識(WebSocketなど)
- RDBMSの幅広い知識
- NoSQLの幅広い知識
- サービスのスケーリング知識
フロントエンド
フロントエンドは、エンドユーザーの使い勝手に関わるところで、ユーザーにとって最も重要な要素です。技術の流行り廃りも早く、数年前の知識が全て無駄になることも。
- HTML5、CSS3、ES2015以上の知識
- 主要三大フレームワーク(React、Angular、Vue)のいずれかの知識
- SPAおよびPWAの知識
- SEOの知識
- リアルタイム通信技術の知識
セキュリティ知識
どの分野でもセキュリティ知識は重要です。しかも、ここを疎かにすると事業に莫大なダメージを与え、自身の信用も失う結果となります。日本ではセキュリティが軽視されることが多く、嘆かわしいことではありますが、フルスタックエンジニアを名乗る以上、基礎知識を備えておくことは必須要件でしょう。
- 主要な攻撃手法の知識
- 暗号化の基礎知識
リリース知識
プログラムを安全にリリースすることも重要です。
- CIの構築ができる
- ダウンタイムゼロ構想のリリース設計ができる
まとめ
日本のITは長らく縦割りの体制で開発が進められてきましたから、「Javaしか書けない」「インフラしか出来ない」という人が後を絶ちません。
最近でも「フロントエンド」「バックエンド」と分かれていたりしますが、いずれにせよ必要なスキルスタックにそこまで差はないはずです。
いざとなれば、フロントエンドエンジニアはバックエンドプログラムを書けるべきだし、逆も然り。また、最近ではその垣根も驚くほど低くなってきているのが現状です。
ITエンジニアである以上、「専門じゃないので出来ないです」などという言葉は、出来るだけ言いたくないものです。
本記事に対して、「これが足りない」「これはいらないのでは?」といったご意見がありましたら、是非コメントをお願いします!