SEってどんな仕事?

目次

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

システムエンジニアとは、お客様の要望をヒアリングして求められているシステムの設計・開発・運用を行う技術専門家です。
お客様は基本的に企業を相手にすることになります。このような業種をBtoB(Business to Business)と言います。
ここまでは色々な転職サイトなどにも載っていることですね。より具体的にどのようなことをするのか見ていきましょう!

システムエンジニアがお客様とする企業は多岐にわたりますが、皆さんメインの業務をお持ちです。
例えば、飲食店であれば店舗経営。金融業界であれば、銀行業。といった具合ですね。

このような企業はメインの業務には精通していますが、IT技術については専門外な方々です。
新しい企画や現在の業務の効率化等、企業の利益追及にあたり、新しいシステムを作らなくてはならなくなった時、自分たちでは作ることができないのです。
そんなときに登場するのが我々システムエンジニアという職業になります。

ポイント! システムエンジニアとは、IT技術に精通していない企業が作りたいシステムを代わりに作ってあげる職業です!

仕事内容

システムエンジニアとは?の章では、

IT技術に精通していない企業が作りたいシステムを代わりに作ってあげる職業です


と書きました。

では、具体的に仕事内容をイメージしていきましょう。

よくあるサイトでは、「要件定義」→「基本設計」→「詳細設計」→「製造」→「テスト」→「リリース」の流れでシステムを構築するのが仕事と書いてありますよね。
正しくはあるのですが、正直イメージがわき辛いので、例を上げながら見ていきましょう!

ここにスーパーを経営している企業の担当者がいらっしゃいます。

最近の情勢から、スーパーの商品をネットで購入して配送するサービスを始めたいのだけど・・・。
どんなシステムを作ればいいのかわからないなぁ。


新しいシステムが作りたいみたいですが、どんなシステムを作ればよいのか迷っているみたいですね。

ここでシステムエンジニアの出番です!
IT技術のスペシャリストであるシステムエンジニアがシステム構築をお手伝いします!

①要件定義

要件定義ではお客様が考えているビジネスをヒアリングします。
  • どういう業務フローにするのか?
  • どのようなシステムにしたいのか?
  • どのくらいの金額で作りたいか?
ここでキチンとすり合わせを行わないと完成したシステムが「思っていたものと違う!」という結果になりかねません。

利用者にはインターネットから簡単にスーパーの商品を購入できるようにしたいな。

例えば上記の要望で、お客様はどっちをイメージしていると思いますか?
  1. 家のパソコンでブラウザからアクセスしてもらう
  2. アプリを作ってスマホからアクセスしてもらう
残念ながら、今の担当者の言葉では分かりませんので、どちらをイメージしているのかをヒアリングしてみる必要があります。
もしかすると担当者の方もイメージしていなかったかもしれませんので、上記それぞれのメリデメを説明する必要もあるかもしれませんね。

ポイント! このようにお客様がイメージできていることも、できていないこともヒアリングをしながらイメージを固めをします!
どのようなシステムが欲しいのか?どのようなシステムにすべきかを決めていくことが「要件定義」です。

②基本設計

要件定義ですり合わせた求められているシステム像をもとに、1段階詳細なことを決めていきます。

例えば、インターネット上から商品を購入できるようにするためには、商品一覧のページが必要になりますね。
どんな画面にするか?、その商品一覧のマスターはどこに保管するか?みたいなことを決めていきます。

リスト型がいいでしょうか?それともスライドショー型がいいでしょうかね?

商品一覧はデータベースに保管するのがよさそうですね。
商品は日に日に更新が必要だと思いますので、スーパーの担当者の方が更新できるようにしないといけないですね。
このように実際に使い始めた後の運用についても考えながら、システムの構成を決めていきます。
このフェーズあたりから、決定自体は担当者の方にしてもらいますが、システムエンジニアも主導して提案いくような進め方になります。

