このページでは、「プログラマー」と「システムエンジニア」の違いをIT初心者向けに分かりやすく解説します。
IT業界に全く関わりのない方でも理解できるように「要件定義」とか「仕様書作成」などのIT用語は使わずに、システムを「家」に例えて解説していきます。
システムエンジニア
⇒ 建築士:家の設計を行うことが主な役割
プログラマー
⇒ 大工 :設計書にしたがって実際に家を作るのが主な役割
加えて「ITコンサルタントってどういう職業?」という疑問にもお答えします。
IT用語がわからない人でも理解できるよう平易な言葉で解説していきますので、是非最後までご覧ください。
システムエンジニアとは?
システムエンジニアの主な役割は「設計」です。
システムエンジニアは「建築士」に例えることができます。建築士が決めるのは「間取りをどうするか?」「見た目は何色にするか?」「材料は何を使うか?」といった基礎的な内容です。
これと同じで、システム構築時にシステムエンジニアが決めるのは「どのような機能にするか?」「どのような画面にするか?」といったユーザに直接影響が出てくる内容が中心。
もし、システムエンジニアが設計をミスれば、その設計書に従って作業するプログラマーの作業も無駄になってしまいます。
プログラマー(PG)とは?
対して、プログラマーは「大工」です。
つまり、システムエンジニアが作った設計書を基にプログラミングをしていく人です。
ただし、こう説明すると「なんだよ、プログラマーってただの作業者じゃないか。。。」という方がいらっしゃいますが、それは完全な誤りです。
例えば、同じ設計書でも大工さんによって出来栄えが完全に異なることがあります。これは、大工の世界に職人技が存在するためです。
「釘はこう打つと良い!」とか、「この木材は、この角度で切らないと脆くなってしまう。」とか。一般の我々からは想像もつかない深い世界が存在するように、プログラマーの世界にもそれがあります。
「BよりAのロジックで構築したほうがパフォーマンスが良い!」とか、「こうしたほうがエラーが発生しづらい!」とか。
こう考えると、プログラマーのスキルはシステム構築において非常に重要なファクターであると言えます。
厳密に言えば、プログラマーもいきなりコーディングするわけではありません。システムエンジニアが作った設計書を基に「プログラムの詳細を整理する」詳細設計を行います。
基本設計と詳細設計。微妙に聞きなれない用語ですが、システムエンジニアとプログラマーの違いをより深く理解できるようになると思います。詳細は以下の記事をご覧ください。
プログラマーとシステムエンジニア(SE) どちらがおすすめ?
プログラマーとシステムエンジニア、結局どちらがおすすめの職業なのでしょうか?なんとなく、システムエンジニアの方が給料もよさそうだな・・・と考える人。プログラマーの方が技術が身に付きそう!と考える人。
結論「最初はプログラマー!」です。
いきなりシステムエンジニアとして就職・転職するのは(あまり)おすすめできません。
その理由を3点、解説します。
理由①システム設計にプログラミングスキルは必須!
IT業界未経験(特にプログラミング未経験)で、システムエンジニアになるとどうなってしまうか?
結論、「ありえない設計をしてしまう建築士の誕生」です。
システムエンジニアは、機能の概要・システムの大きな方向性を決めることが主な役割ですが、設計を行う段階である程度の実現可能性(英:Feasibility)を予見する必要があります。
つまり、「この機能は実現可能なのか?(コーディング可能?)」ということを事前に整理・検討した上で設計しないと、コーディング不可(作れない)の機能設計になってしまいます。
建築士さんが「土地は6畳で、間取りは3LDKにしよう。」なんていう訳の分からない設計書を作ってきたら、大工さんはどうしようもありませんよね。したがって、システムエンジニアはプログラミングの知識が(ある程度)ないと務まりません。
理由②設計段階で決めなければいけないことが分かるようになる
実は、プログラマー(大工)とシステムエンジニア(建築士)って結構対立します。
その理由で一番多いのが、システムエンジニアが決めるべき内容を決めていないということです。
システムエンジニアの設計
- お風呂とトイレは別にする
- キッチンはアイランドキッチンにする
- 水回りは家の北側にする
プログラマーの疑問点
- どんなお風呂にすればよいのか・・・
- どこにキッチンを置けばいいの?
- 北側って、めっちゃ曖昧・・・(勝手に決めちゃうよ?)
プログラマー出身のシステムエンジニアであれば、ここまで決めてあげればOK!というのが分かっている設計ができるようになります。
例えば「キッチンは、縦2m/横5mで壁から1m離して設置してね。色と形は、よしなに決めてね!」みたいな感じであれば、プログラマーの作業が明確になりますよね。
いきなり、システムエンジニアになってしまうとそもそも何を決めたらよ良いのか?みたいな壁にぶち当たる人が多いです。
理由③「イケてる」システムが何かわかるようになる
最後、これが一番重要なのですが、プログラマーとして仕事を進めていくにつれて「どんなシステムがイケてるのか」が分かるようになってきます。
例えば、「AをBにしていたらもっとバグは少なかったのに」とか、「AじゃなくてBにしてしまっていたら、大変だった」とか。
大工さんに例えれば、設計書にしたがって家を作っていく中で「この木材じゃなくてこっちにした方が頑丈になるのにな」とか、「なるほど、ここに柱を立てるのはそういう意味があったのか!」みたいな感じです。
どんなシステムがイケてるのか?―。これを、自分で考えられるようになると、おのずと「自分で設計してみたい!」という思いが強くなっていきます。「自分ならこうする。こうしたほうが、イケてるシステムになる。」
このレベルに達することができれば、「できるエンジニア」の誕生です。
【補足】システムエンジニアとコンサルタントの違い
ちなみに、最近よく聞くITコンサルタントって何をする人なんでしょう?
プログラマーとは違いそうだし、、、システムエンジニアともやってることはかっこよさそう・・・
皆さんそれぞれでITコンサルタントへのイメージをお持ちかと思いますが、結論ITコンサルタントは、ざっくりですが「システムエンジニアよりさらに大きな方向性を決める人」と言えます。
ITコンサルタント
⇒ 診断士:家の形態を決める「マンションにしますか?一戸建てにしますか?」
システムエンジニア
⇒ 建築士:家の設計を行うことが主な役割
プログラマー
⇒ 大工 :設計書にしたがって実際に家を作るのが主な役割
ITコンサルタントは、システムエンジニアより上流の内容を決めることが多いようです。(例外はもちろんあります。)
つまり、導入するシステムをスクラッチ開発するのか?それとも、パッケージを導入するのか?費用対効果を踏まえて提案したりします。
では「戦略コンサルタント」は?
戦略コンサルタントになると、「そもそも家を建てる必要ってあるんでしたっけ?」的な超・上流の検討/提案がメインになってきます。
「建てるのではなく、借りるというのはどうか?」「シェアハウスはどうか?」
戦略コンサルタントになると、ITありきの世界ではなくなって(家を建てる前提ではなくなる)きます。前提を疑って、より最適な方向へとクライアントを導くことが使命となるため、その点でITコンサルタントとは役割が異なります。
プログラマーを目指したくなったら
プログラミングの知識をつけて、プログラマーになりたい!
そんな方には、無料体験/オンライン完結もあるプログラミングスクールで学ぶのがベストです。都度検索しながら知識を補完していくのではなく、1から体系立てて学ぶことで短時間・かつ効率的にスキルハックすることが可能です。
各プログラミングスクールの特徴をまとめた記事をこちらに記載しておきますので、是非ご覧ください。