SE(システムエンジニア)になるための学習方法と具体的な仕事内容

はてブ

皆さんはSE(システムエンジニア)にどんなイメージを持っていますか?

「パソコンの前に座ってプログラミングをしている」
そんな感じでしょうか。

確かに、そういう側面もあります。しかし、SEの本来するべき仕事は違います。今回はSEの仕事内容、SEになるための学習方法をご紹介します。

SE(システムエンジニア)とは?

システムエンジニアとは?

システムエンジニアとは、情報システムの企画、設計、開発、試験、構築、導入、運用、更新、修正、廃棄などに携わる技術者のことです。

これは、一般的には正しい定義です。ただ、企画ってなに、設計ってなにってことを知っていないとよくわかりません。ここでは、ソフトウェアの開発に携わる技術者のうち、プログラミング以外の業務を担当する人と定義します。

システムプロジェクトを牽引するのがシステムエンジニア

「システムプロジェクトを牽引する」これが本来のSE(システムエンジニア)の仕事です。クライアントから要求をヒアリングしてシステムの設計を行うことおよびそれを含めたシステム開発全体を計画通り進めることです。単に、「パソコンの前に座ってプログラミングをしている」とは大きく違いがあります。

SEの平均給与はどれくらい?

その前に、やっぱり気になるお金の話。SEの平均給与はどれくらいかを明らかにします。

SEの平均年収は、約550万円です。全職種の平均年収が、約455万円ですので、その差は95万円。かなり高い水準にありますね。魅力的な職種です。

※平均年収は、厚生労働省「賃金構造基本統計調査(平成29年)」より算出
https://www.e-stat.go.jp/stat-search/files?page=1&toukei=00450091&tstat=000001011429

システムエンジニアは給料が安い?平均給与から読み解く実情

SE(システムエンジニア)の具体的な仕事内容

システムエンジニアの具体的な仕事

では、SE(システムエンジニア)の具体的な仕事内容を見ていきましょう。

初めての方には、「プログラマー」と「システムエンジニア」の違いがよく分からない方もいらっしゃるかもしれません。ここでは、一般的な大規模なシステムの開発に採用されることの多い「ウォーターフォールモデル」の流れを見ながら、その違いを明確にします。その後、システムエンジニアの仕事内容を詳しく見ていきます。

ウォーターフォールモデルの流れは開発フェーズとも呼ばれ、次の6つの順に作業を進めます。

①要求分析・要件定義
②基本設計
③詳細設計
④プログラミング
⑤テスト
⑥稼働

この中で①要求分析・要件定義、②基本設計、③詳細設計 ⑤テストを行うのがSEです。

ちなみに、「要求分析・要件定義」「基本設計」「詳細設計」のことを上流工程、プログラミングを下流工程と言われていて、上流から下流に滝のように水が流れる様からウォーターフォールモデルと呼ばれています。その他の開発モデルとしては、スパイラルモデルやアジャイルと呼ばれるモデルがありますが、それは別の機会にお話します。

では、SEの仕事内容を詳しく見ていきましょう。

クライアントの要件を定義する

クライアントの要件を定義するのは、「要求分析」と「要求定義」です。

「要求分析」では、クライアントはどんなシステムを望んでいるのか(ニーズ)どんなシステムが必要なのか(シーズ)をヒアリングします。

どんな業務をシステム化したいのか、だれが利用するのか、いつ利用するのかや現在のクライアントの事業の可能性や技術力からどんなシステムが必要なのか、多くのことをヒアリングし、分析します。

システムの再構築であれば、現在のクライアントの仕事のやり方と現行システムのどういうところに違いがあるのか、どういうところが不満なのかも確認していく必要があります。

ここで注意すべきことがあります。クライアントに「どういうシステムを作りたいですか?」と聞いたところで、答えは返ってきません。なぜなら、クライアントはシステムに対して素人です。場合によっては、本来クライアントが知っているはずの業務についても素人の場合があります、SEは、システムのことは当然ですが、クライアントの業務のことも理解して「要求分析」を行う必要があります。

「要件定義」では、要求分析で洗い出したクライアントの要求をまとめます。「要求分析」の結果を、クライアントにもシステム開発者にも理解できる言葉で文書で残しておく必要があります。この文書のことを、「要求仕様書」とか「要件定義書」と呼びます。

この仕事はとても大切です。なぜなら、この文章はこれから作るシステムの機能を明確にして合意するものだからです。この仕事を怠ると、後々クライアントとの意見の相違が発生し、最悪の場合システム開発のやり直しという大きなリスクをはらんでいるからです。

「要求分析・要件定義」は、システムの機能を決める大切なフェーズです。SEとしては、コンピュータとはかけ離れた世界に映るかもしれません。しかし、このフェーズが出来る人は「コンサルタント」とも呼ばれ重要視されます。また、多くのSEが目指すべき領域です。

プログラマーのために仕様書を作る

プログラマーのために仕様書を作るのが、「基本設計」と「詳細設計」です。

