Blog

SEの役割について

こんにちは。ソリューションSecのNKです。

今回は、私が所属する部署で主に担当している受託開発を行うにあたって

エンジニアの役割にはどのようなものがあるかご紹介したいと思います。

異業界の方からすると、システムエンジニアというとすべて包括して考えがちですが

システム開発といっても内容は多種多様で

どんなシステムを開発するのか、その中でどんな業務を担当するのかによって

それぞれに専門性の高い知見とスキルが求められます。

イメージがつきにくい方は、医師を連想してもらうといいかもしれません。

身体の箇所に応じて診療科が分かれており、それぞれに専門性の高い先生がおられます。

私たちは胃や腸に異変を感じれば消化器内科を

歯が痛くなれば歯医者(口腔外科)を

目が悪くなれば眼科を受診しますよね。

これはシステムにおいても基本的な考え方は同じです。

中にはスーパードクター(フルスタックエンジニア)と言われるような、全てにおいて高い技術を持った方もいるかもしれませんが

恐らくそのような方は極めて稀でしょう。

では、どのような役割に分かれているのか紹介していきます。

■PM(プロジェクトマネージャ)

⇒ プロジェクトの計画・遂行に責任を負う、プロジェクトの管理者。

品質・コスト・納期・開発リソースなど、全てにおいて責任を負いますが直接成果物の作成に携わることはほぼありません。

■SE(システムエンジニア)

⇒ 情報システムの企画、設計、開発、試験、構築、導入、運用、更新、修正、廃棄などに携わる技術者の総称。

狭義には、ソフトウェアの開発に携わる技術者のうち、プログラミング以外(要件定義や設計・客先とのコミュニケーションなど)の業務を担当する者のこと。 専門分野としては大きく下記に分けられます。

 ∟アプリケーションエンジニア(業務系/Web系/スマホのアプリを扱う)

  ∟フロントエンドエンジニア (見た目に関わるデザインや機能が専門)

  ∟サーバサイドエンジニア (DB連携など目に見えない裏側の処理が専門)

  ∟ネットワークエンジニア (システム安定稼働に向けた運用監視・保守が専門)

  ∟セキュリティエンジニア (サイバー攻撃を未然に防ぐなどセキュリティに特化)

 ∟組み込み系エンジニア(機械や家電などの工業製品を扱う)

■PG(プログラマー)

 ∟Webアプリケーション(PHP/Java/Pythonなど)

 ∟業務系アプリケーション(C#/Java/Pythonなど)

 ∟スマホアプリケーション(Objective-C/Swift/Javaなど)

 ∟ゲーム(C++/C#など)

 ∟組み込み(Java/C++/ラダーなど)

簡単にまとめましたが、システム開発にも上記のような専門分野があり

必要なスキルや経験はそれぞれに異なります。

しかしながら中堅中小と言われるSIerではここまでの専業化は出来ず

上位SEがすべての役割をある程度包括的に請け負っているのが現状だと思います。

業界全体的なリソース不足の中で、集中する負荷を分散していくためにはまだまだ課題が山積みですが

医師のように特定分野における専門性を磨き

それを付加価値として成果に結びつけていければ理想ですね。

個人開業医でも全ての診療科の看板を掲げている方は見たことないですし

仮にあったとしても本当に対応出来るのか逆に怪しいです(笑)

今後の市場の動向をふまえつつ、エンジニアとしてはどの分野・役割でスキルを磨いておくべきか

しっかりと考えていく必要がありそうです。