仕事の種類

システムエンジニアとプログラマーの違いとは?【適性診断あり】

この記事では、システムエンジニアの私が保険業務の大規模システム開発に従事してきた5年間の経験を通して感じた、システムエンジニアとプログラマーの違いについて解説します。

実際にシステム開発業務を行う現場でシステムエンジニアとプログラマーでは、関わる工程の違いと必要なスキルに違いがあります。

また、就職や転職を考えているあなたの性格に応じて、どちらの職が適性なのかについてもお話しします。

システムエンジニアとプログラマーの違い


システムエンジニアとプログラマーの違いは、とても曖昧なものです。

突然そんなことを言われても困ると思います。
実は私もシステム開発会社に入った当時は、明確に両者の違いを理解していませんでした。

現在では大規模な保険業務システムの開発の経験を通して、
システム開発の全体像を把握して、業務に励んでいますので、両者の違いが見えてきました。

プログラマーと聞いたら「プログラムを作る人」と理解する人がほとんどです。
しかし、システムエンジニアと聞いて、具体的に「何をする人」なのか理解できる人は少ないのではないでしょうか。

単純に、これがシステムエンジニアとプログラマーの違いを見えにくくしている問題だと思います。主な違いは関わる工程と、必要なスキルにあります。

関わる工程に違いがある

簡単に言うと、システムエンジニアはシステムを作る人プログラマーはプログラムを作る人です。そもそも、このふたつの職種を同じ土俵に立たせて違いを比較するのは、あまり適切ではありません。

システム開発は主に5つの工程から成っています。

  1. 要件定義工程
  2. お客様から要望を聞き出だしシステム化の方針を提案して決める。何をITで実現したいのか、何を使って作るか決める。

  3. 設計工程
  4. 決められたシステム化の方針から、それを実現するために、どのような機能が必要なのか。それぞれの機能ではどのような処理を行うのかを具体化する。

  5. 製造工程
  6. 設計書からプログラムを作成する。

  7. テスト工程
  8. プログラム、システムが正常に動作することを確認する。

  9. 保守工程
  10. システムリリース後に、不具合があれば、これを訂正する。

今分けた5つの工程でいうと、システムエンジニアは①~⑤、プログラマーは③~⑤が業務責任範囲です。つまり私の考えでは、システムエンジニアはプログラマーを内包します。

システムエンジニアは「システムがお客様の要望通りに動作すること」に責任を持たないといけません。プログラマーは「プログラムが設計書通りに動作すること」に責任を持たないといけません。

これがシステムエンジニアとプログラマーの違いです。

ここで、反論をいただく場合もあります。
➂製造工程の「設計書からプログラムを作成する」はプログラマーの仕事ではないのか、と。

これにはシステム開発の全工程を管理するプロジェクトマネージャやリーダーの立場に立った側の裏事情があります。

端的に言うとシステムエンジニアに要件定義工程からテスト工程までを一貫して担当させた方が、コストを低く抑えることができ、品質が上がるのです。

製造工程をプログラミング専任のプログラマーにすべて任せてしまうと、設計工程までを担当していたシステムエンジニアの数を大きく絞る必要が出てきます。

例えば、お客様から3人分の作業料と1人分のチーム管理手数料を12ヵ月分いただいていたとします(4人分×12ヵ月)。そして製造工程に差しかかり、プログラマーを2人投入したとします。すると設計までを担当していた2人のシステムエンジニアをプロジェクトから外さなければ、採算がとれなくなります。

そこでシステムエンジニアを次の現場(プロジェクト)にあてがう手間が生まれますし、次の現場が見つからない場合、プログラマーと合わせて、二重にコストがかかってしまいます。単純に考えると赤字になります。

またプログラマーに設計までの内容を把握してもらうために説明が必要になりますし、プログラマーがシステムの全体像をよく把握していないまま製造し、テスト工程で不良が大量に発見されることも良くあります。

そのため、製造工程から投入する人間の数は少なく抑えたいというのが、プロジェクトマネージャやリーダーの思いです。だから、全工程がシステムエンジニアの仕事になるのです。

必要なスキルに違いがある

システムエンジニアに必要なスキルは「チャレンジ精神」、プログラマーに必要なスキルは「深い専門性」です。