「基本設計」では、システムで何を実現するのかを決めていきます。「要件定義」に基づいて、業務の流れとシステム化の範囲を決める(業務フロー設計)、システムの利用者とシステムとのやり取りを決める(ユーザインターフェース設計)、データとしてどのような項目をどのように保管するのか(データベース設計)、システムの機能的な部分を決めていきます。

また、システムにデータを入力してから帰ってくるまでの時間の目安(レスポンスタイム)や最近非常に厳しくなっているセキュリティ等についても決めていきます。

「基本設計」で決定したことは、基本設計書として文書化し、クライアントとレビューして合意します。

「詳細設計」では、プログラミングをするための詳細な設計をします。

「基本設計」に基づいて、機能ごとの処理、フローチャートや画面や帳票の詳細設計など、プログラミングが出来るレベルまで詳細化していきます。当然ですが、プログラミングができるレベルまで設計しますので、メインフレームなのかパソコンなのか、OSはなんなのか、プログラミングする言語はなんなのかをプログラマーが理解できるように記述をします。

「詳細設計」で決定したことは、詳細設計書として文書化します。なお、この文書をクライアントとレビューすることはありません。

プロジェクトの進捗管理を行う

プロジェクトの進捗を管理することを「プロジェクト管理」と言います。

ところで、「プロジェクト管理」とはなんでしょう?

「プロジェクト管理」とは、「クライアントの要求を期限までに達成するために、計画を策定し、その計画に従って遂行するために、日々の進捗状況を管理する」ことです。プロジェクトの特性には、次の3つがあります。

① 有期性 : 開始と終了が明確に決まっている
② 独自性 : 工場などでの大量生産と違い、同じシステムは開発しない
③ 段階的詳細化 : 要求分析・要件定義~基本設計~詳細設計~プログラミング
と順々に作業手順や設計書等の成果物が決められる

システム開発プロジェクトは、期間の途中での変更要素の多いプロジェクトです。変更の要素としては、クライアントの仕事にやり方が変わる、法律や業界標準が変わるや想定以上の要員が必要となる等、当初の計画通り行かないことが多くあります。というより、当初の計画通り進まないのがプロジェクトと理解したほうがいいと思います。

プロジェクトの目標は、QCDを達成すること。これは、プロジェクト管理をする際によく言われることです。QCDとは、次の3つのことを指します。


Q…品質 quality
C…コスト cost
D…納期 delivery

の3つの頭文字をとったものです。

「品質管理」では、システムにバグは無いか、クライアントの要望通りの機能が実現されているかや当初設定したレスポンスを確保しているかを確実にするための管理を行います。

「コスト管理」では、システムの規模は増えていないか、生産性は落ちていないか等、予定外のコストがかかっていないかを管理します。

「納期管理」では、最終的な稼働時期は達成できるか、フェーズごとの成果物は計画通り出来ているか等を管理します。

QCDを管理して、問題が発生した場合やしそうな場合に適切に対処することで、プロジェクトを成功に導きます。

このように、プロジェクトの特性と目標を考慮しながら進めるべき「プロジェクト管理」は、SEにとってとても大切な仕事と言えます。

クライアントとの期待値を調整する

クライアントとの期待値を調整することはとても重要です。特に、クライアントの要求をヒアリングする「要求分析・要件定義」ではなおさらです。

前述したとおり、クライアントはシステムに対して素人です。
「ここのところは機械的に処理して」
「この項目に数字を入力したら、自動的に表示して」などなど、

システムの再構築の場合は、
「現行システムと同じようにしてくれればいいから」
など、あいまいな表現で要求してくることは日常茶飯事です。

また、クライアントはシステムに過大な期待をすることもあります。

「こんなことぐらい簡単にできるでしょう」
「Excelみたいにしてくれれば良いんだから」などなど。

これを真に受けていると、システム化を失敗したり、膨大なコストが必要になったりします。いわゆる、プロジェクトの失敗です。このようなことを起こさないためにも、クライアントとの期待値を調整する必要があります。

SE(システムエンジニア)になるための学習方法

システムエンジニアの学習方法?

ここまで、SEの具体的仕事内容を見てきました。仕事内容は大変そうだけど、やりがいもありそう。何といっても、給与が高いのは魅力的。多くの方は、そのように思うのではないでしょうか。

でも、「どうやったら、SEになれるの?」と思うのではないでしょうか。 ここからは、SEになるための学習方法を開発フェーズの1つである「詳細設計」に絞ってみていきます。

「詳細設計」、「基本設計」「要求分析・要件定義」とひとつづつステップアップしていくのがお勧めです。なお、学習の方法は、「基本設計」や「要求分析・要件定義」も同様です。

「詳細設計」が出来るようになるための学習の順序。その第一段階は、プログラミングを学ぶことです。

「ちょっと待った!プログラミングはプログラマの仕事で、SEには関係ないんじゃないの?」

確かに、「プログラマ」と「システムエンジニア」の違いをそのように紹介しました。

ですが、「詳細設計」は「プログラミングができるレベルまで詳細化していきます」とも記載しています。プログラミング、特にプログラミング言語を知らずに「詳細設計」が出来るでしょうか?

だからこそ、プログラミングを学習する必要があります。

