最先端技術が注目を集めるIT業界に興味をもち「システムエンジニア」を目指す人が増えています。
しかし、システムエンジニアの働き方を、
「プログラミングする人」
「ずっとパソコンの前で作業する人」
このようなイメージで、正確に把握できていない人も少なくありません。
そこで今回は「システムエンジニアの働き方」をテーマに、業務内容や必要スキルを解説します。
この記事でわかること
- システムエンジニアの働き方
- システムエンジニアの業務内容
- システムエンジニアの必要スキル
システムエンジニア(SE)とは
システムエンジニア(SystemEngineer)とは、ITシステムの開発に携わる職種です。
また、システムを開発する目的により、一般的な働き方は以下の2種類に分けられます。
- 社内SE
おもに自社システムを開発する - 社外SE
顧客の依頼をもとにシステム開発する
社内SE|自社システムを開発
社内SEは、自社システムの開発がおもな仕事です。自社システムの開発に業務が限定されることから、比較的働きやすいといったメリットがあります。
しかし、運用・保守の役割も多いことから、スキルアップやキャリアアップの選択肢も限定されるといったデメリットもあるようです。
- 勤務先が自社オフィスに限定される
- 指示系統が自社内で完結する(融通が利きやすい)
- スキルアップやキャリアアップの選択肢が少ない
(必要スキルが限定される、運用保守の業務が多い)
社外SE|顧客の依頼でシステムを開発
社外SEは、おもに顧客の依頼でシステム開発を行います。一般的なシステムエンジニアは、社外SEに該当することがほとんどです。
他社の業務現場で使用するシステムを開発するため、客先に常駐して開発やテストを実施することもあります。
- 幅広い経験を積める
- 人脈を広げられる
- 依頼主によって勤務先が変わる
- 納期に追われやすい
- コミュニケーションスキルが必要
また、所属(企業に属しているかどうか)により、分類が以下の2種類に分けられます。
- 客先常駐SE
所属とは別の企業で常駐開発する
(自社で開発して客先でテストするケースもある) - フリーランスSE
個人事業主として契約する企業で常駐開発する
職種の分類|開発するシステムにより異なる
システムエンジニアの職種は、開発するシステムや業務により以下の2種類に分類されます。
- 業務系エンジニア
- Web系エンジニア
広義にはシステムエンジニアと括られることもあり、基本的な業務内容に大きな違いはありません。
業務系エンジニア
業務系エンジニアは、企業の業務にかかわるシステムを開発します。
- 給与管理システム
- 勤怠管理システム
- 文書管理システム
おもな開発目的は、顧客業務の改善・効率化です。大規模なプロジェクトも多く、責任の重さを感じてしまうこともあります。
しかし、顧客と二人三脚でプロジェクトを進められることから、完遂したときの達成感には大きなやりがいを感じられます。
- Java
- C++
- C#
Web系エンジニア
Web系エンジニアは、Webブラウザ上で動くサービスやアプリケーションの開発に特化しています。
- フロントエンドエンジニア
Webサイトの表示や操作にかかわる開発を担当 - バックエンドエンジニア
Webサイトとサーバーをつなぐ開発を担当
システムエンジニアとしての役割は、業務系エンジニアと同じです。
ただし、システムのプラットフォームが異なるため、使用する開発言語は異なります。
- HTML
- CSS
- JavaScript
- Java
- PHP
- Ruby
- Python
【Q&A】SEとSler(システムインテグレーター)の違いは?
SIer(システムインテグレーター)とは、事業としてシステム開発から運用・保守まで一括で請け負う企業を指します。
SEとSIerは役割が類似しているため「何が違うの?」と困惑しがちですが、単純に「人か会社か」が異なるだけです。
- SE:システム開発するエンジニア(人)
- SIer:システム開発を請け負う企業(会社)
業務内容|3つの担当フェーズ
システムエンジニアは、おもに上流工程と呼ばれる3つのフェーズを担当します。
- 要求分析(要件定義)
顧客の要求をヒアリングし、システム化するための全体像を定義する - 基本設計
顧客要求を実現するため、システムの仕様を設計する - 詳細設計
システム化を実現するため、開発の仕組みや機能を設計する
開発規模や人員構成によっては、下流工程と呼ばれるフェーズ(製造やテストなど)を担当することもありますよ。
要件分析(要件定義)|顧客要求からシステムの全体像を定義
要件分析は、顧客の要求をヒアリングしながら、システム化で解決すべき課題を分析するフェーズです。
- どのような機能を実装すべきか
- どんなシステムを開発すべきか
- どれだけの期間と開発予算が必要か
システム開発の準備段階であり、顧客が「なぜシステム化を求めているのか」といった目的を深掘りします。
一般的には「要件定義」と一括りで呼ばれることがほとんどです。
要件分析:顧客がシステムに求める要件を分析する(ヒアリングする)
要件定義:顧客にシステム化するための要件を定義する(伝える)
基本設計|システムを外側から見た仕様を決定
基本設計では、顧客の要求をシステムで実現するための設計を行います。
- どのような機能を実装する?
- どのように操作する?
- どのように表示する?
後述する詳細設計との違いは、システムの見た目や動作といった「表面部」を設計することです。
顧客やプログラマーに見た目や動作を伝えるための「基本設計書」を作成します。
システムを「外から見た仕組み」を設計することから「外部設計」とも呼ばれています。
詳細設計|システムを内側から見た仕様を決定
詳細設計は、システム内部の仕組みや構造を設計するフェーズです。
プログラマーがコーディングするための「詳細設計書」を作成します。
ログイン画面ではユーザー名とパスワードを入力する
ログインボタンを押すとログイン処理が実行されてメニュー画面へ遷移する
ログインボタン押下時、以下の分岐処理を実行する
- テキスト未入力→エラー処理A
- テキスト入力誤り→エラー処理B
- テキスト入力OK→正常処理
システムの内部処理(外から見えない処理)を設計することが目的のため「内部設計」とも呼ばれています。
【Q&A】SEは製造(プログラミング)を担当しない?
システムエンジニアのおもな担当範囲は「上流工程」です。
そのため「製造〜テスト」といった下流工程は担当しないのでしょうか。
おもに下流工程は、プログラマーの担当範囲です。
しかし、開発規模や人員構成によっては、システムエンジニアが担当することもあります。
- 小規模な案件で役割分担すると効率が悪い場合
- プロジェクトの人員自体が不足している場合
- 実装難度の高い機能を対応できる要員がいない場合
上記はあくまでも一例ですが「システムエンジニア兼プログラマー」の役割を担うこともめずらしくありません。
プログラマーの下積みを経験したシステムエンジニアも多いので、難易度が高い機能は自ら対応しちゃうこともあります(僕自身もそうでした)
必要スキル|おもに顧客対応が求められる
システムエンジニアには、以下のスキルが求められます。
- プログラミングスキル
- マネジメントスキル
- コミュニケーションスキル
プロジェクトが計画通りに進捗するよう管理するのはもちろん、プログラマーをフォローする技術力も必要不可欠です。
依頼元の顧客とシステム開発するプログラマーの橋渡し的な役割でもあるため、双方との円滑なコミュニケーションも求められます。
プログラミングスキル
コーディングを担当する機会の少ないシステムエンジニアですが、プログラミングスキルを修得しておくべきです。
なぜなら、詳細設計書は「文書化したプログラム」といえるため、プログラミングスキルがなければ最適な提案はできません。
また、ソースコードの品質チェック(CDI)を担当することもあるため、プログラムの見方や最適化の方法を理解しておきましょう。
マネジメントスキル
システムエンジニアは、開発プロジェクトを管理(マネジメント)するスキルが必要です。
- 進捗を管理
納期に遅れないように進める - 予算を管理
予算が赤字とならないように進める - 品質を管理
バグやトラブルが発生しないように進める
システム開発には、想定外のトラブルがつきものです。
そのような場合には、顧客への状況報告や開発チームの軌道修正など、臨機応変な対応が求められます。
悪い状況に陥りそうな「前兆」を察知する能力がとくに重要です!
コミュニケーションスキル
開発プロジェクトが円滑に進むかどうかは「システムエンジニアのコミュニケーション能力にかかっている」といっても過言ではありません。
顧客とのコミュニケーションが不足してしまうと、以下の問題につながります。
- 顧客が満足しない不十分なシステムが出来上がってしまう
- ヒアリングが不十分で想定外の仕様変更が発生してしまう
開発チームとのコミュニケーションが不足してしまうと、以下の問題につながります。
- 顧客が求める方向性と開発チームの認識がズレてしまう
- 進捗や品質の問題を早期発見できない
(取り返しのつかないトラブルに発展する恐れあり)
システムエンジニアのコミュニケーションがなければ、顧客と開発チームが意思疎通できないことを認識しておきましょう。
【Q&A】スキルなしの未経験でも目指せる?
システムエンジニアは、未経験から目指すことも可能です。ただし、基本的にはプログラマーとして、開発スキルを習得することからスタートします。
一般的なシステム開発の企業は、以下の流れで人材構成するケースがほとんどです。
- プログラマーとして採用
- システムエンジニアとしての素質が
「あり」:システムエンジニアへ
「なし」:プログラマーのスペシャリストへ
システムエンジニアは、責任のかかる役割です。トラブルのリスクを考慮すると、未経験者をいきなり抜擢することはないでしょう。
キャリアプラン|自分に合った3種類の選択肢
システムエンジニアのキャリアプランは、以下の3種類が代表的です。
- スペシャリストとして専門性を高める
- マネージャーとして管理職を目指す
- フリーランスとして独立する
キャリアの選択肢によって、必要なスキルや役割が異なります。
システムエンジニアとして活動しながら、自分に合ったキャリアプランを見つけてみましょう。
スペシャリスト|ITスキルの専門性を高める
システムエンジニアとしての専門的な技術力を伸ばしたい人は「スペシャリスト」がおすすめです。
- 技術力を現場で発揮できるキャリアプラン
(プログラミングスキルやDB・サーバー構築スキルなど) - 専門資格を取得して対応の幅を広げる
(ネットワークスペシャリスト・データベーススペシャリストなど) - より待遇の良いキャリアにステップアップしやすい
マネージャー|管理職を目指す
システムエンジニアとしての管理スキルを伸ばしたい人は「マネージャー」がおすすめです。
- プロジェクト管理で力を発揮できるキャリアプラン
(プロジェクトマネージャー・プロジェクトリーダーなど) - プロジェクト全体をまとめる広い視野が必要
(納期、リソース、リスクヘッジなど) - 開発メンバーの進捗もマネジメントするためコミュニケーションスキルが求められる
フリーランス|個人事業主として独立する
システムエンジニアとしてのスキルに自信があれば、フリーランスに転身するといった選択肢もあります。
- 得意分野や興味を活かして比較的自由に活動できるキャリアプラン
- 個人で活動するための自己管理力や営業力が必要
- 収入は安定しないこともあるが、スキル次第では正社員を上回ることもある
働き方に迷ったときは|エージェントに相談しよう
今回のまとめ
- 働き方|社内SEと社外SE
- 職種|業務系SEとWeb系SE
- SEとSIerの違い|人か会社か
- 要件分析(要件定義)
- 基本設計
- 詳細設計
- プログラミングスキル
- マネジメントスキル
- コミュニケーションスキル
スキルを伸ばせばキャリアアップできる!(エージェントの利用をおすすめします)
システムエンジニアの働き方は、勤務先や請け負う案件によってさまざまです。
ただし、どの企業でも「上流工程を担当すること」「マネジメントスキルが必要なこと」は共通しています。
プロジェクトを成功に導く重要な役割を担うため、それだけ責任とやりがいを感じられる職業です。
これからシステムエンジニアを目指すのであれば、まずは「自分に合っているかどうか」を相談することから始めてみましょう!
コメント