IT業界内で技術職と言われている職には大きく2つあります。
プログラマーとシステムエンジニア。
この職業の違いを理解しておかないとどっち付かずの人間になっていて大人になってから苦労するだけでなく、お互いにリスペクト出来ない器の狭いの人間になりかねません。
この2つの職業は全く別物なんですけど、結構曖昧な感じですよね。
これ違いを聞かれて答えられない・・・どころじゃなく、自分が何者なのかわからないなんて恥ずかしい思いをする前に、しっかりと違いを理解しておきましょう!
PGとSEの違いは何なのか?

プログラマーもシステムエンジニアもどちらもIT業界だし同じでしょ?
IT業界外にいるとPGとSEの違いってなかなかわからないと思います。別名の様な感じでやっている事は開発でしょ?と思っている方も多いのではないでしょうか?
結論から言うとPGとSEは別の職業です。
これからIT業界にチャレンジしようとしている人、IT業界に入りたての方もわかっていない人が多いのではないでしょうか?自分の働く業界のことです。知っておいて損はありません。むしろ知っておかないと損をします。
別の職業と言う事は求めらる事も異なりますし、当然のことながらスキルも異なります。
しっかりと違いを知ることによって、自分の目指すべき道を決めましょう!
担当する工程が異なる
大雑把に言うとSEとPGは担当する工程が違います。
要件定義(SE)
↓
機能設計(SE)
↓
システム詳細設計(PG)
↓
コーティング(PG)
↓
単体テスト(PG)
↓
結合テスト(PG)
↓
総合テスト(SE)
↓
受入テスト(SE)
こんな感じです。どこに境界線が引かれているのか?よくあるV字型のモデルに置き換えてみるとわかりやすいかと思います。
この様に「ユーザーが満足するシステムにする」、「機能設計通りに問題なくシステムにする」と言う明確な責任の違いがあります。
まず、この様な役割分担がされていると言うのを理解しておく必要があります。
プログラマー
プログラマーの主な仕事はその名の通り「プログラミング」になります。機能設計通りプログラムを作り問題なく動作させる事が主務です。仕様通りに実現するために高度な技術を駆使したり、全体の生産性を上げたりが主な役割です。
開発チーム内部で活躍する事が多い職業と言えます。
システムエンジニア
システムエンジニアの主な仕事は「ユーザーが満足するシステムにする」事にあります。ユーザーの要件を正確に理解し、どの様なシステムにしたら良いかを考える事が主務です。プロジェクト全体をコントールしたり、ユーザーの業務を分析し業務全体の改善策を提案したりする事もします。
主にユーザーサイドからシステムを見る事が多い職業と言えます。
「エンジニア」の有無が余計ややこしくさせている
エンジニア 英語で書くと Engineerです。
なんとも五七五で語呂が良いんですけどね。
はてさて、このエンジニアとはなんと言う意味なんでしょうか?
Google先生に聞いた所、「技術者」と教えてくれました。
プログラマーだって技術者じゃん
そういう意見が聞こえてきます。
このエンジニアって言葉がシステムエンジニアには付いて、プログラマーには付いていない。
このどっちも技術者なのに片方にだけ「技術者」って言葉付いているのが、意味を曖昧にしてわかりにくくしている元凶な気がしてなりません。
プログラマーとシステムエンジニアの関係性の誤解
このエンジニアの言葉付くことで、プログラマーとシステムエンジニアの関係性に誤解が生じてしまっている事が多く見受けられます。
エンジニアが付く事でシステムエンジニアが上級職っぽくなっている
プログラマーで経験を積むことで「エンジニア」の称号が得られ、システムエンジニアへとクラスチェンジが出来る。
そんな風に考えている人が実際に業界内にも多く見受けられます。業界内でも多いんですから、そりゃ業界外から見たらカオスですよね。
実際は違います。
PGとSEは別物です。
PGとSEの言葉から違いを知る
プログラマーとシステムエンジニアの違いについて言葉から考えてみるとわかりやすいかもしれません。
え?さっきエンジニアが付くから誤解してるって言ってたのに?
たしかにそうです。でも、それは正しく理解していないから誤解しているんですね。。
正しく理解すると違いが見えてきます。
わざわざ「技術者」と名乗るシステムエンジニア(SE)
システムエンジニアはその名の通り、(IT)システムのエンジニア。ITシステムの技術者です。
はい、ここで質問です。
なぜエンジニアと付ける必要があるんでしょうか!?
わざわざですよ?
わざわざエンジニアなんて付けてるんですよ。この人達は。
そうなんです。ここがポイントなんです。
IT業界外の人が思う技術者はプログラマー説
IT業界外の人が考える技術者とはどんな人でしょうか?
誤解を恐れずに言いますよ。
ゴリゴリとプログラムを書いて人間と会話するよりもコンピューター相手に会話する方が得意な人。
ずばりこのイメージに近いんじゃないでしょうか?
システムエンジニア
しかし、実際にITエンジニアの仕事はこれだけではありません。
顧客の求めるものの内、顧客が見える部分を練り上げて行くことが求められます。
顧客の話をしっかりと聴いて理解して形にしていく役割です。
その役割を担うのが「システムエンジニア」な訳です。
しかし、一般からはエンジニアっぽい感じでは見られません。
だから技術者として認識させるためにあえてエンジニアと付けている。
こう考えるとしっくりきます。
そうなんです。
技術者っぽくなくて社交的に人と話して仕様を作る
これがシステムエンジニアなんです。
エンジニアが付いているのは仕事のが内容がIT技術者っぽくなくてわかりにくいからあえて付けているんです。
プログラマー(PG)
プログラマーの言葉の由来って考えたことありますか?
当たり前過ぎてみんな振り返る事をあまりした事ないんじゃないですか?
プログラマーの言葉の由来です。
これは当然、Program+erのProgrammerですよね。
要するにプログラムをする人。となります。
プログラムをする人。
仕様を実現する為にコンピューターを動作させるのが役割です。
PGとSEで求められていることが全然違う
仕様の検討がSE、実装がPG
お客の言うことを汲み取るのがSE、仕様書に書かれている内容を汲み取るのがPG
お客の頭にある朧げな事を仕様書として見える化するのがSEの仕事。
言ってくれればなんでも言った通りに作ってやるよ!と言うのがPGの仕事。
当然、出来る出来ないで、仕様の調整を行う工程がSEとPGの間で必要になります。
この工程を簡略化する為に、SEがPGを経験しておくと有利なのは事実です。実現できない仕様にしないですからね。
SEは人とシステムを繋ぐ部分、システムと人の境界を作る役割です。
PGは中身をいかにバグが無く、早く効率的に作り上げるかが求められる訳です。
段々と見えてきましたか?
SEとPGの違い。
SEは利用者の観点でシステムを見ます。それこそが求められる能力そのものです。
PGは極論を言うと利用者の観点は不要になります。あくまでも仕様書をどう実現するのか?バグがなく品質のよいプログラムをいかに早く作る手法を探求するのが能力です。
全然別物ですよね。
まったくPGの延長線上がSEがなんて事はないんです。
もちろんキャリアパスも変わってきます。そちらについてはコッチの記事で書いています。

まとめ
極端な話、プロラマーが純粋に腕だけで食べていくのは相当厳しい。正直、実際にその価値を提供出来ているプログラマーは一握りしかいないと思います。その他は収入分の価値は提供出来ているかと言うと疑問です。人材不足でプログラマーそのものに価値があるだけで技術的な部分の評価が圧倒的でしょう。
こういった中で、自分がIT技術者としてどの立ち位置にいるのかはしっかりと把握しておく必要があります。自分の強み、土俵で勝負する上でもですね。
コメント