「プログラミング」を学習して、「詳細設計」の基礎知識を学習します。そして、基礎知識をベースに実際に詳細設計を先輩について行います。これを、OJT(On-The-Job Training)と呼びます。

ここでは、「プログラミング」や「詳細設計」の基礎知識を学ぶ方法として、「Web学習サイトで勉強する」「本を使って学習する」「プログラミングスクールで学習する」方法を紹介します。

Web学習サイトで勉強する

「プログラミング」や「詳細設計」を学習する、最も手軽で手っ取り早い方法。それは「Web学習サイトで勉強する」ことですよね。いまからでも、始められます。ただし、注意が必要です。それは、必要な学習時間を少なめに設定してしまうことです。

一般的に仕事としてプログラミングできるレベルになるためにはは、1000時間程かかる言われています。毎日2時間学習時間を確保しても、17か月もかかってしまいます。しかも、最初のころは、思ったようにはかどりません。そして、嫌になってやめてしまうかもしれません。

ここであきらめる必要はありません。現在は、出来る限り短時間で効率よく学習できるサイトがあります。そのようなサイトを利用すれば、短時間で学習することが可能です。お勧めのサイトは、後ほど紹介します。

本を使って学習する

2つ目の学習方法は、「本を使って学習する」です。

本を購入して学習する方法は、初めての人にとって取り組みやすい学習方法と言えます。また、ご存知の通りネット上の情報は正しいものもあれは、間違っている物もあります。その点、本は出版社が責任をもって出していますから、その情報は正確なことが多いです。

ただし、特にプログラミングは本を読んだからと言って、身につくことはありません。本を読みながら、実際に手を動かしてプログラミングをする必要があります。学習サイトと組み合わせながら、本を使って学習する方法が効果的です。

プログラミングスクールで学習する

最後は、「プログラミングスクールで学習する」です。この方法が、最も効率的で、最も短期間に学習する事が出来ます。ただ、お金はかかります。

プログラミングスクールのメリットは、「先生がいる」ということです。分からないことが有ったらその場で聞くことができます。これはめちゃめちゃ大きいです。プログラミングに限らず、分からないことが出来たらその場で解決することは、学習速度を飛躍的に向上させてくれます。

もうひとつ、プログラミングスクールのメリットは、継続できるってことです。Webや本を使った独学は、やる気が無くなるとやめてしまうことがあります。スクールは、お金も払っているので行かなきゃもったいないと思うので継続できます。

飽き性の人は、「プログラミングスクールで学習する」がお勧めです。

独学でSE(システムエンジニア)になれる?必要なスキルと勉強方法

SE(システムエンジニア)にオススメな学習サイト

システムエンジニアのおすすめ学習サイト

SEにオススメな学習サイトを3つ紹介します。

初心者にも優しいProgate

「Progate」は、初心者の方でも学びやすい学習環境が提供されていることです。

オススメポイントは、次の3つです。

1.イラスト中心のスライドで学ぶことがでる
紙の本よりも直感的で、動画よりも学びやすい(勝手に進んでいかない)仕組みです。従って、自分のペースで学習することが出来ます。また、何度も同じ単元が学習できるなど、復習しやすいことも強みです。
2.プログラムを書いて学ぶことができる
前述の「本を使って学習する」のところで書きましたが、実際に手を動かしてプログラミングをしなければ身に着けることはできません。Progateは、それが可能です。
3.無料で始めることができる
実はこれはすごく大事。Progateは、理解しやすい仕組みで作られています。とはいえ、全ての人に万能とは限りません。やってみて、「ちょっと私には合わないな」ということもあり得ます。無料なら途中で辞めてしまっても大丈夫ですよね。

動画でステップ毎に学べるドットインストール

「ドットインストール」は、5,000本以上の動画を見ながら、初心者の方でも学びやすい学習環境が提供されています。

オススメポイントは、次の3つです。
1.コースが多く網羅性が高い
網羅性が高いので初めてプログラミング学習をする人も自分に合った勉強ができます。また、「入門編」「中級編」「上級編」など段々とレベルアップしていくことができます。
2.動画を見るだけなので始めやすい
動画は全てだいたい3分以内。動画を見るだけなので、文章が苦手な人、すぐに飽きてしまう人にはオススメです。
3.無料で始めることができる
Progateと同様、無料で始めることができます。当然、途中でやめることも容易です。

専門的な知識を身につけるならUdemy

「Udemy」はシリコンバレー発の世界最大級の学習環境です。
ビジネススキル、マーケティング、趣味・実用・ホビー等など、様々な分野の講座が準備されています。その中でも、学ぶ人が増えているのがプログラミング講座です。

オススメポイントは、次の3つです。
1.世界中の一流講師の講座が格安
2.学習の時間・場所を選ばない
3.再生スピードが変えられるので、自分のペースで学習できる

まとめ

システムエンジニアのなり方まとめ

「SE(システムエンジニア)になるための学習方法と具体的な仕事内容」について少しは理解いただけたでしょうか?

「SEってなに?」が、「SEの仕事ってそういう感じなのか。勉強すればできるかも!」に変ったのではないでしょうか。

この記事が、一歩前に進むきっかけになれば嬉しいです!

関連記事