ポイント! お客様は要望は出せますが、どういうシステムにすれば実現できるかはわかりません。
なので、そこをお助けしながら進めるのがこのフェーズでのシステムエンジニアの仕事です。(例:データベースを置きましょう!/Webサーバが必要です! ・・・など)

③詳細設計

基本設計で決めたことをもとにより詳細な設計に入ります。
このフェースでは、次の製造に向けて設計を固めます。ここで製造ができるレベルまで決め切らなくてはいけません。
製造のフェーズに入ったのに、Webページをリスト型にするのか、スライドショーにするのかを悩まれているようでは、システムを作れませんよね。

詳細設計以降のフェーズはは基本的にシステムエンジニアが主導してくことになります。
基本設計までに担当者から要望を聞ききって、詳細設計では細かい技術的なパラメータを決めていくイメージです。
なので、このフェーズでは使う技術に対してシステムエンジニアは深い知識を持っている必要があります!



システムの細かい設定値の話しになってきますので、このあたりのことを担当者の方に話してもわからないですよね。
なので、本当に必要なこと(デメリットやリスクがあること)を除いてはシステムエンジニアが決めていきます。
ポイント! 詳細設計はシステムエンジニアという職業でよく想像されるような技術的な設計を行うような仕事になります。
システムエンジニアはIT技術のプロとして、利用する技術に対して深い知識を求められます。

④製造

詳細設計で決めた設定値をもとにシステムを製造します。
プログラム開発やサーバ構築、ネットワーク構築、データベース構築などはこのフェーズで行います。

システムは多種多様な技術を組み合わせて実現されますので、相当小規模なシステム以外は1人で作ることはできません。
ここまでのフェーズでも言えますが、複数人で各技術の専門家がチームを組んで進めます。

構築フェーズも同様で、サーバを作るチーム、データベースを作るチーム、プログラムを開発するチーム、ネットワークを設定するチームなどが各自の仕事を全うすることで、システムを作り上げます。



ポイント! システムエンジニアは、色々な技術の専門家をまとめた呼び方です。
よくイメージされるプログラミングを行う人もシステムエンジニアの1種です。
その他にも多種多様な技術の専門家がいることを覚えておきましょう。

⑤テスト

製造で作ったシステムをテストします。
どれほど卓越した技術を持つシステムエンジニアでも完璧に作ることは不可能です。人間である以上、誤りは発生します。
それは間違った設定値を入れてしまっただけのものもあれば、設計自体が誤りだということもあります。
技術の仕様上、そのような使い方はできないというようなこともあります。

リリースして実際に使われ始めてから、気づいてしまうとお客様にも多大な損害を与えてしまうので、このフェーズでしっかりとテストを行います。
要件定義や基本設計などでお客様とすり合わせた要望に沿った動きをするかをきっちりと確認します。

場合によっては、担当者にも協力いただき、実際にデモとして使っていただくこともあります。

問題があったときには、修正が必要になります。原因の究明からどのように改修するかなど、ここでも深い技術知識と課題解決能力が求められることになります。

ポイント! 小規模なシステムを除いて、テストが簡単に完了することは稀です。
何かしらの問題が発生することが多いです。問題は簡単なものから困難なものまで千差万別です。
困難な問題に直面した時も、諦めず原因を探り解決する課題解決能力が求められます。

⑥リリース

ここまでのフェーズが完了したら、システムのリリースになります。
実際にシステムが使われ始めることになります。

システムエンジニアの仕事はリリースが行われからも続きます。
動き始めたシステムは、止めることなく動かし続けなくてはいけません。止まってしまうとお客様の業務が止まってしまい損害が出てしまうからです。

そこでシステムエンジニアは「運用・保守」という業務に携わります。
システムが障害で止まらないように定期的に健康診断を行い、兆候がある場合は予防措置を行います。
また、実際に障害が起こってしまった時は、できるだけ早く復旧できるように原因究明と復旧を行います。