ここでは資格の話はあえてしません。
資格以外の見えないスキルに焦点を当てます。

なぜかというと企業側の立場としては、資格を持っていてくれれば嬉しい(受注できる仕事の幅が広がるから嬉しい、ほかの社員の刺激になるから嬉しいなど)とは考えているものの、資格取得は後からでも十分に間に合うと考えているからです。

システムエンジニアに必要なのはチャレンジ精神です。

システムエンジニアの業務の中心となる要件定義業務、設計業務は、極端に言うと、お客様に自分たちの意思を伝えて、了承をもらう仕事です。お客様に納得してもらわなければ、システム開発は進みません

この過程で、提案が拒否されること、提案に理解を示してもらえないことが、往々にしてあります。お客様に提案・設計を了承してもらうには、どれだけ良いシステムを作ることにチャレンジできるかだと思います。

ここまで考えてこの案にしてくれたのであれば、論理的にはつじつまが合っているし、これで上手くいくだろう。とお客様を納得させるだけのチャレンジ精神がもっとも大切になります。

それでは、プログラマーはどうでしょう。
プログラマーに必要なのは深い専門性です。
プログラマーはプログラムを作ることに特化した職業です。

つまり要件定義業務、設計業務にはなるべく関わらない
だからこそ、専門性に秀でている必要があります。

たとえば、ディープランニングに関するプログラムの作り方に詳しい、JAVA言語に詳しい、Apacheサーバに詳しい、コンパイラに詳しい等、何かの仕組みにとことん詳しくなる必要があります。

チャレンジ精神が必要なのがシステムエンジニア、深い専門性が必要なのがプログラマーです。これが私の考えるシステムエンジニアとプログラマーのスキルの違いです。

SEとPGの違いを理解してどちらを目指すか決めよう【適性診断】


それでは適性診断をしてみましょう。

あなたが人と会話することが好きで、あきらめない妥協しないチャレンジ精神があり、システム開発の広範に関わりたいと考えているならSE(システムエンジニア)がおすすめです。

あなたが提案やプレゼンテーション、設計にはあまり関わりたくない、技術的に専門的に自分の経験を深めたいと考えているならPG(プログラマー)がおすすめです。

よくキャリアアップのロードマップとして以下のような図式があります。

テスター⇒プログラマー⇒システムエンジニア⇒システムコンサルタント

しかし、それぞれ突き詰めれば相応の地位や報酬がもらえますし、社会へ貢献している自負も芽生えてくると思います。
最終的には好きになれるかどうかで決めることをおすすめします。

私の場合は、なんだかかっこいいからという理由で、システムエンジニアになろうと決めました。

システムエンジニアとプログラマーの違いまとめ


システムエンジニアとプログラマーの違いをまとめると以下のようになります。

  1. 関わる工程の違い
    • 要件定義工程~保守工程まで、責任をもつのがシステムエンジニア
    • 製造工程~保守工程まで、自分のプログラムに責任を持つのがプログラマー
  2. スキルの違い
    • チャレンジ精神が必要なのがシステムエンジニア
    • 深い専門性が必要なのがプログラマー
  3. あなたへのおすすめ
    • あきらめない妥協しないチャレンジ精神があり、システム開発広範に関わりたいと考えている
       ⇒ システムエンジニア
    • 提案やプレゼンテーション、設計にはあまり関わりたくない、技術的に専門的に自分の経験を深めたいと考えている
       ⇒ プログラマー

以上、システムエンジニアとプログラマーの違いをポイントを絞って紹介しました。

さきほども言いましたが、職種は「好きかどうか」つまり、「朝起きてから夜寝るまでやっていて喜びを感じるか」で決めることをおすすめします。

「給料がよいから」、「今後伸びのある職だから」といった理由で決めることはおすすめしません。それが好きな職であればよいですが、嫌いなことを毎日やり続けることはとても大変なことですから。

ABOUT ME
riku1167
riku1167
システムエンジニアとして地道に毎日を生きるライター見習いです。 リーダー経験もあり、ある程度システム開発の業界には詳しいです。 読書とゴルフが大好きで毎日ハッピーに過ごしています。 趣味は他にもキャンプ、テニス、日記、料理など、毎日をより楽しくすることを探しています。地道な努力で、将来は自分の本を出版したい!
おすすめの記事