ソフトウェアの開発に関わる仕事としてよく比較される言葉にプログラマー(PG)とシステムエンジニア(SE)があります。非エンジニアの方にとっては、その違いがわからないため、「SEの仕事をしている」と聞くとプログラミングをしているんだなと感じるかと思いますが、SE(システムエンジニア)の人でもプログラミングをする人もいれば、設計書やクライアントとのやりとりだけをして、プログラミングを全くしないSE(システムエンジニア)もいます。
ちなみに私は本業はマーケターなのですが、プログラミングもしています。実際にプログラミングをするまでは、プログラマーとシステムエンジニアって同じ職種のように思っていました。実際に私の兄が以前「システムエンジニア(SE)」をしていると聞いた時には、プログラミングをしていると勘違いしていました。実際のコードを書く部分は外部会社に委託していると言っていたことから違いを知った背景があります。
企業の規模や担当業務、組織の考え方によって若干の違いはありますが、その役割や作業内容の違いをご説明します。
プログラマー(PG)の仕事とは?
プログラマーは名前の通りプログラムを作成する人です。人によってはエンジニアと呼んでいる場合もありますが・・・。
そもそもプログラミングとは、コンピューターに仕事をさせるための指示の言語になります。例えば英語しか通じないアメリカ人に仕事を依頼するときには英語で伝える必要があるように、機械に仕事をさせるには、機械が理解できるプログラミング言語で指示を書いてあげる必要があり、その指示を作成する人のことをプログラマーと呼ばれています。
プログラミング言語を使って実装するだけでなく、実装した内容に問題がないかどうかのテストを行います。設計書に記載されている内容に沿って、どのように実装すると効率よく処理できるのか、ソースコードに落とし込む能力が必要になります。
設計された通りに実装していても、そのソースコードの内容によっては処理に時間がかかったり、機能を追加する場合に保守が大変だったりします。また、テスト時に不具合が多く見つかったり、セキュリティー面については考慮がされていないのように、後から大幅な修正が発生する場合もあります。そのため、プラグラマーは常に最新の技術を学び、細部までチェックできる能力が求められます。
システムエンジニア(SE)の仕事とは?
プログラマーと違ってシステムエンジニアは、主にプログラムの設計を担当します。顧客(クライアント)の要望を聞き、要件定義を行った上で設計書に落とし込む能力が最も必要になり、プログラミング経験は必須ではありません。
しかし、もちろんプログラミングについての知識がないとそもそもの設計書を作成できないというケースもあるため、プラグラマーを経験した上で、より上流工程(顧客に近い立場)のシステムエンジニアになるということも多いです。そのためシステムエンジニアは、プログラミングの技術・知識だけでなく、顧客の業務内容やコミュニケーション能力も求められます。
さらに、開発されたプログラムが問題なく顧客の仕様を満たしているかどうかを確認するために、あらかじめテスト内容を考えておくことも大事です。一般的に、V字モデルと呼ばれる開発工程とテスト工程を対応づけた形でテストするとわかりやすいです。
このモデルはV字になっている左右を見比べることで、どのレベルの開発内容を確認するテストなのかを表しており、この対応に沿った資料を作成することで、役割分担が明確になりますし、間違うリスクが少なくなります。
例えば、複数のプログラムを連携した場合の結合テストやシステム全体としての動きをチェックするシステムテストなどを検討し、テスト項目の一覧を表にして作成します。
つまりシステムエンジニアにはプログラミングや業務知識以外にも、設計書等を作成するための文章作成能力や、顧客とのコミニュケーション能力が必要です。
システムエンジニア(SE)とプログラマー(PG)のどっちを目指すべき?
システムエンジニアとプログラマーの違いは理解いただけたかと思いますが、実際にどっちの業務が自分に合っているかを考えるのが1番重要です。
またよく1番比較されるのが、給料面です。プログラマーは「35歳定年説」があるように、年収は約350~550万円ぐらいとされています。これはシステムエンジニアよりも低い給料レンジとなるため、35歳を境として収入・働き方を見直す方も多く、35歳までにシステムエンジニアを目指して転職する人もいます。
そのためプログラミングをよくフリーランスに外注している企業も多いですが、若い時はフリーランスで仕事があったとしても、35歳以降になると仕事がもらえなくなり、食べていくことができなくなるリスクもあります。
クライアントからすればシステムが動けば問題ないため、プログラミングのコード自体に価値を感じていないですし、中身の詳細まで把握していません。しかしシステムエンジニアのようにコミュニケーションを取る人が優秀だった場合は、発注先のクライアントの工数も無駄に多くかからないですし、自分たちの要望以上のものが出来上がる可能性もあります。
そのため市場では、優秀なプログラマーよりも優秀なシステムエンジニアが求められ、必然的に市場価値が高く給料も上がるといった仕組みになっています。
もしエンジニアとして一生やっていくのであれば、プログラマーではなくシステムエンジニア、もしくはプロジェクトマネージャーといった上流工程を目指す方が給料も高いですし、市場価値が高くなって転職もしやすくなります。
マネージメントのできるエンジニアは中々いないため、どこからも求められる存在となりますし、年収1,000万を余裕で超えるプロジェクトマネージャーも多いです。
システムエンジニアとプログラマーの違いまとめ
プログラマーとシステムエンジニアのそれぞれの仕事についてご説明いたしました。ここで簡単に2つの違いをまとめていきたいと思います。
一般的にはプログラマーから働き始めて、後にシステムエンジニアになるケースが多いです。しかし、最初からプログラミングよりもシステム全体の設計に興味があったり、クライアントとコミュニケーションを取るといったような人と関わりを持ちたい方には、システムエンジニアが向いています。
一方で、プログラミングの方が合っている方も実際にいます。例えばあまり人と関わることがしたくない人や、1人で黙々と作業をこなしたい方、ドキュメントの作成といったことが得意な人はプログラマーをオススメします。
一般的に、上流工程に行く方が給料は高くなります。そのためプログラマーは、システムエンジニアよりも給料が低いことが多いです。しかし普通の人よりも高い技術力・知識力を持っているプログラマーは年収が高いこともあるため、システムエンジニアと変わらないか、もしくはそれ以上の給料をもらっている人も存在します。
しかしプログラマーで高い給料をもらい続けるためには常に新しい技術を積極的に学んでいく必要があります。自らプロフェッショナルな専門性の高い人材と言うふうに周りから評価されないと給料が低くなる可能性もあるので、なるべく上流工程のシステムエンジニア、またプロジェクトマネージャーといったポジションを目指す方が給料も上がりやすいですし、転職もしやすくなります。
これらを踏まえた上で、自分はどちらを目指すのかを考えるきっかけになれば幸いです。
コメント