障害が起きていない時は、定型的な作業が多くなるため、負荷が少ない業種になります。
ただし、障害が起きてしまった時には迅速な復旧が求められますので、急に高負荷で責任重大な仕事となります。

ポイント! 運用は楽な仕事と言われることもありますが、それは誤りです。
障害が起きた時には、迅速な課題解決が求められるため負荷の高い仕事に変貌します。
また、最近では単純な定型作業だけを行う運用からより高度なシステムの改善活動を求められることも多くなってきており、システムの構築を行う技術者と同じように深い技術が求められるようになってきています。

求められるスキル

仕事内容を見てきましたが、システムエンジニアに求められるスキルを整理します。

①高いIT技術力

お客様からの要望は多種多様です。
そんな要望をシステムとして実現するためには、高いIT技術力が必要となります。

ただし、高いIT技術力というのは、1つの分野を専門とするスペシャリストもそうですし、幅広く色々な技術の知見があるということも含まれます。

スペシャリストであればその技術を使うシステムでは即戦力となります。
幅広く色々な技術の知見がある人は、お客様からの多種多様な要望に対して、実現可能なパターンを考え、最適な構成を選択できる技術者となります。

どちらも重要な職種となりますが、継続的に学習し続けることが必要という点は変わりません。

②コミュニケーション能力

仕事内容を読んでわかったかもしれませんが、
システムエンジニアはシステム構築だけが仕事ではありません。
お客様と会話しながら要望を聞き出すことが重要な仕事になります。

例えば要件定義できっちりと要望を聞き出せていないとどうなるでしょうか?
後になって、「この機能も欲しかったんだけど」、「イメージと全然違うんだけど」と言われてしまうとトラブルの素です。

ポイント! お客様もきちんとイメージできていないような要望や希望を言語化して、合意するコミュニケーション能力が大切になります。

③課題解決能力

システムエンジニアをしていると課題との戦いと言っても過言ではありません。
好き勝手な要望や希望を言うお客様に対して、実現できるように試行錯誤を繰り返し続けます。

お客様の要望の1つを叶えると別の要望を叶えられなくなることもあったりします。
そんな時に、「できません!」とだけ言うのはお客様の印象も悪くなってしまいます。

なんとか叶える方法を探したり、多少デメリットがあっても両方の要望が叶えられる別の回避策を提案したり。
常に課題を抱えながら、お客様に納得してもらえるように試行錯誤を続ける粘り強さと、試行の柔軟さが必要となります。

④マネジメント能力/リーダーシップ

システムエンジニアは各専門化が力を合わせて、チームでシステム構築に当たることになります。
スペシャリスト達が各自で好き勝手にシステムを設計するとまとまりのないものが出来上がってしまいますので、誰かしらまとめる人間が必要になります。

また、各専門家においてもチームで動くことが多いです。
例えば、データベースチーム、ネットワークチーム、サーバ構築チームなどです。

1人でできることは限られていますので、チームを組むことで大規模なシステム構築作業を分担して行うことができるのです。
そんな時にもメンバーを率いて進めることも多くなりますので、マネジメント能力やリーダーシップが必要になります。

仕事のやりがい

①専門的な技術を習得できる

システムエンジニアは高度なIT技術が求められるため、
難しい仕事ではありますが、専門的な技術を身に着けられる点でメリットがあります。
新卒で入社する場合は、会社側も長期間の教育が必要な点は認識していることもあり、手厚く研修を用意している会社も多いです。

大学は文系という人も実際多く、研修等を活用しながらIT技術を身に着けていきます。

技術力が付いてくると自信にもなるため、仕事においてもやりがいを感じやすくなります。

②プロジェクト完了時の達成感

プロジェクトは長いと数年を跨ぐようなものもあります。
大規模なシステムで難易度も高いものとなりますが、無事にリリースまでたどり着けたときには達成感があります。

