普通に生活していると、システムエンジニアの仕事内容はあまり日常的なものではありません。情報系の勉強をしている方でも、意外に知らない方が多いのではないでしょうか。かくいう筆者も実際にシステムエンジニアになるまで、「システムを作る=プログラミングする」ことだと思っていました。
IT業界に数あるITエンジニアの職種の中から、今回はシステムエンジニアの詳しい仕事内容や年収、プログラマや社内SEとの違いについてご紹介したいと思います。
目次
1.ITエンジニアの職種
IT業界には、さまざまな職種のエンジニアが存在しており、システムエンジニアはITエンジニアの職種の一つとなっています。
・システムエンジニア
顧客の要望や抱えている問題点をヒアリングをして、これから作成するソフトウェアの設計書を主に作成するエンジニア
・プログラマー
システムの設計書に基づいて、プログラミング言語を用いてプログラミングやテストを行うエンジニア
・社内SE
自社の情報システム部において、自社内のシステム開発に従事するエンジニア
・サーバーエンジニア
ソフトウェアが動く際に使用するデータベースサーバーやWebサーバーなどの、サーバーを構築・運用保守するエンジニア
・ネットワークエンジニア
ソフトウェアが動く際に使用するコンピュータネットワークの設計や構築・運用保守をするエンジニア
・インフラエンジニア
ソフトウェアを動かすための通信基盤を構築・運用保守するエンジニア。サーバーエンジニアやネットワークエンジニアと呼ばれることもある
これらは代表的な職種です。他にも数あるITエンジニアの職種を知ることで、自分がどのようなエンジニアとして活躍していきたいか、どのようなキャリアパスを描いていきたいのかをイメージしやすくなります。
ITエンジニアの種類については、以下の記事でも詳しくまとめられています。全15種類について書かれていますので、こちらも合わせて参考に、ぜひご覧ください。
2.システムエンジニア(SE)とは
システムエンジニアとは、簡単に言うと「システムの設計図を作る人」のことです。System Engineerの頭文字を取って、SE(エスイー)とも呼ばれています。システム開発には様々な工程があり、システムエンジニアは、システムの設計図(設計書)を作ることが主なお仕事になります。
その後経験を積んでくると、工程管理や人員管理、見積もりなども行うようになります。キャリアアップすると、システム開発の総合的なマネジメントを行うポジションである「プロジェクトマネージャ(PM:ピーエム)」になります。
3.システムエンジニア、プログラマー、社内SEの違い
ITエンジニアの中でも、システムエンジニア(SE)とプログラマー、社内SEの違いがわからないという声はよく聞かれます。
それぞれの主な違いは、以下のとおりです。
・システムエンジニア(SE)とプログラマーの違い
システムエンジニアは、顧客からシステム要件をヒアリングし、プログラマーに渡すための設計書を作成します。
一方、プログラマーは、主にプログラミング言語を用いて仕様書に沿ってプログラミングを行う技術者のことを指します。実装後のテストはシステムエンジニアとプログラマー両方が認識を合わせながら行うこともありますが、プログラミングを主な業務内容とするか、しないかが大きな違いとなります。
・システムエンジニアと社内SEの違い
・システムエンジニアの業務は、プロジェクト単位・顧客常駐で行うことが多い
・社内SEは社内の情報システム部に所属し、自社での業務となる。社内SEの顧客は自社の社員となり、プログラミングを外注する場合は協力会社との調整も必要
・社内SEは経営層の視点からシステム要件の提案が必要となることもある
・社内SEは社内インフラの整備や、社内のITサポートも行うことがある
システム開発を家づくりに例えると、システムエンジニアの役割は「建築士」です。
顧客との対話(ヒアリング)を行い、顧客の要望・用途を満たした家の設計図を、時にはより良くするための提案を交えつつ、作成します。さらにポジションによっては、必要な資材を用意したり大工や左官など技術者の取りまとめを行う現場監督の役割も行います。それに対してプログラマー(PG)とは、システムエンジニアが起こした設計図をもとにして実際に家を建てる「大工など技術者」の役割になります。
大工の技術がなくても建築士にはなれますが、大工の技術を理解していなくては設計は行えません。それと同じで、システムエンジニアはバリバリにプログラミングが得意である必要はありません。しかしプログラマーの技術(どんなことが可能か、どれくらいの労力で可能か)を把握できていなければ、設計も行えないのです。そのためプログラマーからスタートして技術面をしっかりと把握した後に、システムエンジニアになる場合がほとんどです。
4.システムエンジニア(SE)の仕事内容
システム開発は、主に次のような行程で進みます。
システムエンジニアとして中堅以上になれば、リーダーとして工程管理や進捗管理、人員管理など、マネジメント業務も行うようになります。
工程 | 担当 |
---|---|
(1)要件定義 | SE |
(2)基本設計 | SE |
(3)詳細設計 | SE |
(4)製造 | PG(プログラマー) |
(5)テスト | PG、SE、品質管理部門など |
(6)運用・保守 | SE、ヘルプデスクなど |
これらの工程のうち、システムエンジニア(SE)の具体的な仕事内容について、詳しくご説明していきたいと思います。
4.1 要件定義
この工程では、顧客の要望をヒアリングしシステムの全体像を決定します。
どんな目的でどんな機能が必要であり、また業務のどこまでをシステム化するのかなど、対象を明確化します。顧客の業務内容を理解した上で曖昧な表現も多い顧客要望を正しく取り込みつつ、より良くする提案も合わせて行います。
またハードウェアやOS、データベースソフトウェアなど、動作環境の選定も行います。
この時点で顧客と開発の認識にずれが生じると後々致命的な問題につながることもあり、最も技術力が問われるフェーズで、慎重に打ち合わせを重ねていく必要があります。
4.2 基本設計
この工程では、要件定義で決まった内容をもとに、次のような内容を決定していきます。
・具体的にどんな画面や帳票(システムから出力できる書類のようなもの)が必要なのか。
・どんな情報をデータベースに保存する必要があるのか。(データベース設計)
・外部システムとの連携は必要か。必要なら、どう実現するのか。
この時点で画面の見た目や帳票のサンプルを作成し、デザインや必要な項目を確定します。
4.3 詳細設計
この工程では、基本設計できまった内容をもとに、より詳細な内部処理方法を決定します。製造を担当するプログラマに渡す設計書は、この工程で作成されます。
4.4 プログラミング(製造)
システム設計が終了したら、いよいよプログラミング(コーディング)を行います。この行程はシステムエンジニアではなく、PG(プログラマー)が担当します。
プログラマーが製造している間に、システムエンジニアはテストの準備を行います。
4.5 テスト
プログラムには共通部分もありますが、ほとんどの部分は各パーツに分割して作成します。まずパーツごとに正確に動くのかを確認するのが、単体テストです。
単体テストはそのパーツの製造を担当したプログラマーや、設計を担当したシステムエンジニアなどが行います。テストした結果問題が発覚した場合は、プログラマーに修正を依頼します。
いくつか関連するパーツが揃ったら、それぞれのパーツ間でデータの受け渡しや画面の移動が正常に行えるかをチェックする、結合テストを行います。結合テストは主にシステムエンジニアが担当します。
全部のパーツが揃ったら、実際に運用する際の環境をできるだけ再現した状態で、総合テストを行います。このテストも主にシステムエンジニアが担当しますが、テスト専門の部署(品質管理部門など)が並行してテストを行う場合もあります。
4.6 運用・保守
システムが完成したら、いよいよ運用が始まります。多くのシステムは作ったら作りっぱなしではなく、保守(定期メンテナンスやトラブル対応から、データベースの操作までさまざま)を行います。この保守作業は専門の部署や専任の保守エンジニア(ヘルプデスク)が対応する場合もありますが、基本的にシステムエンジニアが行います。
運用開始後にプログラムにバグが発覚した場合、システムエンジニアはエラーの原因を突き止めてプログラマーに修正を依頼します。しかし運用開始から時間が経っていると、プログラマーが別のプロジェクトに参加して忙しいなどで修正を行ってもらえない状況もあります。そういう場合は、システムエンジニアがプログラムの修正も行うことがあります。
5.システムエンジニアに求められるスキル
システムエンジニアに求められるスキルとしては、主に以下のスキルが挙げられます。
・コミュニケーション能力
まずはコミュニケーション能力です。
システム開発は、黙々と一人で行うものではなく、多くの人達と意思疎通を図りながら進めていく必要があるからです。
特に要件定義では、顧客の要求を正確にヒアリングする必要があります。要件定義にミスがあると仕様変更となり、プログラミングやテストの作業工程に手戻りが発生し、最終的に納期が間に合わなくなるなどの問題が生じます。
・論理的思考能力
物事について、順序立てて考えることができるスキルです。
相手にわかりやすい説明ができるかどうかや、どのような処理手順を踏めばシステム要件が実現できるのか、システム設計を行う上でも必要となるスキルです。
・文書作成スキル
基本的な文書作成スキルも必要です。
顧客との打ち合わせにおいて、視覚的にも見やすい資料が作成できること、またはプログラマーに対して、システムの構造や動きを正確に伝えるためにも必要なスキルです。
・プロジェクト管理能力
納期内にプロジェクトを完了させる必要があるので、人員調整や工程管理、作業見積もりなどのプロジェクト管理能力も問われます。
プロジェクト管理は主にプロジェクトマネージャー(PM)が行います。
・ITスキル
IT技術の進歩は早いだけではなく、プログラミング言語やデータベース、ネットワーク、セキュリティなど、システムエンジニアに必要とされるITスキルは幅広くあります。
すぐに全てを習得できるものではないので、基礎からの日々の勉強は欠かせません。技術が好きという気持ちこそ、システムエンジニアに最も必要と言えるかもしれません。
・業務スキル
例えば会計ソフトを開発する場合には、簿記の知識が必要となります。顧客の要望をしっかりと汲み取るためには、IT系以外の知識(顧客の業務内容)についても習得する必要があります。
・英語力
海外アウトソーシング(オフショア開発:海外企業に製造の下請けを発注すること)を担うブリッジSEであれば、英語力は必須です。
国内企業のシステムエンジニアであれば、顧客も国内企業がメインであるため、基本は日本語でもOKです。
しかし、最新の技術情報を拾おうとするとなると、ほとんどがまずは英語の文書を読むことが必要となってきます。グローバル化に伴い、社内公用語を英語にする企業も増加しており、これからのシステムエンジニアは技術力だけでなく、ますます英語力が問われる可能性が高いと言えます。
したがってブリッジSEに限らず、システムエンジニアも英語は学んでおきたいところです。
6.システムエンジニアの平均年収(職種別)
システム開発の現場には、システムエンジニア以外にもさまざまな職種が存在しますが、その平均年収は一般的に仕事内容で変化します。これまでにあがったシステムエンジニアと、それに関連する職種計4つの「年収のボリュームゾーン」は、次の表のようになります。
プログラマー(PG) | 250万~600万 |
---|---|
システムエンジニア(SE) | 300万~700万 |
ブリッジSE | 400万~1000万 |
プロジェクトマネージャ(PM) | 500万~1000万 |
プログラマーよりもシステムエンジニアの方が、年収が高い傾向にあります。さらに経験やマネジメント力が必要なPMや語学力が必要なブリッジSEは、年収が高まる傾向にあります。
7.まとめ
システムエンジニアとしての業務は主に設計ですが、設計をするためには幅広い知識やスキルが必要なため、いろいろな技術に興味を持って学べる姿勢が大切となります。
プログラミングから設計構築まで、経験を積めば積むほど業務内容も多岐にわたるため、ネットワークエンジニアや社内SEなど、他の職種へキャリアチェンジする際にも、システムエンジニアの経験が生かせることが多くなります。ITエンジニアの第一歩として、システムエンジニアはおすすめです。