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

システムエンジニアとプログラマーの違いとは?IT業界の素朴な疑問

あべとも

インフラエンジニア/運用設計/ボールド歴4年

「システムエンジニア」も「プログラマー」も、IT業界の話をする際には、みなさんもよく耳にする職種だと思います。

それでは、このふたつの職種の具体的な違いは何か?と誰かに尋ねられたとしたら、みなさんはどう回答しますか?ふたつの明確な違いについて、説明できるでしょうか?

ものすごく簡単に説明すると、プログラマーは、システム開発のいくつかある工程の中で、プログラミング工程とそれに伴うテスト工程に特化した作業を行う人で、システムエンジニアは、上流工程も含めたそれ以外の作業を行う人を指します。

そんな説明で終わってはさすがに大雑把過ぎますので、本稿では、システム開発の工程の説明も絡めて、「システムエンジニア」と「プログラマー」の違いについて、わかりやすく説明していきます。


1.ズバリ「システムエンジニア」と「プログラマー」の違いとは「プログラミング」をするかしないか

正直なところ、本章のタイトルがすべてです。…とは終われないので、もう少し膨らませて説明しますね()

「プログラマー」とは、実はシステム開発の工程の中で、案外狭い一部分の工程を担当する人たちを指した名称なのです。

「プログラマー」というその字が表す通り、システム開発の工程の中で、ソフトウェアのプログラム(製作)を担当する人たちなので、「プログラマー」と呼ばれています。楽器の「ドラム」を演奏する人が「ドラマー」と呼ばれるのと同じ理屈です。

一方「システムエンジニア」とは、「プログラマー」が担当する以外の、ほぼすべての工程を担当する人たちの総称です。担当する作業は多岐に渡りますので、「システムエンジニア」の全体的なイメージがモヤっとするのも無理からぬことだと思います。

そして、「システムエンジニア」と「プログラマー」の違いって何?と疑問に思われるということは、IT業界の仕事の内容が、世間ではまだまだ認知されていないということです。

それでは、「システムエンジニア」と「プログラマー」は、システム開発のどんな工程で、一体どんな作業をしているのでしょうか。次章から、IT業界初心者にもわかるように、順を追って説明していきます。


2.システム開発の工程は2種類ある

システム開発の工程は、大きく2種類に分けることができます。

ひとつは、プログラミング工程があるシステム開発で、もうひとつは、プログラミング工程がないシステム開発です。本章では、それぞれのシステム開発の工程について、説明します。

2-1.プログラミング工程があるシステム開発

プログラミング工程があるシステム開発が、世間的にはよく知られている開発パターンではないかと思います。下図のシステム開発の工程図を見てもわかるように、システム開発の工程には、全部で11個の工程が存在します。

なお、工程の分け方、呼び方等については、メーカーや顧客企業によって異なる場合がありますので、今回ここで使用する工程、名称が絶対固定というわけではありません。その点はご注意くださいね。

プログラミング工程があるシステム開発の工程図

図 2-1. プログラミング工程があるシステム開発の工程図

それぞれの工程でどんな仕事をするのかについては、下表の「仕事内容」をご参照ください。

2-1. プログラミング工程があるシステム開発の工程別仕事内容

プログラミング工程があるシステム開発の工程別仕事内容

表中の(1) (4)の工程についての詳細は、本サイトの以下の記事がオススメです。
(※1) 基本設計に必要なのは全体視点 情報システムをまとめる基本設計とは?
https://engineer-club.jp/basic-design
 (2) 単体テストとは-テスト工程全体における位置づけとその役割
https://engineer-club.jp/what-is-unit-test
 (3) 運用テストは顧客視点で行う最終テスト!工程の呼び方は実は様々です
https://engineer-club.jp/operational-test
 (4) 保守運用の違いとは?必要スキルや資格・キャリアパスまで徹底解説!
https://engineer-club.jp/operational-maintenance

2-2.プログラミング工程がないシステム開発

一方、IT業界には、プログラミング工程がないシステム開発というものも存在します。具体的な例を挙げてみると、昨今多いプロジェクトとしては、社内システムで使用するPCやサーバのOSリプレース等があります。(PCWindows10化、サーバはWindows Server 2019化等)

このような案件の場合は、作業の大半がPCやサーバの設定作業や、中にインストールされたミドルウェアのバージョンアップ作業、それに伴うテスト等のインフラ作業になりますので、プログラミング工程は存在しません。それに代わる工程として存在するのが、「④構築作業」です。(「図 2-2.」参照)

また、仕事内容としては、「④構築作業」の準備作業にあたる「③詳細設計」と、「④構築作業」の確認作業にあたる「⑤単体テスト」「⑥結合テスト」の作業内容がプログラミング工程とは異なります。詳細については、以下の「表 2-2.」をご確認ください。

プログラミング工程がないシステム開発の工程図

図 2-2. プログラミング工程がないシステム開発の工程図

プログラミング工程があるシステム開発と同様、以下に工程別の仕事内容を記載した表を示しますが、①、②及び⑦~⑪については、「表 2-1.」と同じ記載内容です。

2-2. プログラミング工程がないシステム開発の工程別仕事内容

プログラミング工程がないシステム開発の工程別仕事内容


3.プログラマーの仕事とは

システム開発の工程が、「プログラミング工程がある場合」と「プログラミング工程がない場合」の2種類存在することは、前章でご説明した通りです。

