結論: 「決める人」と「作る人」
家づくりにたとえると、SE(システムエンジニア)は設計士です。住む人(お客さま)の要望を聞き、「こういう間取りで、こういう設備の家にしましょう」と図面(設計書)にまとめます。プログラマーは大工の棟梁。図面をもとに、実際に柱を立て、壁を張り、家を形にしていきます。
ただし先に大事な注意をひとつ。この区別は会社によってかなりあいまいです。日本のSIerではこの分業がはっきりしている一方、Webサービスの会社では両方をこなす人を単に「エンジニア」と呼ぶのが普通です。「SE」は日本特有の意味の幅が広い言葉だと覚えておくと、求人票を読むときに混乱しません。
比較表でみる違い
| SE(システムエンジニア) | プログラマー | |
|---|---|---|
| 主な仕事 | 要望の聞き取り、仕様の決定、設計書づくり、進行管理 | 設計書をもとにしたプログラムの実装、テスト、バグ修正 |
| 担当する工程 | 前半(要件定義・設計)が中心 | 後半(開発・テスト)が中心 |
| 主に向き合う相手 | お客さま・チームの人たち | ソースコード・コンピューター |
| よく使う力 | 聞き取る力、文章にまとめる力、調整する力 | プログラミング力、論理的に考える力、調べて解決する力 |
| 成果物の例 | 要件定義書、設計書 | 動くプログラム(ソースコード) |
開発の流れの中で見ると
システム開発は、大きく「何を作るか決める前半」と「実際に作る後半」に分かれます。業界ではこれを上流工程・下流工程と呼びます。SEは主に上流工程を、プログラマーは主に下流工程を担当する、というのが伝統的な分業です。
川の流れのように工程がつながっている様子は、開発の流れのページで駅ごとに詳しく案内しています。「自分はどのあたりの工程が面白そうか」という目で眺めてみると、進路のヒントになるはずです。
キャリアパスの実際
日本のIT業界では長らく、プログラマーとして経験を積む → SEとして設計を担当する → プロジェクトマネージャーとしてチームを率いる、という階段が典型的なキャリアパスとされてきました。今もSIerを中心にこの道は健在です。
一方で近年は、管理職にならずに技術を極め続ける道も広がっています。特定の分野の第一人者として開発をリードする「スペシャリスト」の道です。「プログラマーはSEになるための通過点」ではなく、それぞれが独立した専門職になりつつある、というのが現在の流れです。
向き不向きの目安
- SEに向いている人: 人の話を聞いて要点をまとめるのが得意。文章を書くのが苦にならない。立場の違う人の間に立って調整するのが得意。
- プログラマーに向いている人: ものづくりに没頭するのが好き。パズルのように筋道を考えるのが好き。わからないことを自力で調べて解決するのが楽しい。
ただし、どちらか片方の力だけで済む仕事ではありません。SEにも技術の理解は必要ですし、プログラマーにもチームでの対話は必要です。あくまで「重心がどちらにあるか」の違いだと考えてください。
よくある質問
未経験から目指すなら、SEとプログラマーのどちらがよいですか?
決まった正解はありませんが、まずプログラマーとして実装を経験してからSEに進む道は、技術の裏付けを持てるという意味で堅実です。人と話して整理するのが得意なら、テスターや運用サポートから入って上流工程を目指す道もあります。文系からエンジニアになるにはの記事もあわせてどうぞ。
SEとプログラマーはどちらの年収が高いですか?
一般的な傾向としては、プロジェクト全体に責任を持つ上流工程やマネジメント職ほど給与が高くなりやすい構造があります。ただしWeb系企業では、高い技術力を持つプログラマーが管理職にならずに高待遇を得る例も増えており、会社の種類によって事情は大きく異なります。
プログラミングができないSEは本当にいるのですか?
います。特に大規模システムの上流工程では、自分ではコードを書かず、要件整理や調整を専門にするSEもいます。ただし、プログラムの仕組みを理解しているSEのほうが現実的な設計ができ、開発チームからの信頼も得やすいため、実装経験はSEにとっても大きな財産になります。