大学を卒業後、システムエンジニアとして就職し、約8年間勤めています。
先輩社員として就活生と面談する機会がよくあるのですが、ほとんどの人が勘違いしているのは、
システムエンジニアは一日中パソコンをカタカタ触っている
というイメージ。

システムエンジニアの定義は会社によって微妙に違いますが、業務範囲は多岐にわたります。
システムエンジニアとして働き始めてからのギャップをできるだけ少なくするために本記事を書きました。
以下のような方向けの記事になります。
・システムエンジニアとして働きたい。
本記事を読めば、システムエンジニアとしての仕事内容を理解できます。
・アプリケーションエンジニア→システムを作る
・インフラエンジニア→システムが動作する環境を作る
本記事では、アプリケーションエンジニアに焦点を当てて解説します。
Contents
システムエンジニアってどんな仕事?
エンジニアを日本語に訳すと「技術者」です。
つまり、システムエンジニアは、システムに関する技術者ということになります。
仕事は当然、「システムを作る」ことになります。
システムを作るためには、プログラミングが必要です。
しかし、プログラミングだけでは顧客の求めるシステムを完成させることはできません。
システム導入の流れに沿ってどのような作業が必要か解説していきます。
システム導入の流れ
一般的なシステム導入は、ざっくりですが以下の流れになります。

このようなシステム導入の流れをウォーターフォール型と呼ばれます。
システム導入の作業は、上流工程と下流工程の2つに分類することができます。
下流工程 → プログラム開発・テスト
上流工程の仕事内容
上流工程の仕事内容は、要件定義と設計になります。

要件定義
顧客の困っている内容をヒアリングしてどのようなシステムを作るか検討する。
最終的にシステム化する業務範囲をこの作業で決定します。
設計
要件定義の内容に基づき、システムをデザインする。
システム化する機能の仕様を決定します。(画面や処理の流れなど)
求められる能力としては、以下のようなものがあります。
・システム構築の経験
「コミュニケーション能力」が必要な理由
要件定義と設計は、顧客と打合せの連続です。
顧客との深いコミュニケーションが必要になります。
顧客の要望を全て聞いているとキリがないので、費用対効果を考えて落とし所を設定し、調整する必要があります。つまり顧客を納得させる必要があります。
「システム構築の経験」必要な理由
上流工程は、システムをデザインする工程です。
システム構築の経験があればあるほど、どうすれば顧客要望をシステムで実現できるのかを考える際の引き出しが増えます。
また、上流工程を担当しているシステムエンジニアは、元々、下流工程を担当していた人が多いです。
理由は、プログラムで何ができるのかを理解していないと、システムで何が実現できるかイメージできないからです。
上流工程の仕事をしたいのにプログラマとしてしか採用してもらえない
このような人もプログラマとして働くことは、今後のキャリアプランの中で無駄にはなりません。
下流工程の仕事内容
下流工程の仕事内容は、プログラム開発とテスト作業になります。

プログラム開発
上流工程で決められた設計に基づき、プログラミングを行います。
テスト
開発したプログラムが設計通りに動作するかのテストを行います。
求められる能力としては、以下のようなものがあります。
・論理的思考力
「プログラミング技術」が必要な理由
当然ですが、プログラミング技術が重要になります。
プログラミングは、ただ動作すれば良いという訳ではありません。
自分が作ったプログラムを自分が永遠にメンテナンスしていくなら問題ありませんが、他の人が今後メンテナンスすることも考えてなければいけません。

そこで大事なのが、可読性(プログラムの読みやすさ)です。
「論理的思考力」が必要な理由
可読性の良いプログラムを書くためには、「同じ処理は2回以上書かないようにする」など効率的なロジックを考える必要があり、論理的思考力が求められます。
プログラミングはセンスがあれば、習得するのも早いですが、勉強すれば誰でもある程度習得できると言われています。(ただし、やる気は必要です)
また、プログラミングの技術が付くと個人で稼ぐ能力がつきます。
クラウドワークスやランサーズなどでプログラミング案件が沢山あります。
副業で稼ぐこともできますし、うまくいけばフリーランスとして独立することも可能ですね。
システムエンジニアとして働いてきた感想

