システムエンジニアの仕事内容を具体的に知りたい。
いろいろ調べていると、難しい言葉などがあってなかなか想像しづらい。
就活でも、担当者の話についていけるようになりたいな。
本記事の内容
- システムエンジニアとは
- システムエンジニアの仕事内容
- 必要なスキル
- システムエンジニアの大変なところややりがい
- システムエンジニアの年収
- システムエンジニアの将来性やキャリアプラン
- システムエンジニアになる方法
本記事を書いている僕は、過去IT(SIer)企業やWEB会社に勤務し、プログラマーやシステムエンジニアを経験済み。
そして、現在WEBフリーランスとして活動中。
今回はシステムエンジニアの仕事内容がテーマです。
この記事では「システムエンジニアの仕事内容からスキル・年収」など、システムエンジニアを目指す際に必要な知識について網羅的にわかりやすく解説していきます。
システムエンジニアとは何なのか...とモヤっとした気持ちが晴れるし、今後あなたの目指すべき方向も分かると思いますよ。
1.システムエンジニアとは?
システムエンジニアとは、IT企業で活躍する職業の一種であり、主にコンピューターシステムの「設計」をすることがお仕事(上記の赤枠)。
同じIT企業で活躍するプログラマーとは区別されて、必要なスキルも違いますし、年収も割高です。
さらに将来的にも期待されること間違いありません。
前置きはこのくらいにして、システムエンジニアの仕事内容について詳しく解説していきます。
2.システムエンジニアの仕事内容とは【具体例あり】
システムエンジニアの主な仕事は、主に設計書をつくるエンジニアです。
下記の3つのフェーズ(工程)を担当します。
- 要件定義
- 外部設計
- 詳細設計※
※プロジェクトによっては、プログラマーが作ることもあります。
ではこれから、以下のクライアントのシステム化に対する要望例を挙げて、各フェーズを解説します。
1.要件定義
- 要件定義
- 外部設計
- 詳細設計
要件定義とは、クライアントの要望をどのようにシステムとして具現化させるのか検討する段階です。
出来上がる成果物として「要件定義書」という設計書を作ります。
IT業界の「要件定義」をビル建設の例でいうと、ビル建設するための設計書をつくる前の準備です。
例えば、「快適に過ごせるオフィスビルを建設したい」というクライアントの要望から、どんな機能をもつ部屋をつくるべきかを検討します。
受付、オフィス、カフェ、レストランなど、クライアントの目的を達成するための提案をします。
クライアントにヒアリングし、以下の手順で要件定義書を作成していきます。
- 目的を明確化させる
- 必要な機能を洗い出し
- 要件定義書を作成
1.要件定義|目的を明確化させる
- 目的を明確化させる.
- 必要な機能を洗い出し
- 要件定義書を作成.
目的 ➡︎「保険申し込みの事務処理に関わる社員を削減したいから」
クライアントのシステム化をする目的を明確にしておきます。
目的がわからないと、クライアントの潜在的な要望もわかりません。
ですから目的の先にある「こんな機能もあったらいいのでは?」というエンジニアからの提案もできません。
例えば、クライアントの会社で人員削減のためのシステム化であれば、その業務に関わる人材があまりいないことになります。
そうなると、ユーザーからの保険申し込みについて質問があった場合に、受ける窓口がなかったり、手薄にもなって対応しきれないことも考えられるからです。
ですから、システム的には質問専用のメール送信機能が必要であることや、あらかじめ「よくある質問」の解答機能が必要ないかをエンジニアから提案することもできます。
大事なことは、クライアントのシステム化する目的から、その先にある「機能的にあることで、ユーザーやクライアントにとって便利で良いもの」をエンジニアサイドから提案することです。
2.要件定義|必要な機能を洗い出し
- 目的を明確化させる
- 必要な機能を洗い出し.
- 要件定義書を作成.
必要な機能 ➡︎
「ユーザーが申し込みする内容(名前、電話、住所、メールアドレスなど...)」
「もし入力誤りがあれば申し込みをさせない→エラー表示」
「ユーザーが申し込みした情報はユーザー自身でPDFで保存可能」
「保険追加・変更・解約機能」など
クライアントとのヒアリングの中で、必要な機能の洗い出しを細かく行います。
この作業がないと、クライアントの求めるシステム化が不十分になります。
システム完成後になって後戻りが発生し、機能を直したり追加しないといけなくなることがあるからです。
具現化しクライアントにわかりやすく説明する
また、クライアントからの要望を一方的に聞くのではなく、聞いた内容をシステム的にどう実現するのかを説明することも必要です。
なぜなら、エンジニアの実現方法と、クライアントの思っている実現方法に相違がある可能性があるかもしれません。
例えば、ユーザーからの質問を受け付けたいとするならば、それをチャットなどのAPIを使って実現させるのか、専用メールでの対応なのか...
システムエンジニアとクライアント双方の認識の差異をなくさなければなりません。
そのためにも、クライアントの要望一つ一つに対しての実現可否はもちろんのこと、どのように具現化させるのかなどを事細かく詰めていく必要があります。
クライアントからの要望を、実際にコーディングするにはどうすべきかなどを頭でイメージしながら実現可否を考えます。
また、業務に適したプログラミング言語もありますから、その選定も行います。
3.要件定義|要件定義書を作成
- 目的を明確化させる
- 必要な機能を洗い出し
- 要件定義書を作成.
クライアントの要望を聞き入れたなら、実際に「要件定義書」を書いていきます。
前述した、以下の作業結果をまとめていきます。
- 目的を明確化させる
- 必要な機能を洗い出し
「要件定義書」を作成する目的は、クライアントに対する説明です。
ですから、専門的な用語などは入れずに、誰が読んでもわかりやすい記述をしていきます。
また、システム化することで、クライアントの抱える問題(業務課題)がどのように解決できるのかなども盛り込んでいきます。
では要件定義が終われば、次は「外部設計」のフェーズです。
2.外部設計
- 要件定義
- 外部設計
- 詳細設計
外部設計は、前述した「要件定義書」で決めた機能を、「外部設計書」という以下の成果物で具体化していきます。
- 画面・帳票設計書
- データベース設計
- インターフェース仕様
「外部設計書」とは、ビルを建設するときの間取り図みたいなものです。
1階に受付や事務所や休憩所があって、2階にオフィスやトイレや給湯室....最上階に展望台やレストランなど、ビル内に持つ機能を書いていくイメージです。
順番に解説します。
ここでも同じように、下記クライアントのシステム化要望があったと仮定してお話します。
1.外部設計|画面・帳票設計書
- 画面・帳票設計書.
- データベース設計
- インターフェース仕様
画面・帳票設計書とは、画面上の入出力項目や(送信)ボタンをどこに配置するかなど「画面レイアウト」を設計します。
そして、画面操作により画面が切り替わる「画面遷移図」も設計します。
ユーザーが保険申し込みをするための入力画面の設計です。
また、出力帳票(ユーザーがダウンロードできるPDF)などがあれば、そのレイアウト設計もしていきます。
操作性や見た目などについて書かれていますから、システムに対する知識がないクライアントにも分かるような設計書です。
クライアントにレビューしてもらいながら、最終的に共通認識を持つことに役立ちます。
画面上の入力ミス(未入力や形式エラーなど)があった場合の対処も、フロントサイド(画面側)でやるのか、サーバーサイド(アプリ側)でやるのかでプログラマーの負担も変わります。
ですから、コーディングのイメージを持ちながら設計します。
もちろんクライアントの要望が第一ですけどね!
2.外部設計|データベース設計
- 画面・帳票設計書
- データベース設計.
- インターフェース仕様
データベース設計とは、どのような構成でデータベースを定義するのかを書いた設計書です。
大きく、論理設計と物理設計があるのですが...
難しいことはやめて簡単に解説します。
まずどのようなデータが必要なのか洗い出します。例)「顧客」「予約」「注文」など
次に、各データはどんな属性を持つのか定義します。例)「顧客」であれば、顧客ID、顧客名、電話番号、住所など
このあと、主キーや外部キー、データの冗長化をなくす正規化、テーブル同士の関係を表すER図を作りますが、初心者にとって難しいので割愛します。
とりあえず、データベース設計では、必要となるデータや各データに持たせる属性を決めていくことです。
また、SQLといったデータを操作・定義する言語も理解しておかないと設計できませんよ。
3.外部設計|インターフェース仕様
- 画面・帳票設計書
- データベース設計
- インターフェース仕様.
インターフェース仕様というのは、外部システムとのデータのやりとりの仕組みを書いた設計書のこと。
インターフェース仕様書と言います。
具体的にいえば、保険を申し込んだ人のデータが、社外の本店システムに連携される場合などの接続方法やプロトコルなどを書きます。
以下、インターフェース仕様書に書いていく内容です。
- 接続方式:社外であればインターネット、社内ならイントラネットなど
- プロトコル:FTPなのかAPIを使うのかなど
- データ形式:XML、JSON形式
- インターフェース項目:実際にやり取りするデータ項目のこと(属性やバイト長など)
- タイミング:オフラインである夜に接続かもしくはリアルタイムかなど
外部システムとの認識相違があると、正しくデータ連携ができなくなります。
特に、インターフェース項目の設計については項目が多くなることもあります。
ですから、属性、バイト長などは入念に接続先と確認したりチェックが必要です。
「要件定義」「外部設計」が終われば、最後に「詳細設計」です。
3.詳細設計
詳細設計は、前述した「外部設計」で決めた機能を、さらに処理レベルまで落として書いていく設計書です。
- 要件定義
- 外部設計
- 詳細設計
「詳細設計書」とは、ビル内の機能(受付、事務所、オフィス)をさらに具体化した設計書です。
受付、オフィスの内装やデザイン、照明の配置、電源箇所といった細部を決めます。
設計書に書くことは、具体的に言うと、入力データのチェックやデータ更新(SQL)などシステム内部における機能を記述します。
「詳細設計書」は各機能が処理レベルまでブレークダウンして記述されていますから、クライアントが見ても理解できません。
最終的にプログラマーに渡してコーディングしていく設計書となります。
実際の開発では、プログラマーが詳細設計書を作ることもありました。
その場合には、システムエンジニアとのレビューで設計書の精度を上げていきます。
以上、システムエンジニアの主な仕事内容を解説しました。
では次節、プログラマーとの仕事の違いはどんなところなのか、お伝えしていきますね。
プログラマーとの仕事内容の違いとは
同じITエンジニアである「プログラマー」の仕事は主に「プログラミング」です。
システムエンジニアの作った各種「設計書」にもとづき、実際にプログラムをつくることがお仕事なんです。
プログラミング言語を習得しておかないとできない仕事ですよ。
関連プログラマーの仕事内容を実体験から分かりやすく解説|必要なスキルも!
では、システムエンジニアとしての仕事をするためにはどんなスキルが必要なのかを、次節で解説していきますね。
3.システムエンジニアに必要なスキル
- コミュニケーションスキル
- マネジメントスキル
- プログラミングスキル
システムエンジニアは、開発の「上流工程」においてクライアントにヒアリングし設計書に落とし込んでいきます。
ですから、コミュニケーションスキルがないとクライアントの要望が聞き出すことができませんから、設計書なんて作れません。
また、システムエンジニアはプログラマーなどのエンジニアも統括しスケジュール管理もしていきます。
開発がスムーズに行えるようプログラマーの進捗状況を把握します。
さらにプログラマーの作った「プログラム」や「テスト仕様書」などが、しっかりと設計書どおりに作られているかチェック(レビュー)します。
そのためには、システムエンジニアもプログラミングスキルがないとできないんです。
システムエンジニアになるためには「コミュニケーションスキル」「マネジメントスキル」「プログラミングスキル」は必須スキルです。
関連【システムエンジニアに必要なスキル】プログラミングは絶対に必要な理由
なんだかシステムエンジニアは難しく大変そうだなぁ...
そう思っているのも理解できます。
では、次節システムエンジニアの大変なところもお伝えしていきますね。
4.システムエンジニアの大変なところややりがい
まず、僕が感じたシステムエンジニアのの大変なところは以下3つ!
- コミュニケーションの難しさ
- IT関連の広い知識が必要(➡︎勉強しつづけないといけない)
- 残業が多い
特にコミュニケーションをとることが難しかったです。
コミュニケーションがうまく取れないと、クライアントの要望がうまく聞き出せなんです。
クライアントは、IT知識を備えているわけではありませんから、難しい専門用語だったりエンジニアとして常識的な技術なんて通じません。
仕様がなかなか決められずにいると、スケジュールは遅れるばかり...
ですから、時間がなく仕事に追われることもよくあり、つらい状況は多かったです。
とはいえ、やりがいがあるのも事実です。
やりがいはある!
実際に開発が終わり、納品し終えた時のクライアントの感謝の言葉は、なんともいえない嬉しさがありました。
また、数々の難題を乗り越えてきたことによる達成感も感じました。
SEとしての僕の実績をさらにアップさせ、今後ももっと活躍していける!という自信ともなったんです。
関連システムエンジニアの大変なところややりがいを17年の経験者が語るよ!
こんな「大変なところ」や「やりがい」もあるシステムエンジニアの年収を、次節でご紹介しますね。
5.システムエンジニアの年収
システムエンジニアの平均年収は504万円。
システムエンジニアの平均年収は一般サラリーマンのそれに比べて高いです。
参考:厚生労働省「-R1賃金構造基本統計調査-」より
もちろんプログラマーよりも割高な給料となりますから、やりがいやモチベーションも上がります。
関連プログラマーの平均年収|SEより低い理由と高収入を目指す方法
関連【プログラマーとSEの違い】仕事・年収・求められるスキルを解説!【経験談】
ITエンジニアとして活躍したいのなら、システムエンジニアは絶対になっておきたい職業ですね!
さらにシステムエンジニアは、将来性やその後のキャリアプランも魅力的です。
6.システムエンジニアの将来性やキャリアプラン
システムエンジニアの将来には期待しても良いです!
なぜなら、経済産業省「IT人材の最新動向と将来推計に関する調査結果」によると、
2030年には現在(2020年5月時点)の2倍である約40万人以上ものIT人材が不足すると言われています。
さらに国は、DX(デジタルトランスフォーメーション)を推進し、企業のIT化を推進しています。
企業のIT化に向け、システムエンジニアの提案力が必要になってくるというわけです。
関連プログラマーの需要と将来性|DX(デジタルトランスフォーメーション)の推進
こうしたことから、システムエンジニアを含め、ITエンジニアの活躍の場は多くなると言えますよね!
AIでシステムエンジニアの仕事は奪われないの?
一方で、今後AIなどが台頭し、ITエンジニアの仕事が奪われるのでは?という声も聞こえてきます。
しかし「システムエンジニア」に限っては奪われないと思っています。
なぜなら、システムエンジニアはクライアントに近い立場で仕事ができるからです。
クライアント、すなわち人の思考や思惑を理解しそれに合った最良の提案するのは、同じ人(エンジニア)でないとできません。
つまり、システムエンジニアの仕事は、AIなどではできない仕事であるということです。
AIによって奪われるのは、プログラマーの仕事の一部なだけで、システムエンジニアの仕事は奪われないというのが僕の考えです。
関連AIでプログラマーのどんな仕事がなくなる?プログラマーの将来性
システムエンジニアのあとのキャリアプラン
以下のようなキャリアプランがあります。
- ITコンサルタント
- 独立(フリーランス)
外資系のIT企業などに転職できると、給与もさらに高額です。
仕事も日本だけでなく、世界的に活躍できますから、やりがいもあります。
関連ITエンジニアで年収1000万円稼ぐ!どんな会社でどんなスキルが必要なのか
関連ITエンジニアが活躍する大手IT企業の平均年収ランキング50!
また、システムエンジニアとしてのスキルを活かして、直接お客さんとも取引できますから、フリーランスなど独立することも可能です。
会社に縛られない働き方ができるのが魅力ですよね!
そんな魅力あるシステムエンジニアのなり方を、次節で解説していきますね。
7.システムエンジニアになる方法
プログラマーとして経験を積み、その後システムエンジニアになるキャリアプランです。
ですから、まずはIT企業などの会社に採用され、「プログラマー」からのスタートを切るところから始まります。
プログラマーになるには、新卒であれば採用ハードルは低く、IT知識などプログラミング未経験でも採用してくれます。
実際に僕も新卒未経験で、IT企業に採用されて、プログラマーになりました。
とはいえ、プログラマーになれるとはいっても、さすがに未経験ではついていくのが大変です。
僕も何度も「辞めようと」思ったことも事実です。
プログラミングを学習しよう!
独学でも十分に学習できますから、あらかじめプログラミングを学んでおくことをオススメします。
しかし、独学は「挫折」しやすいです。
なぜなら、学習につまづくことが多いし、またその解決方法も見つかず諦めがちになるからです。
ですから、プログラミングスクールなど利用し、プロのエンジニアの指導を受ける方が手っ取り早くプログラミングスキルは身につきますよ。
まずはIT企業などに採用されて「プログラマー」として活動しましょう。
プログラマーとして活動する中で、プログラミングスキルは自然に身についていき、20代後半ごろからシステムエンジニアとして活躍できますよ。
IT業界は実力主義です。
実努力次第ではもっと早く、システムエンジニアになれますからね!
関連SEになるための勉強方法はプログラマーとしての実践経験を積むこと!
関連20代未経験からSEに転職したい方はまずプログラマーを目指すべき話
関連プログラマーになるには?|僕の失敗と反省を暴露!それを活かし活躍できるプログラマーになろう!
まとめ:まずはプログラマーを目指しましょう!
これからシステムエンジニアを目指す方向けに、システムエンジニアの仕事内容を解説しました。
システムエンジニアの仕事内容は、主にクライアントの要望を聞いて設計書を作成します。
- 要件定義:クライアント向けにシステム化する機能をまとめる
- 外部設計:機能をさらに画面・帳票レイアウトなどに具現化しクライアント向けにつくる
- 詳細設計:処理レベルで書いたプログラマー向けの設計書
システムエンジニアの将来には期待しても良いです。
また、その後のキャリアプランも非常にやりがいあるものとなります。
そのためには、まずはIT企業などで「プログラマー」として活動することが必要です。
≫プログラマーになるには?|僕の失敗と反省を暴露!それを活かし活躍できるプログラマーになろう!
そのプログラマーとしての第一歩として、プログラミングをしっかりと学んでおきましょう。
≫目的別におすすめな未経験者のためのプログラミングスクール|現役エンジニアが厳選