IT業界の仕事と言われて、まず「プログラマー」や「システムエンジニア」という職種を思い浮かべる人は多いのではないでしょうか。
しかし、その違いについて明確に答えられる人は少ないと思います。
ここでは、「プログラマー」と「システムエンジニア」の違いについて、仕事内容や求められるスキル、資格やキャリアパスなどを含めて説明をしていきます。
【目次】
- システムエンジニアとプログラマーの仕事内容の違い
- システムエンジニアとプログラマーに求められるスキルの違い
- システムエンジニアとプログラマーにそれぞれおすすめの資格
- システムエンジニアとプログラマーの年収やキャリアパスについて
システムエンジニアとプログラマーの仕事内容の違い
システムエンジニアとプログラマーの仕事内容の違いを確認する前に、まずシステム開発がどのような工程で進められるのか、ウォータフォールモデルをベースに確認していきましょう。
システム企画
まず、システムを作る際には、「こんなシステムを作ろう」というシステム企画の工程が必要になります。
業務システムであれば、どのようなシステムがあれば業務効率化に繋がるのかをヒヤリングしたり、同業他社の動向を調査する場合もあるでしょう。
Webサービス系のシステムであれば、同じく同業他社の動向や市場調査、トレンドなどを確認し、構築するシステムの方向性を決めていきます。
構築するシステムの概要やコンセプトが決まったら、概算費用を算出の上で、経営層などの上層部や関係部署と調整し、Goサインが出れば予算を確保します。
自社のリソースだけで構築ができない場合は、外部SIerと協業したり、協力会社を確保する必要もあります。
予算及びシステム構築要員が確保できてはじめて、開発業務がスタートできます。
要件定義
システム企画にて方向性や概要を決めたシステムに対して、要件定義フェーズでは「どんなシステムを作るのか」、その詳細を詰めていきます。
また、バックアップや性能、セキュリティなど、システムを利用するための機能とは直接は関係しない、非機能要件についてもこのフェーズで検討していきます。
業務システムであれば、利用部門のユーザと協議の上、ユースケースを作成してシステム導入後の業務の流れを整理したり、業務に必要な画面やアウトプット類を整理し、そのシステムがどのように振る舞うかを決めていきます。
他システムとの連携が必要になる場合は、周辺システムも含めたシステム関連を整理する必要も出てきます。
Webサービス系システムであれば、システムの企画を行なった部門と詳細を詰めていくことになります。
場合によっては、サービスイン時にすべての機能をリリースするのではなく、最低限の機能をまずリリースし、機能を改善・追加しながら徐々にシステムの要件を満たしていくアジャイル(インクリメンタル)な開発を行う場合もあります。
もちろん、業務システムの場合でもアジャイル開発を取り入れる場合もあります。どの開発手法を取り入れて開発を進めていくのかを決めるのも、要件定義フェーズで行われることが多いようです。
基本設計
要件定義フェーズにて決定したシステム概要について、画面構成や画面遷移、帳票レイアウトなどを決定していきます。
アーキテクチャの検討が必要な場合もこのフェーズで行いますし、他システム連携がある場合は、外部連携のためのデータレイアウトもこのフェーズで検討していきます。
また、クラス設計などプログラムを構成する枠組みについても、基本設計フェーズで決定していきます。
ユーザの目に見える画面や帳票などのレイアウトや、他システム連携のためのデータレイアウトを決めることを外部設計、プログラム内部のクラス構造などを整理することを内部設計と呼ぶ場合もあります。
詳細設計
主に基本設計フェーズで決定したプログラムについて決定したプログラム内部の構成に対して、その処理詳細を決定していきます。
詳細設計フェーズでは、設計した内容を元にプログラミングすることができるよう、条件分岐やエラー処理も含めて処理内容を記述していきます。
製造
製造フェーズでは、詳細設計フェーズで作成された設計書をもとにプログラミングをしていきます。
製造フェーズで処理構造を決めるということは基本的にはありません。
設計書の内容を迷いなくプログラミング言語に変換していくことができないのであれば、それは基本設計〜詳細設計での検討漏れ、設計漏れがあることになります。
テスト
テストフェーズには、プログラムをメソッドや関数単位でホワイトボックステストを行う単体テストフェーズ、クラスやメソッドを組み合わせて機能単位でテストする結合テストフェーズ、機業務やサービス利用の全体の流れを通してテストをする総合テストフェーズ(ユーザテストや受け入れテストなどもこのフェーズに含みます)などがあります。
最近では、テストクラスを作成して自動で単体テストを行ったり、結合・総合テストフェーズでもWeb画面への入力を自動化できるツールを使うなど、テストの自動化についても盛んに行われています。
どのフェーズを誰が担当するの?
システム開発は上記のようにいくつかのフェーズに分かれて行われますが、一般的には、システム企画を超上流工程、要件定義〜基本設計あたりを上流工程、詳細設計〜製造〜テスト以降を下流工程と呼びます。
システム企画などの超上流工程はコンサルタントやITストラテジスト、上流工程をシステムエンジニア、下流工程をプログラマーが担当することになります。
結合テスト以降のフェーズをテストのみを専門にするテストエンジニアが実施するケースもあります。
建築に例えるのならば、どんな建物を立てるのかを決めてデザインし、設計図を書くところまでがシステムエンジニアの仕事、設計図を見ながら建物を立てていく大工さんの仕事がプログラマーの仕事、といったイメージになるでしょうか。
ここまでが、一般的なシステムエンジニアとプログラマーの仕事内容や開発プロジェクト内での役割の違いですが、SIerやユーザ企業の情報システム子会社など、特に国内のシステム関連会社では、少し事情が違ってきます。
本来、システムエンジニアとプログラマーは職種の違いであり、単に業務上の役割を分けるためだけのはずですが、多くの企業(特に国内企業)では、プログラマーの上位職種としてシステムエンジニアが設定されているケースがよく見られます。
そして、システムエンジニアは設計など上流工程はもちろん、プログラミング、テストまでソフトウェア開発に関わるほとんどの工程に関わることが多くなっています。
つまり、システムエンジニアは「プログラマーよりも守備範囲が広く、上流工程から下流工程まで担当するITエンジニア」、プログラマーは「システムエンジニアから指示を受けて製造工程(もしくは詳細設計工程)以降を担当するITエンジニア」という状態になっているのが多くの開発現場での実情です。
企業によっては、一般社員が「プログラマー」、主任や係長などが「システムエンジニア」、課長が「プロジェクトマネージャ」というように、役職と職種が紐づいているケースも少なくありません。
そのため、「プログラマー」や「システムエンジニア」がどのように評価され、どのようにキャリアアップしていくのかは、所属するシステム開発企業において「どうやったら昇進できるのか」という答えとイコールであったりします。
システムエンジニアは、プロジェクトマネージャを助け、納期に遅れず、開発プロジェクトを遂行することが上長から評価されるポイントになります。
また、後進の育成も担う中堅的な立場になりますので、プログラマーへの適切な指示を行い、複数のメンバを動かしてプロジェクトを成功に導くリーダシップを発揮することも求められるでしょう。
プログラマーは、システムエンジニアからの指示に従って、設計書に沿って正確なプログラミングが出来ること、適切なテストケースを設定し、成果物であるプログラムの品質を高めることが出来ること、などが評価されるポイントとなるのではないでしょうか。
システムエンジニアとプログラマーに求められるスキルの違い
システムエンジニアとプログラマーに求められるスキルにはどのような違いがあるのでしょうか。
システムエンジニアとプログラマーで求人の内容にどのような違いがあり、採用担当者はどのような人物を求めているのか、という観点からみて見てみましょう。
先に述べた通り、国内の企業ではプログラマーの上位職種がシステムエンジニアというケースが多いため、その違いはエンジニアとしての経験の長さをイメージしていることが多いのが実情です。
つまり、プログラマーの求人は若手のエンジニアを、システムエンジニアの求人は経験豊富なエンジニアを求めているということが言えます。
そのため、システム開発経験が未経験や経験1〜2年ぐらいの人がシステムエンジニア求人に応募しても採用されることはほぼありません。
逆に、10数年エンジニア経験のある人がプログラマー求人に応募すれば、何か特別なこだわりがあると思われたり、上流工程への参画が可能かどうか打診されることが多いのではないでしょうか。
あくまで一般的にですが、採用担当者としてはプログラマーは経験2〜5年ぐらい、システムエンジニアは5年から10年ぐらいのシステム開発経験がある人材をターゲットにしていると考えた方が良いでしょう。
それら経験年数が条件を満たしているとした場合、求められるスキルにはどのようなものがあるのでしょうか。
システムエンジニアについては、要件定義、基本設計に参画したスキルや、チームリーダやプロジェクトマネジメント経験・スキルについて求められます。
リーダやマネージャ経験は必ずしも必須ではありませんが、システム開発業務の中心になるのは紛れもなくシステムエンジニアですので、チームをまとめ、運営できる能力は問われるでしょう。
また、技術的な要素では、システムエンジニアはアーキテクチャの設計にも関わる可能性が高くなります。
プログラミング経験の有無だけではなく、フレームワークやアプリケーションサーバ、データベースなどのミドルウェア周りから、サーバやネットワークなどのインフラ周りまで、幅広い知識を持っているかを問われます。
特に近年では、クラウドに関する知識やスキルは必須になってきます。
AWSやAzure、GCPなど、何らかのクラウドプラットフォームでの開発経験やスキルは重要な評価ポイントです。
もし開発業務として経験がないのであれば、スキルアップのために何らかの資格を取得しておくことも検討してみましょう。
プログラマーであれば、システムエンジニアとは違い、アーキテクチャを意識しなくとも開発業務自体は行うことができます。
そのため、どんなプログラミング言語での開発経験があるかが問われてきます。
数年経つとプログラミング言語のトレンドも変わってきます。
Webアプリケーション開発では、JavaやJavaScriptなどのプログラミング言語を使うケースが多いですが、プログラマーとしては、ひとつのプログラミング言語だけではなく複数の言語での開発経験を持っていると重宝されます。
システムエンジニアとプログラマーにそれぞれおすすめの資格
エンジニアのスキルを判断するのに、一番重視されるのはもちろん業務経験になりますが、本当に業務を遂行できるだけのスキルがあるのかどうかを裏付けるのに、資格は有効な手段となります。
システムエンジニアとしては、情報処理技術者試験のシステムアーキテクトやデータベーススペシャリストなどの資格がおすすめです。
リーダとしての経験を裏付けたいのであれば、プロジェクトマネージャやPMP(Project Management Professional)などの資格にもチャレンジしてみると良いかもしれません。
プログラマーとしては、情報処理技術者試験の基本情報処理試験、応用情報処理試験までは取得しておきたいものです。
特に基本情報処理試験については、昇進・昇格の条件にしている企業も多くあります。経験年数が増え、開発業務が多忙になる前に早めに取得しておきたいものです。
また、Java言語やオラクルデータベースを開発業務で利用しているのであれば、Oracle Certified Java Programmer、オラクルマスターなどのベンダー資格を取得するのも有効です。
ベンダー資格については、業務に直接的に役立てることができるケースも多いため、開発で利用している技術に関係する資格を取得しておくと、業務経験を説明する際に説得力が増すでしょう。
システムエンジニアとプログラマーの年収やキャリアパスについて
プログラマーの上位職種としてシステムエンジニアが設定されている企業が多いため、年収の面でもプログラマーよりシステムエンジニアの方が高くなっています。
業種や企業の規模によっても変わるため一概には言えませんが、プログラマーは平均年収430万円程度、システムエンジニアは平均年収550万円程度というのが相場です。
なお、プログラマーになった後のキャリアパスについては、プログラミングの経験を積み重ねた上で、設計工程にも仕事の幅を広げていき、システムエンジニアを目指すというのが一般的です。
もちろん、プログラマーのままでキャリアを磨くという道もあり得ます。
しかし、残念ながらプログラマーとしてのみ経験年数が積み重なっていっても、年収は上がらないというのが実情です。
「ずっとプログラミングだけやっていたい」というエンジニアにとっては、職種の分業が国内企業よりもはっきり分かれている外資系企業の方が、プログラマーのキャリアを重ねていけるチャンスがあるかもしれません。
また、システムエンジニアになった後のキャリアパスについては、いくつか道が分岐していきます。
システム開発経験を重ねるうちに、プロジェクトマネージャのようにマネジメント層へのキャリアに進むか、超上流としてITストラテジストやコンサルタントのキャリアを歩むか、そのまま技術屋としてITアーキテクトの道に行くか、というようなキャリアパスが考えられます。
もちろん、Sler、サービス提供系企業、ユーザ系企業など、どんな企業に属しているかによっても、キャリアの築き方は変わってきますし、国内企業なのか外資系企業なのかによっても方向性は変わってきます。
しかし、今後も長くIT業界で働き続けていくためには、将来自分がどのようにキャリアを重ねていくべきかについて常に意識しておいた方が良いでしょう。
=================
>デジタル人材やエンジニアのキャリアに関する記事
「DX推進」人材とは?【フェーズ毎に求められるスキル・経験】
https://www.axc.ne.jp/media/change-jobs-knowhow/dx-capability
SE・PMのキャリア形成に人気の資格とその実情
https://www.axc.ne.jp/media/careertips/qualification_sepm
【SIer SE・PM向け】情シスやDX推進部へ転職後、実際に求められる『スキル・知識』とは
https://www.axc.ne.jp/careertips/2020/0115/23780.html
=================
今やどんな業種であってもIT化が進んでいるため、プログラマーにせよシステムエンジニアにせよ、今後も広く求められる職種であることは間違いありません。
近年のDXの流れにより、需要はさらに伸びていくと言えるでしょう。
しかし反面、技術の変化のスピードは早く、一時の流れに乗ってITエンジニアになったとしても、将来的なキャリアパスを描けていなければ、前線に居続けることはできなくなってしまいます。
最新技術についてアンテナを張っておく必要があるのはもちろんですが、プログラマー、システムエンジニアどちらの職種であっても、ソフトウェア開発に関する知識を深く掘り下げる姿勢、システム開発全般に関する幅広い知識を収集する姿勢は今後さらに求められるようになっていくのではないでしょうか。
キャリアでお悩みの方は、ぜひアクシスコンサルティングにご相談ください。
アクシスの求人のうち、
約77%は非公開。
平均サポート期間は3年です。
各ファームのパートナー、事業会社のCxOに定期的にご来社いただき、新組織立ち上げ等の情報交換を行なっています。中長期でのキャリアを含め、ぜひご相談ください。