2章に提示した図でも色分けしていたのでお気づきかと思いますが、プログラマーの仕事とは、「プログラミング工程がある」システム開発における、プログラミング工程から結合テストまでの限られた工程を担当します。以下の「図 3-1.」で担当範囲を見てみると、更にわかりやすかと思います。

場合によっては、詳細設計から担当するプログラマーもいますが、そういう人たちは、「上級プログラマー」と呼ばれたりします。

ですが、基本的には、上級プログラマーまたはシステムエンジニアが作成した詳細設計書に従って、プログラムを作成し、作成したプログラムの単体テスト、結合テストの完了までがプログラマーのお仕事です。

そして、それ以外の工程の仕事は、すべてシステムエンジニアが担当しているというわけです。

プログラマーの担当範囲

図3-1. プログラマーの担当範囲

また、プログラマーの仕事の詳細については、本サイトの以下の記事もオススメです。

関連記事

4.システムエンジニアの仕事とは

もはや説明する必要もない気がしますが、今までの説明からもお分かりのように、システムエンジニアの仕事とは、システム開発の広範囲で様々な工程の作業を担当します。

プログラマーが極々限られた範囲の作業であることと比べると、対照的ですね。

また、「図3-1.」で提示したように、場合によってはプログラミング工程が存在するシステム開発においても、プログラミングや単体テスト、結合テストをシステムエンジニアが担当する場合があります。言ってみれば、システムエンジニアとは、何でもできる「マルチプレイヤー」と言っても過言ではありません。

システムエンジニアのキャリアの浅い人がプログラミングやテスト工程といった下流工程を担当し、システムエンジニアとしてのキャリアが上がってくれば、基本設計、要件定義等の上流工程を担当するという、それだけのことです。

但し、プログラマーと決定的に異なるところは、広範囲な工程を担当した経験があるため、キャリアアップした上流工程を担当する際に、その経験が活かせるということです。それらの経験は、特にシステムテストにおいてシステム全体の要件を俯瞰しながらシナリオを作成する場合や、お客様が担当する運用テストをサポートする場合等に活かすことができます。

また、下図のように、インフラ作業メインでプログラミング工程がないシステム開発の場合には、すべての工程の作業担当者がシステムエンジニアになります。

システムエンジニアの担当範囲(プログラミング工程がない場合)

図4-1. システムエンジニアの担当範囲(プログラミング工程がない場合)

また、システムエンジニアの仕事の詳細については、本サイトの以下の記事もオススメです。

関連記事

5.「システムエンジニア」と「プログラマー」目指す先はどっち?

それでは、システムエンジニアとプログラマー、IT業界に入って目指す先はどちらが良いのでしょうか?

わたし個人の意見として正直に言いますと、最初から決めて入ることはないんじゃないかな、と思っています。

もちろんIT業界に入る以前から趣味等でプログラミングをやっていて、「この道を極めたい!」と思っている人の決意に、水を差すつもりは毛頭ありません。入る前から目指す先が定まっているなんて、素晴らしいことです。どうぞその道を自信を持って邁進してください。

きっと上級プログラマーやスペシャリストへの道も、切り開くことができるでしょう。ですが、そんな人ばかりがIT業界を目指して入ってくるわけではありません。

IT業界どんなところかな、システムエンジニアってどんな仕事をやるのかな、とまだまだ漠然としたイメージしか持てない人については、仮に、IT業界の募集職種に「システムエンジニア」と「プログラマー」両方あったとしたら、とりあえず(という言葉が適切かどうかはわかりませんが)「システムエンジニア」を志望してみてください。

理由はひとつ。

ここまででも、散々説明してきたように、システムエンジニアの仕事の方が、広く経験を積むことができ、選択の幅も広いからです。

その上でプログラミングを極めたいと思ったらその道を進めば良いし、広く俯瞰的な視点でシステム開発に携わりたいと思ったら、システムエンジニア道を楽しく突き進めば良いのです。


6.さいごに

システムエンジニアとプログラマーの違いについて、わかりやすく説明してきたつもりですが、いかがでしたでしょうか?   本稿を読み始める前よりも、あなたの疑問が少しでも晴れていれば、こんなに嬉しいことはありません。

自分の適性なんて、実際に始めてみないとなかなかわからないものです。ぜひ尻込みせずに、やってみたいと思った道への第一歩を踏み出してみてください。

あなたの選んだ道を応援しています。

『技術力』と『人間力』を高め定年まで働けるエンジニアを目指しませんか?

私たちは「技術力」だけでなく「人間力」の向上をもって、エンジニアとしてだけでなくビジネスパーソンとして高い水準を目指し、社会や顧客に必要とされることで、関わる人々に感動を与える集団であろうと思っています。

  • 定年までIT業界で働くためのスキルが身につく「感動大学」と「技術勉強会」!
  • 「給与が上がらない」を解消する6ヶ月に1度の明確な「人事評価制度」!
  • 理想のエンジニア像に近づくためのよきアドバイザー「専任コーチ制度」!
  • 稼動確認の徹底により実現できる平均残業時間17時間の働きやすい環境!

現在、株式会社ボールドでは「キャリア採用」のエントリーを受付中です。

まずは以下のボタンより弊社の紹介をご覧いただき、あなたの望むキャリアビジョンをエントリーフォームより詳しくお聞かせください。