フルスタックエンジニアに必要な基本スキルは4つ
最近IT系の求人でフルスタックエンジニアという言葉をよく耳にするようになりました。
フルスタックエンジニアとしてやっていくために必要最低限の基本スキルを書いていこうと思います。
フルスタックエンジニアに必要な最低限の基本スキル
インフラ・ネットワークのスキル
まずは基礎となるインフラやネットワークに対する理解と知識、経験が必要になります。
インフラ専門の部署がない場合などは、仮想や物理サーバなどの準備から場合によってはデータセンターへのハウジングやルータ・スイッチの設定などインフラ・ネットワークに絡む仕事が関係してきます。
サービスを行うにあたってデータセンター(またはクラウドサービス)の選定や、サーバ、回線の選定を行えるスキルも関係します。
冗長性やセキュリティ、規模、パフォーマンス、運用を考慮してインフラやネットワークを準備していかなければなりません。
インフラやネットワークの障害時には障害対応も行う必要があるかもしれません。
システム設計のスキル
次にサービスを行うにあたり必要になるミドルウェアの選定、基本機能やDB関連の基本設計、そしてシステムの構築ができなくてはなりません。
インフラより高次の冗長性やセキュリティ、規模、パフォーマンス、運用を意識した選定・設計・構築スキルが求められます。
また技術系の営業がいない場合などは、お客さんとの要件定義や折衝、工数・予算出しなどのスキルも同時に必要になってくる可能性もあります。
プログラミングのスキル
インフラやシステムの設計思想を形にするためにベース部分のプログラミングをして一般プログラマーが作業できる土台を用意していきます。
ベース部分のプログラミングではプログラムレベルでの設計思想の実現や冗長性、拡張性、スケーリング、障害耐性やセキュリティ、パフォーマンス、運用時の手間などを考えて作業する必要があります。
また一般プログラマーが作業できる機能の切り出しや進捗管理、人員確保などのマネージメントスキルが必要になってくる場合もあります。
一般プログラマーが設計思想や基本部分を無視した独自の実装を行っていないかのコードレビューも必要です。
ここで手を抜くと酷い出来のサービスが出来上がってしまいます。
運用のスキル
基本的にサービスが始まった後の運用時の業務は会社によって様々だと思います。
例えばサポートから来た不具合の原因調査と改善、不正なアクセスの確認と排除、障害監視と障害時の原因究明と対応そして改善など。
DBを直接見ないと調査できないようなKPIやサポートなどの作業依頼がくることもあるかもしれません。
運用を行う際に実際にシステムを見ることのできるスキルが必要になってきます。
またメンテナンスのタイミングや方法などの段取り力も必要です。
システム設計時にノーメンテナンスでのアップデートができるように設計したのであれば、アップデート時にエラーが出ていないことの確認などシステムに絡んだ細々とした作業が出てきます。
エラーが出ていた場合は影響範囲の調査を行い、修正が必要であれば修正などを行います。
またシステムの機能拡張時のアップデートの実装作業やアップデートなども全体の流れを計画して一般プログラマーに指示しながら進める必要があります。
運用中は簡単にシステムを止められませんので、特にシステムを設計したエンジニアの知識は重宝されます。
まとめ
全ての工程に精通しているのがフルスタックエンジニアと呼ばれる人たちです。
フルスタックエンジニアは基本的に時間をかければ一人でサービスのシステム全てを作り上げ、運用することが可能なスキルを持っています。
基本的にフルスタックエンジニアはIT系ベンチャーで育ってきた人に多いと思います。
会社が小さいうちは全て自分でやらなければなりません。
全ての工程を一人とか少人数で担当しますので自然とフルスタックエンジニアになっていきます。
ただ一口にフルスタックエンジニアといっても会社によって取り組む業務は様々だと思います。
各工程の大枠だけに関わる会社、各工程の細かい所まで関わる会社、一人でなんでもやらされて器用貧乏にこき使われる会社など。
フルスタックエンジニアとして求人が出ていても想像した業務と違う場合も考えられますので、面接の時に実際の具体的な業務を確認しておく方が良いと思います。
基本的にフルスタックエンジニアとして活躍できる人材は年収500万以上もらえますので、安く募集されている求人には注意が必要です。
本当に会社によってフルスタックエンジニアの意味のとらえ方が違う場合がありますので注意して下さい。
本記事がフルスタックエンジニアについて興味がある方の参考になったら幸いです。