SE(システムエンジニア)ってよく聞くけど、要するに何する仕事なの?
具体的に何をしている人達なのか知りたい!
コロナ禍によって在宅ワークが注目され、それに伴いパソコン一台でどこでも仕事をするSE(システムエンジニア)にも注目が集まりました。
しかし、SE(システムエンジニア)という名前は聞くけど、具体的に何をしている人達なのか良く分からないという人も多いと思います。
今回はSE(システムエンジニア)の仕事について詳しくご紹介したいと思います。
SE(システムエンジニア)とは?
一言で言ってしまえば、SE(システムエンジニア)とは「お客様の希望や悩みをコンピューターシステムを使って解決する」人です。
例えば「商品をWeb販売したい」というお客様に対してはECサイトを作り、「帳簿管理が面倒」というお客様に対しては会計システムや請求書発行システムを提案、導入したりします。
業界やビジネス・コンシューマーを問わず、コンピューターが関与する余地がある様々な場面にSE(システムエンジニア)の活躍する場所があります。
システムエンジニアの種類
一言にSE(システムエンジニア)と言っても、その役割は様々です。
具体的には専門分野や得意分野によって、以下のように細分化されます。
アプリケーションエンジニア
PC、スマホ、Webのような各プラットフォーム上で動作するソフトウェア(アプリ)を制作するエンジニアです。
一般的に多くの人がイメージするSE(システムエンジニア)がこれだと思います。
サーバーエンジニア
システムを動作させるためのハードウェア(PCやネットワーク環境)や設置場所などを検討し、実際に導入するエンジニアです。
例えば当ブログ含め、皆さんがインターネットでご覧になっているホームページは例外なく「Webサーバー」という特殊なPCの上で動いています。
このような環境を準備し、他のエンジニアが設計する土台を作る縁の下の力持ち的なエンジニアです。
ネットワークエンジニア
インターネットへの接続や社内のネットワーク環境を設計・構築するエンジニアです。
近年は特にハッキングや不正アクセス対策の重要性が増しており、それに伴い重要度が高くなっている職種です。
データベースエンジニア
様々なデータを格納するための「データベース」と呼ばれる機能を設計・構築するエンジニアです。
「データベースの設計」というのはピンとこないかもしれませんが、大量のデータを高速に出し入れしたり整理するためには、高度な専門知識が必要になります。
データベースエンジニアは、そのような大容量データに関わるあれこれを専門に行うエンジニアです。
テストエンジニア
システムは作って終わりではなく不具合がないかしっかり検査(テスト)し、品質を確認した上で初めてリリースできます。
テストエンジニアは品質保証のためのテストを設計をし、実際にテストを行うエンジニアです。
テスト自体はアルバイトをテスターとして集めることがありますが、その管理・監督するマネジメント的な仕事も業務に含まれます。
保守・運用系エンジニア
実際にリリースされたシステムを、日々管理、メンテナンスするエンジニアです。
システムはリリース直後は不具合がなくとも、急激なネットワーク負荷やハードウェアの故障等、さまざまな理由によって急に止まってことがあります。
そうならないように故障の兆候を事前にキャッチしたり、システムが動かなくなった場合の原因切り分けや対応を行います。
業界によってさらに細分化される
エンジニアの種類は、業界によってさらに細分化されます。
ホームページ制作をメインとするWeb系、スマホアプリを作るアプリ系、カーナビのような小さい機器に入れるプログラムを作る組み込み系など。
他にもゲーム系、医療系、航空・交通系など、上げればキリがありません。。
システムエンジニアの仕事は業種を問わない
いまやコンピューターを使わない業種は存在しないと言えるほど、ITは生活に密着しています。
そのため、SE(システムエンジニア)はどんな業界にも潜り込める稀有な職業と言うことができると思います。
裏を返せば多様性に富みすぎていて、それがSE(システムエンジニア)という仕事を分かりづらくしている要因なのかもしれません。
SE(システムエンジニア)の具体的な仕事の流れ
SE(システムエンジニア)の種類は多岐に渡りますが、仕事の流れの根本的な部分はどの仕事でも同じです。
SE(システムエンジニア)の仕事について基本的な流れをご紹介します。
1. 要件定義
お客様の要望や悩みをヒアリングし、それをシステム的な「要件」という形でまとめる作業です。
どういうことかと言うと、例えば「上客に対してDMを送りたい」という要望であれば「上客とは具体的に何円以上の商品を何回購入してくれたユーザーのことか?」と言ったように、あいまいな言葉を具体的な数値や明確な言葉に置き換えて、システムが処理しやすい形に具現化していきます。
これがいかにうまくできるかがシステムの成否に大きく関わってきますので、SE(システムエンジニア)として一番の腕の見せ所です。
2. 基本設計
まとめた要件に対して、それを満たすための画面構成、データベース、ネットワーク等のシステムの土台となる要素を決める作業です。
お客様やエンドユーザーに見える部分(外の部分)を主に設計することから、「外部設計」と呼ばれることもあります。
3. 詳細設計
プログラミングのための具体的な処理構造を決める作業です。
クラス図、シーケンス図、フローチャートといった専門的な記法を使います。
外部設計に対して「内部設計」と呼ばれることもあります。
4. プログラミング
詳細設計に従い、実際にプログラミングする作業です。
5. テスト
出来上がったシステムが意図通りに動くかどうかテストする作業です。
テストの段階によって単体テスト、結合テスト、総合テスト(運用テスト)のように細分化されます。
不具合が見つかった場合は、修正して再テストを行います。
6. 運用・保守
システムを運用・保守する作業です。
成果物が不具合なく動作していればやることはほとんどありませんが、出来が悪いとその対応に追われることになります。
SE(システムエンジニア)とプログラマーの違い
SE(システムエンジニア)は上述した仕事の流れの全てのフェーズに関与します。
プログラマーはそのうち「4. プログラミング」を主に担当し、場合によっては「3. 詳細設計」を担当する程度です。
SE(システムエンジニア)がシステム開発全体に関与するのに対し、プログラマーの守備範囲は狭いという違いがあります。
補足
「プログラミングはプログラマーがやるから、SE(システムエンジニア)にプログラミング能力はいらない」という意見がありますが、それは会社によります。
大きい会社であれば分業制が進んでいるためその通りかもしれませんが、中小企業はSE(システムエンジニア)がプログラマーを兼ねるケースがほとんどです。
SE(システムエンジニア)の労働環境について
SE(システムエンジニア)を含め、IT業界の労働環境について触れてみたいと思います。
リモートワーク重視と対面重視の両極化が進む
SE(システムエンジニア)の仕事はリモートワークと相性が良いため、コロナ禍によって一気にリモートワーク化が進みました。
それにより都内のオフィスを解約し、リモートワーク中心の働き方に変えている企業が増えてきています。
しかしそれとは反対に「コミュニケーションが希薄になる」「イノベーションが生み出せない」等の理由から出社重視の企業もあり、両極化が進んでいる印象です。
また組み込み系のシステム開発では、開発機器が特殊で職場から持ち出せない等の理由からリモートワークしたくてもできない現状もあるようです。
給料は400万~800万円くらい。転職で収入増加を狙う
給料は20~30代が400~500万円くらい。40代以降は550~800万円くらいが相場となります。
IT業界は昔から出世での給料アップを狙うより、スキルを磨く→より好条件の職場に転職という形で収入増加を狙う人が多い業界です。
ただし「転職でたしかに給料は上がったけど忙しさが激増した(ブラック職場だった)」という話もよくあり、注意が必要です。
残業は会社と個人の能力次第
IT業界は慢性的な人手不足状態にあり、どの会社にも仕事依頼が多くあります。
そのためマネジメントが下手な会社では許容量を超える仕事が常に存在し、残業続きとなってしまう危険性があります。
また、そうでなくともSE(システムエンジニア)の仕事は個人の能力差が大きく影響する仕事です。(1日に1機能作れる人もいれば、1週間経っても1機能も作れない人もいます)
特に設計能力、プログラミング能力が不足していると残業をいくらしても終わらない、という事態になってしまうでしょう。
SE(システムエンジニア)に必要なスキルについて
これからSE(システムエンジニア)を目指す場合に、身に着けておいた方が良いスキルについてご紹介します。
論理的思考力
論理的思考力は、論理的にものごとを考える力です。
システムは論理的思考の固まりですので、必須能力です。
コミュニケーションスキル
要件を聞き出す、納期交渉する、チーム内の連携など。
意外かもしれませんがSE(システムエンジニア)はPCスキル以上にコミュニケーションスキルが求められる仕事です。
少なくともビジネス会話ができる程度のコミュニケーションスキルがないと苦労するでしょう。
マネジメントスキル
いつまでにどのくらいのものを作るか、納期通りに作れるかといったマネジメントスキルは必須です。
また自分がリーダーとなり、チームメンバーのスケジュール管理が必要になることもあります。
検索・調査スキル
SE(システムエンジニア)の仕事はお客様の要望によっても必要な技術、知識が変わってくるため、どんなにすごいエンジニアでも全てを把握することは困難です。
しかもIT業界はただでさえ技術の変遷が激しいため、トレンドを追い続けるのが余計に難しいです。
そのためインターネットや書籍などを駆使して、必要な時に必要な情報を調べられる検索や調査のスキルは必須となってきます。
ITの技術情報は英語圏から発信されることが多いため、日本だけでなく海外のサイトや技術文書から情報収集できると特に強いです。
システムエンジニアになる方法
どうすればSE(システムエンジニア)になれるかについてご紹介します。
プログラマーからのキャリアアップがおすすめ
SE(システムエンジニア)はプログラマーからのキャリアアップを目指すのがおすすめです。
プログラマーとしての経験を積むことで、徐々に詳細設計、基本設計のように上流工程を任されるようになってきます。
遠回りするように見えて、結果的にこれが一番早くSE(システムエンジニア)になれる方法だと思います。
情報処理技術者の取得を目指すのもあり
会社によっては、情報処理技術者試験の結果によって待遇を変えるところもあります。
応用情報処理技術者試験に合格すれば、SE(システムエンジニア)として認めてもらえることも多いでしょう。