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

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

システムエンジニア(SE)とプログラマーはシステム開発という同じ現場で働いていますが、それぞれの担当業務には少々違いがあります。
一般的には、システムエンジニアは「開発の上流」、プログラマーは「開発の下流」を担うと言われることが多いです。
とはいえ実際の業務範囲は会社によって様々で、コード実装までシステムエンジニアが作業を行うこともあります。

システムエンジニア(SE)の仕事

システム開発において、顧客と直接対話し、顧客の要望を設計に落とし込むのがシステムエンジニアの仕事です。
具体的な業務でいうと「要件定義」「設計」がシステムエンジニアの担当になります。

要件定義とはシステム全体の仕様を定めるもので、システム開発のスタートとも言える工程です。いかに顧客の要望を吸い上げ、システムに反映するかがこの要件定義にかかってきます。
その他の業務として、結合試験や総合試験などもシステムエンジニアが行うことが多いものです。
結合試験とは複数のプログラムの連携をテストするもので、総合試験とはシステム全体の動きをチェックするものになります。どちらも「このプログラムがシステム内でどのように動くか」というシステム全体への理解が必要です。
また、結合試験・総合試験などに必要な「試験項目表」の作成も、多くの場合システムエンジニアが担います。

上記のように、システムエンジニアは直接プログラムに関与する部分というより、それ以前の設計やシステム全体をまとめる部分を担当します。
これには基本的なITスキルが必要なのはもちろん、設計書や試験項目表を作成する力や、顧客の要望を上手く聞き出すためのコミュニケーション力が重要になります。

このシステムエンジニアの仕事については、下記の記事でも解説していますので、よろしければご参照ください。

プログラマーの仕事

プログラマーはその名の通り、業務において主にプログラミングを担当します。
システムエンジニアから渡された設計書をもとに、プログラマーがコードの実装(コーディング)を行います。
この設計書には必要最低限の実装内容や満たすべき点が書かれており、それをもとにどのように実装するかはプログラマーの腕の見せ所となります。
要点を満たすだけでなく、できる限りバグが少なく、他のプログラムに悪影響を与えないコーディングが重要です。
コードの実装を終えたあとは、たいてい単体試験もプログラマーが行います。単体試験は一つのプログラムでのみテストを行うものです。
プログラマーが単体試験を終えたプログラムを結合し、その結合試験を多くの場合システムエンジニアが行います。
設計書をもとに実際の製造を行うプログラマーには、もちろん相応の技術力が求められます。

このようにシステムエンジニア(SE)とプログラマーは担当する範囲が異なりますが、どちらもシステム開発にはなくてはならない存在です。
システムエンジニアは前提として、コーディングの知識をある程度備えている必要があります。
そのため、プログラマーとしてITスキルを積んでからシステムエンジニアになるという人が多いようです。

システムエンジニアにプログラミングスキルは必要か?

今回の記事では、システムエンジニアのプログラマーの役割の違いを解説していきました。
システムエンジニアが要件定義や設計などの「開発の上流」を担当するのに対し、プログラマーは設計されたITシステムを実際にプログラミングする「開発の下流」を担当します。

最近はIT人材が不足しているため、「プログラミングスキルを学んでITエンジニアになりましょう」と謳うプログラミングスクールが増えてきました。
しかし、繰り返すように、実際に手を動かし、プログラミングをするのはプログラマーの仕事であり、エンジニアの仕事は要件定義や設計が中心です。

どちらかと言えば、システムエンジニアに必要なのは、IT技術の知識であったり、システムを設計する力であったりします。
もちろんシステムエンジニアがプログラミングの理解を深めることも大切ですが、IPAが運営している情報処理技術者試験で出題されるような設問への理解の方が業務を助けてくれるでしょう。

システムエンジニアとプログラマーの違いを把握し、キャリアプランやスキルアッププランを練っていくことが大切です。

参考