ものづくりが好きな人であれば、動くものを作り切ったということでもやりがいが感じられると思います。

③ニーズの高さ/転職の容易さ

色々な転職サイトにも登録していますが、スカウトや求人情報には苦労しません。
システムエンジニアの中でもまったく異なる職種の求人も多いですが、同じ職種の求人も十分多いです。

業界全般として、技術者不足が進んでおり、人材確保に躍起になっている様です。
なので、ある程度の経験を積んだ技術者であれば、自身の会社に不満がでてきたときにすぐに別の会社へ転職することも容易だと思います。
その気軽さがシステムエンジニアをやっているメリットでもあると思います。

システムエンジニアの大変なところ

システムエンジニアの大変なところも記載しておきます。
まったくいやなところのない仕事もないですよね。

①お客様の要望に振り回される

システムエンジニアはお客様の要望に沿ってシステムを作ることになりますが、途中で要望が変わることは往々にしてあります。
むしろ、初期から変わらずに進むことの方が少ないです。

これはお客様もシステムに必要なことがわからずに構築依頼が来ることに起因します。
仕事内容で例に上げたスーパーのネット購入システムを思い出してください。

あなたがこのスーパーの担当者だった時に、具体的にシステムに必要な機能を洗い出せますか?
おそらく無理か、かなり困難だと思います。
それはIT技術に精通しているか否かではなく、新しく作り上げようとしているビジネスの業務フローを正確にイメージできていないからです。

新しく1から作り上げようとしている以上、お客様も完全にはイメージできていないので、後になって「このような機能も必要だとわかりまして・・・。」みたいなことが多発します。
これはもうしょうがないことですよね。

そういった要望の変更に振り回されることは覚悟しておきましょう。

②納期に追われる

システムを作るに当たって、納期というものが設定されます。
お客様としては、早く作ってシステムを使いたいので基本的に余裕のあるスケジュールにはなりません。

まだ、どんなシステム構成になるかも決まっていないのに「○○年××月には使い始めたい」みたいに最初から指定されることもあります。
ただ、いつまでに使いたいというのも要望ではありますので、満たせるように考えるのがシステムエンジニアの仕事です。

早く構築できる技術を使ったり、ある程度機能を省略して、後から追加実装するなどやり方を考えて進める必要があります。

そして、この余裕のないスケジュールの中でトラブルが発生しようものなら更に厳しい状況になります。
お客様起因であればよいですが、自分たち側の過失(検討漏れや仕様確認不足など・・・)の場合は何とかして期日に間に合うように残業や休日出勤することもあります。

プロジェクトが順調に進むというのはあまりないと思っておきましょう。

③継続して勉強し続ける必要がある

IT技術はどんどん新しく便利なものが出てきます。
なので、システムエンジニアは常に新しい技術を習得し続ける必要があります。

最近だと生成AIがニュースに出てくることもありますよね?
すぐに業務に活かしてシステムを作ろうとする会社もあるので、話しが来た時に対応できるように学習し続ける必要があるのです。

新しい技術が出るということは、もう使われなくなる技術もあるので、過去習得した技術にだけ固執していると市場価値のないエンジニアに落ちてしまうことも考えられるのです。
技術をアップデートし続けなくてはいけないという点はシステムエンジニアのシビアな現実です。

まとめ

システムエンジニアという職業についてご紹介しました。
現職のシステムエンジニアということもあって、もし読んだ人が実際になったとしてもあまりイメージに齟齬がないような内容を書いていると思います。

転職サイトでもなくシステムエンジニアに希望を持ってもらう必要もないので、実際に私が感じている内容を言ってしまえば率直に書いております。
厳しいことも書きましたが、専門技術が身に就くことで潰しの効きやすい職業でもあると思います。

ものづくりが好きという人やIT技術に興味がある方は是非目指してみてはいかがでしょうか?

最後まで読んでいただきありがとうございました。