ソフトウェア開発に欠かせないプログラマー(PG)とシステムエンジニア(SE)は、一般の方々にとって、それぞれ役割や違いが少しわかりにくい職種です。
しかしながら、実際の現場担当者に目を向けると、そのイメージがつかみやすくなります。
ちなみにこの2職種の違いや役割は、システム開発の世界でキャリアアップを目指す上でもきちんと理解しておくべき内容であると考えられます。
そこで今回は、プログラマーからシステムエンジニアにキャリアアップをした私が、これらの仕事における具体的なイメージを皆さんに詳しくご紹介していきます。
この記事の目次
プログラマー(PG)とシステムエンジニア(SE)の違い
プログラマー | エンジニア | |
給料・年収 | 305.9万円~ 540.3万円 | 550.8万円 |
求められるスキル | やや多い | 多い |
キャリアパス | 後述 | 後述 |
未経験からの始めやすさ | 始めやすい | 難しい |
男女比率 | 男性8~9割、女性1~2割 | 男性8~9割、女性1~2割 |
担当工程 | 下流 | 上流 |
給料・年収
414.6万円(平成28年賃金構造基本統計調査)
550.8万円(平成28年賃金構造基本統計調査)
深夜残業・休日出勤の増える繁忙期は、手取りも大幅アップ(年収・月収のアップダウンが激しい
- 20代前半の平均年収 → 305.9万円
- 50代の平均年収 → 540.3万円
スポット契約のフリーランスが多いベテランプログラマーの場合、年収が500万円~800万円ぐらいになることもあります。
求められるスキル
- 業務知識(ex 介護保険、レセプト、農業委員会 など)
- プログラミング能力
- コミュニケーション能力
- 業務知識(要求分析やヒアリングをするため、お客様以上の知識が必要)
- コミュニケーション能力
- 調整力
- 理解力
- リーダーシップ力(本来のまとめ役はプロジェクトマネージャー、しかしSEが現場を仕切ることもある)
- プログラミング力(プログラム内容がわからないければ設計できない。新人PGのサポーにも入れない)
キャリアパス
- システムエンジニア
- ベテランプログラマー(フリーランスなど)
- プロジェクトマネージャー(プロジェクトのまとめ役)
- システム部門の管理職(課長、部長、本部長など)
- サービスエンジニア、サポートエンジニア(妊娠出産や病気などで、残業の多い現場仕事が難しくなった場合(職種の豊富な大企業に限る))
未経験からの始めやすさ
新人研修やOJTの整った大企業に入ると、未経験でも自然にプログラミングが習得できる
即戦力であることが求められる中小企業や、派遣会社、フリーランスの場合は難しい
プログラムの設計をするため、プログラマー経験が必要(未経験ですぐにできる仕事ではない)
男女比率
いずれも男性8~9割、女性1~2割
仕事工程
- プログラミング
- テスト
プログラマーは下流工程を担当します。
- 要求分析
- 要件定義
- 基本設計
- 詳細設計
システムエンジニアは上流工程を担当します。
プログラマーとは?
プログラマーは、開発現場における下流工程となるプログラミングからテストまでをおこなう職種です。
プログラマーが取り扱う言語は、開発システムの形態や使用デバイス、扱うデータなどによってその内容が大きく異なる実情があります。
そのため、大学や専門学校で習得した何らかの言語をプログラマーという職種で極めたいという人は、各社の開発実績などに目を通しながら慎重に就職先を決める必要があるでしょう。
大手ソフトウェア会社の新人は、プログラマーの仕事を通して自分の扱う言語や業務知識を学び、少しずつシステムエンジニアへのキャリアアップしていく傾向が高いです。
そのため、開発現場で一生懸命プログラミングをおこなう若手の名刺には、採用時の職種であるシステムエンジニアと書かれているケースも少なくない実情があります。
【参考】初心者でもプログラミングはできるの?
大手企業に入社する新卒エンジニアの半数以上はプログラミング初心者です。
こういった実情を把握する会社側では、まず新人全員を集めた合同研修でシステム開発の基礎を教え、現場ではOJT(オン・ザ・ジョブ・トレーニング)を通してプログラマーとしての本格的な指導をおこなっていきます。
そこから何本かの修正作業を続けながらバグ修正やデバッグの流れを覚え、3ヶ月ほどで新規プログラムを1本完成させられるまでのスキルが身につきました。
新人とベテランの混在する不思議な職種
システム開発現場では、フリーランスや派遣会社から来ているベテランプログラマーもたくさん活躍しています。
システムエンジニアになる過程としてのプログラマーではなく、プログラミングを生業とする人たちは、この業界における職人とも言える存在です。
そのため、プログラムの量産が求められる大規模な開発現場では、修行中である新人プログラマーと協力会社のベテランプログラマーが一緒に働くこともあります。
システムエンジニアとは?
システムエンジニアは、その人が携わる業務やプロジェクトの大きさなどによって、役割の範囲が大きく異なる職種です。
IT業界で定義されているシステムエンジニアの役割
まず、ソフトウェア工学の分野で古くから存在するウォーターフォールモデルにおいて、システムエンジニアは次のような仕事に携わる職種であると考えられています。
- 要求分析
- 要件定義
- 基本設計
- 詳細設計
具体的には、プログラミングをする上で欠かせない設計資料や仕様書などを、お客様と打ち合わせをしながら作っていく仕事内容となります。
そのため、システムエンジニアの決定した事項からプログラマーの作業が生まれることから、前者の作業範囲を上流工程、後者を下流工程と呼んでいるのです。
システムエンジニア=プログラミングが上手い人ではない
システムエンジニアが最初に携わる要求分析は、お客様や担当営業と一緒にどのようなシステムが必要なのかをヒアリングしていく作業です。
したがって、SEとして開発現場で活躍するには、クライアントと呼ばれるお客様とのコミュニケーション能力や調整力が必要不可欠となります。
当然のことながら、どのようなプログラムを作れば、お客様の要望を効率よくシステム化できるかというセンスもSEには求められます。
そのため、単純に「プログラミングが上手い・好き」というだけでは、システムエンジニアとしての仕事は務まらないと捉えた方が良さそうです。
システムエンジニアになるまでのスピードは、その企業の方針や人によって大きく異なる実態があります。
例えば、数十人~数百人のメンバーで構成される大規模プロジェクトでは、予め各担当者の役割が固定化されていることにより、プログラマーとして入社した新人がプログラマーのまま、開発期間を終えるケースも見受けられます。
一方で、要求分析からプログラム開発、テスト、導入までを2~3人でおこなう小さなチームの場合、先輩の仕事をサポートする過程で新人プログラマーにシステムエンジニアとしての知識や経験がすぐに身につくこともあるようです。
システムエンジニアになったらプログラマーはもうやらない?
開発部隊にスケジュールの大幅な遅れや問題が発生した場合、システムエンジニアがプログラミングの支援に入ることもあります。
そのため、上流工程を担当できるシステムエンジニアになったからと言って、苦手なプログラミングとお別れできるというわけではないのです。
またお客様への導入が終わり、開発チームが解散すると、残された1~2人のシステムエンジニアがその後のフォロー全般をおこなう形となります。
したがって、実際のIT企業内におけるシステムエンジニアは、プログラマーと比べて非常に広い範囲の業務をカバーする職種であると捉えた方が良いかもしれません。
まとめ
従来のウォーターフォールモデルにおいて、次のように役割が分けられているシステムエンジニアとプログラマーも、実際の現場では双方が定義とは大きく異なる作業を担うことがあります。
・システムエンジニアの仕事 → 要求分析、要件定義、基本設計、詳細設計(上流工程)
・プログラマーの仕事 → プログラミング、テスト(下流工程)
また、アジャイルソフトウェア開発などの効率的な手法が注目される近頃では、ウォーターフォール全盛の時代と比べてプログラマーとシステムエンジニアの役割に明確な違いや境界がなくなりつつあると言えるかもしれません。