僕が今まで、8年間システムエンジニアとして働いた感想です。
- ルーティンワークではない
- 常に勉強が必要
- プロジェクト単位での仕事になる
基本的には、大変です。
これをメリットと感じるか、デメリットと感じるかで、システムエンジニアに向いているかどうかの一つの分かれ目になると思います。
それでは、一つずつ解説していきます。
ルーティンワークではない
システムエンジニアとして働く中で全く同じプロジェクトは存在しません。
顧客が違えば、要件も違うし、プロジェクトの進め方も違います。
同じ機能を作る場合でも、実現方法によって全く別物になることもよくあります。
システム導入の方法には、パッケージ導入という方法もあるのですが、その場合でも顧客の要件に合わせてカスタマイズされることがほとんどです。
できるだけ多くの会社にフィットするような汎用性のあるシステムのソフト。バッケージ導入すれば、1からシステムを作るより安く導入でき、納期も短縮できるというメリットがある。
上流工程の場合
→ どのようにプロジェクトを進めるのがベストなのかを常に考えながら進めていく必要があります。
下流工程の場合
→ 全く同じプログラムを作ることはありません。
どちらも今までの経験を生かすことはできますが、全く同じ作業をすることはありません。
ルーティンワークだと思考停止して作業できるので、ある一定ラインを超えると成長が止まってしまいます。その点では、システムエンジニアは、成長し続けられる環境と感じます。
常に勉強が必要
以下の3つに関して常に勉強をしていく必要があります。
- 新しい技術
- 新しい製品
- 顧客業務
学ぶ姿勢を持っていなければ、「時代に取り残されたシステムエンジニア」になってしまいます。
新しい技術
IT業界に身を置いているといろんな新しい技術が出てきます。
今のトレンドは、「AI」や「RPA」などがあります。
プログラミング言語のトレンドも時代によって変わっていきます。
新しい製品
他社製品を使用してシステム構築することもよくあります。
世の中にはいろんな製品が溢れているので、アサインされたプロジェクトの製品に関わる知識を習得する必要があります。
顧客業務
上流工程では、顧客の業務を理解した上でシステムデザインしていく必要があります。
すべての業種の仕事を理解することは難しいですが、自分の得意な業種を決めて勉強をしておくことが大事です。
会計に関する知識は、基本的にどの会社に対しても有効なので、何から勉強すれば良いかわからない場合は、簿記の勉強をしてみるのが良いです。
プロジェクト単位での仕事になる
システムエンジニアは、同じプロジェクトを数ヶ月から数年に渡って担当することになります。(プロジェクトを掛け持ちすることもあります。)
プロジェクト内で責任のある立場になればなるほど、「プロジェクトを成功させないといけない」というプレッシャーが長い間続きます。
また、顧客との相性が合わなければかなり苦痛です。
あとは正直飽きますね。
ただ、プロジェクトをやりきった時の達成感は言葉にできないものがあります。
一つのことに打ち込んで大きなことをやり遂げたい。
そのような人に向いています。
仕事内容を理解した上でシステムエンジニアになろう!
システムエンジニア=一日中パソコンをカタカタ触っているというイメージ。
これは、システムエンジニア=プログラマーと認識してしまっていたからですね。
プログラミングをするのは、システムを導入する中での下流工程の部分です。
つまり、システムエンジニアの中にプログラマーという職種があるのです。
下流工程を担当しているシステムエンジニアは、「一日中パソコンをカタカタ触っている」というイメージもあながち間違っていませんが、上流工程を担当しているシステムエンジニアは、顧客とコミュニケーションをとる機会が多く、エンジニアというよりはコンサルよりの仕事になります。

このように感じてしまう人もいるかもしれませんが、新卒入社の場合、文系の人でも入社できる会社が多いです。
むしろ、上流工程をやってみたい人にとっては、文系の方が適性が高い場合もあります。
自分がどんなシステムエンジニアになりたいのかをよく分析できれば、入社後のギャップを少なくすることができると考えています。