SEとPGの違いとは?
はじめに
SE(システムエンジニア)とPG(プログラマー)はどちらもIT系の職種ということもあり、同じような仕事だろうというイメージを持たれがちです。
確かに同じ工程に携わることもありますが、一般的にはそれぞれ異なった役割があります。
今回はSEとPGの違いについて詳しく紹介していきます。
SE、PGの違いとは?
まず、SEとPGの簡単な概要を見てみましょう。
SE
SEとは、システム開発における工程の中でも、「クライアントとのやり取り」や「システムの設計」を主に担当する職業です。
上流工程と言われる要件定義や設計、システム完成後のテスト・納品を行いますが、チームの規模や状況によっては下流工程にあたる開発を行うこともあります。
SEにはITの全般的な知識が必要ですが、要件定義書や設計書を作成するためのドキュメント作成スキル、ヒアリングや提案を行うコミュニケーションスキルも求められます。
PG
PGとは、SEが作成した要件定義書や設計書をもとに詳細設計やコーディングを行う職業です。
下流工程と言われる開発を実際に行なっているのは主にPGです。
SEが担当する段階での設計書には、システムの概要や機能の最低限の項目のみ記載されているので、それを読み取ってコードで実現するためのコーディングスキルが必要となります。
また、コーディングしたプログラムのテストを担当することもあるので、自分の作成したプログラムに責任を持つことも大切です。
ここまでで、SEとPGの違いとして、仕事内容や求められるスキルが挙げられます。
その他にも年収やキャリアパスという面でも違いが見られます。
仕事内容
SE
要件分析・定義まず、クライアントとやり取りし、要望や課題をヒアリングし分析します。そして、課題を解決するための最適なシステムを考案し、必要となる機能を明確に決定しクライアントの同意を得る、システム開発における一番最初の工程です。
この工程を疎かにしてしまうと、クライアントのニーズに沿ったものを作成できず、途中での仕様変更や機能追加もしくは完成後の修正が必要となる事態を引き起こしかねません。そのため、システム開発における一番重要な工程ともいえます。
基本設計要件分析・定義で定義した内容をもとに、実際にどのような動きをさせるか決めていきます。
画面のレイアウト・仕様、操作方法、処理内容や処理に必要なデータ、データフローのような画面やUI、データに関するユーザー向けの仕様設計を行います。
基本設計で決定した内容をもとに、必要な機能をどう実現するかを具体的に定めます。
機能の切り分けと細分化を行い、実際にコーディングできるようになるまで落とし込んでいきます。
この工程では、開発を担当するPGがスムーズに開発できるように基本設計を齟齬なく伝えることがSEの役割です。
PGが作り上げたシステムが要件や設計通りに動作するかのテストを行い、不具合が見つかったプログラムについては確認後修正され、再度テストを行います。テスト結果がOKであれば、クライアントに納品します。
納品前の最終チェックを行うので、疎かにできない重要な工程です。
テストに関してはPGが担当することもあります。
PG
詳細設計詳細設計はPGとSEが協力して行うことが多いです。
前述の通り、SEが決定した基本設計の情報を元に、必要な機能をどう実現するかを具体的に定めます。
機能の切り分けと細分化を行い、実際にコーディングできるようになるまで落とし込んでいきます。
詳細設計で定めた内容を元に、コーディングを行いシステムを開発していきます。
システムに合わせてJava、C言語やC++、PHP Rubyのようなプログラミング言語を使用します。
ユーザー環境に合わせた環境で作成したプログラムを実際に動作させ、要件や設計通りに動作するか確認します。
不具合が発生した場合は確認後修正し、再度テストを行います。
求められるスキル・知識
SE
ヒアリング・プレゼン能力要件定義の際、クライアントとのやりとりを通して要望や課題をヒアリングする能力が必要です。
また、ヒアリングした内容を元に、要望や課題を解決できる最適なシステムを提案する能力も求められます。
IT全般の知識、経験があるとより最適な提案を行うことができるでしょう。
コミュニケーション能力SEはパソコンに向かいコーディングだけしていればいい仕事だ、というイメージを抱いている人も少なくないでしょう。
ですが、他の業種や業界と同じくSEも一人で行う仕事ばかりではなく、チームでの作業やクライアントとの打ち合わせを伴うことも多いです。
また、PGに対し、クライアントの要望やシステムの基本設計を齟齬なく伝える必要もあるため、コミュニケーション能力は必須といえます。
マネジメント能力SEはプロジェクト全体を管理するマネジメント能力も求められます。
例えば、進捗や人員の管理、PGへの指示やコミュニケーション、業務の割り振り、要件定義や設計関連のドキュメントの作成など総合的な能力が必要です。
SEは物事を筋道立てて考える能力が必要だと言われています。
例えば、スケジュールを立て仕事の割り振りをする場合、「この仕事は難しいから一番スキルの高いAさんに任せよう。」「この仕事は新人でも問題ないけど、サポートはつけておきたい。時間は多めに取ろう。」のように、トラブル対応の場合は「Bの処理が走るとエラーが発生する」「Cのデータを入力するとエラーが発生する。同様の事象はないだろうか?」のように過去のデータや経験に基づいた論理的な思考ができればより最適な選択にたどり着けるでしょう。
PG
論理的思考力プログラミングをするため、また仕様書や設計書を作るためには、順序立てて思考する能力が不可欠です。
また、より効率的の良いプログラムを作成するためにも求められる能力です。
PGはSEと異なり、クライアントとの交渉や提案を行わないため、コミュニケーションスキルが不要のように思われがちです。
しかし、PGもSEや他のPGとの連携を取る必要があるのでコミュニケーション能力は大切です。
PGはシステムやソフトウェアを作成する役割があるのでプログラミングスキルは必須です。
ただ機能を実装すればいいのではなく、効率の良いコードや可読性の高いコードを書き、より良いプログラムを作成することが求められます。
一見同じ動作をしているように見えても、書き方によって処理が遅く効率が悪くなったり、不具合の発生にもつながります。
年収
SE
SEの平均年収は500万円、月収にすると平均41万円です。
職業別ランキングでも18位にランクインするほどで、IT業界だけにとどまらず年収の高い職業といえます。
PG
PGの平均年収は416万円、月収にすると平均29.7万円です。
SEに比べてやや業務の幅が狭いため、SEよりも年収は低い傾向にあります。
キャリアパス
SE
SEとしての経験を積み、開発スキルやマネジメント能力を磨くことでSEからプロジェクトリーダーへ、さらにプロジェクトマネージャーといったマネジメント職が目指せます。
また、ヒアリング・プレゼン能力を磨くことでシステムの構築や導入支援を行うコンサルタントとして活躍する人もいます。
PG
PGとして開発などの下流工程の業務をこなし、経験や知識を得ることでSEに転向することが一般的です。
SEとして最適なプロジェクト管理を行ったり、適切な仕様書や設計書の作成を行うためには現場での経験が必要なためです。
SEに転向した後は、SEのキャリアパスと同じくマネジメント職を目指すこともできますし、得意分野を極めていくことで特定分野のスペシャリストとして働くこともできます。
また、PGとしてのスキルを磨き続け独立してフリーランスで働く選択肢もあります。
おわりに
以上、SEとPGの概要や違いについて紹介してきました。
それぞれ明確な役割の違いはあるものの、現場や企業によって定義が異なっている場合もありますので、求人を見る際には注意して確認しましょう。