記事を読むメリット
- プログラマーとエンジニアの違いが分かる
- プログラマーとエンジニアの違いを人に説明できるようになる
プログラマーとエンジニアって何が違うの?
プログラマーとエンジニアってどっちがすごい?年収とかの違いってどんな感じ?
プログラマーとエンジニアってどっちの方が将来性がある?
このような方に向けて今回はア〇〇ビールの現役Webエンジニアである僕が、プログラマーとエンジニアの違いを解説します。
結論- 建築で例えると、エンジニアは設計図を書いたりする「建築士さん」で、プログラマーは設計図通りに組み立てる「大工さん」
- エンジニアの方が1.25倍ぐらい年収が高い
- プログラマーはAIに奪われる可能性が高く、エンジニアの方が将来性がある
- 未経験で目指すならプログラマーがおすすめ
- プログラマーとエンジニアの違いとは:建築で例えると「大工」と「建築士」
- プログラマーとエンジニアの具体的な仕事内容
- エンジニアの方が1.25倍ぐらい年収が高い
- エンジニアの方が将来性が高い【生成AIの登場】
- プログラマーの方が未経験でも目指しやすい【半年〜1年でなれる】
- プログラマーとエンジニアの向き不向き
- まとめ:似ているようで明確な役割分担がある
プログラマーとエンジニアの違いとは:建築で例えると「大工」と「建築士」
プログラマーとエンジニアの違いを分かりやすく例えると「大工さん」と「建築士さん」です。
- プログラマー:設計図通りに組み立てる大工さん
- エンジニア:お客さんの要望を聞いて設計図を書く建築士さん
- 大工さんがやること:釘やトンカチを使って組み立てる・外壁の塗装など
- 大工さんがやらないこと:設計図を書くこと・お客さんとの打ち合わせなど
- 建築士さんがやること:お客さんが作りたい家の要望を聞く・図面を書くなど
- 建築士さんがやらないこと:釘やトンカチを使った作業・実際の現場作業など
具体的な仕事内容は後述しますが、
プログラマーが指示書に沿ってゴリゴリとプログラミングコードを書く人で、
エンジニアがお客さんと打ち合わせて要件定義をしたりプロジェクト全体の管理をする人です。
作業によってはプログラマーが実際にコードを書いてて
「あれ?この設計図だとちょっと作りづらいから、こういう風に設計図書き換えてくれない?」
とエンジニアに戻す場合もありますし、
逆にプログラマーの人手が足りてない場合は、エンジニアがプログラミングをする場合もあります。
「エンジニア」という言葉は日本語で「専門技術者」と言います。
なので、世間一般的なイメージは、
「パソコン画面に向かってなんか複雑そうなプログラミングコードをカタカタ打ち込んでる人=全員エンジニア」
みたいな感じで、IT業界以外の人からするとプログラマーとエンジニアの違いはそんなに区別されていません。
プログラマーとエンジニアの具体的な仕事内容
プログラマーとエンジニアの仕事内容は以下の感じです。
難しく正確に言うとこんな感じです- プログラマーの仕事内容…「開発」「単体テスト」「結合テスト」
- エンジニアの仕事内容…「要件定義」「基本設計」「詳細設計」
【開発】とは、ゴリゴリとプログラミングコードを書いてプログラムを作り上げることを言います。
【単体テスト】とは、作り上げたプログラムがとりあえず単体で問題なく動作するかテストすることを言います。
【結合テスト】とは、単体テストに合格した複数のプログラム同士を組み合わせるテストのことを言います。規模の小さいプロジェクトではこの作業が無い場合もあります。
【要件定義】とは、難しく聞こえるかもしれませんが、単純にお客さんの要望をヒアリングして「今回のプロジェクトで解決したい目的」を定義することを言います。プロジェクトの根本となる部分なので、規模の大きなプロジェクトになればなるほど非常に重要な工程です。
【基本設計】とは、「どんな機能を開発すれば要件定義で掲げた目的が達成できるのか」を設計することを言います。
【詳細設計】とは、「どんなプログラムを作れば基本設計に必要な機能が開発できるのか」を設計することを言います。プログラマーにどんな感じでプログラミングして欲しいかを指示する「仕様書」を作成するのもこの工程です。
- プログラマーがやること:ひたすらプログラミング・プログラムの動作テスト
- プログラマーがやらないこと:お客さんと打ち合わせ・プロジェクトの進行管理
- エンジニアがやること:打ち合わせ・要件定義・仕様書の作成・プロジェクトの全体管理
- エンジニアがやらないこと:プログラミング
ちなみに、作るモノが小さかったりプロジェクトの規模が小さいと、プログラマーがエンジニアを兼任することもあります。
例えるなら、犬小屋を作る場合にわざわざ大工さんと建築士さんで作業を分けないのと同じ感じです。
犬小屋1つぐらいなら、大工さんが1人で直接お客さんと打ち合わせ・設計図の制作・実際の作業をした方が早く作れます。
エンジニアの方が1.25倍ぐらい年収が高い
プログラマーとエンジニアの年収の違いは以下の感じです。
エンジニアの方が1.25倍ぐらい高いです。
※出典元:令和元年分民間給与実態統計調査 統計表&求人ボックス
僕もプログラマー経験があるので分かりますが、
ぶっちゃけ、プログラマーは指示書通りに作業さえできれば仕事として成立します。
(もちろん最低限の打ち合わせをしたり、それなりに大変なことは色々あります)
ですが、エンジニアは得意先の急な要望に対応したり、それに伴って仕様書を書き換えたり、
プロジェクトの全体を見通した臨機応変な対応が求められるため、エンジニアの方が年収が高めです。
また、エンジニアの求人の応募条件として、
「必須スキル:〇〇という言語を用いた開発実務経験が2〜3年以上」
と提示されている場合が多いため、
「エンジニア=プログラマーのキャリアアップ先」という認識が一般的です。
◆関連記事:プログラマーなのに年収が低いのはなぜ?【結論:指示をする側になればいい】
エンジニアの方が将来性が高い【生成AIの登場】
プログラマーよりもエンジニアの方が将来性が高いです。
理由は以下の感じです。
- 生成AIの登場によってプログラミングが一部自動化されつつあるから
- 仕様書通りに作業するだけなら人間よりもAIがやった方が速いし正確だから
生成AIとは、学習済みのデータを元にして新しいデータを作ることができるAIのことです。
最も有名な生成AIの1つであるChatGPTに「テトリスを作って」と言えば、
ものの数秒でテトリスが動くプログラミングコードを書いてくれます。
まだまだ精度は荒いですが、学習を重ねていけばどんどんクオリティが上がるので、プログラマーの仕事は近い将来AIに奪われます。
一方、エンジニアの仕事は「お客さんとの打ち合わせ」「仕様書の作成」「プロジェクトの進行管理」など、柔軟な対応が求められるのでAIによって代替されにくく、
「あなたにしかできない」というところまで登り詰めれば、代わりの人材も見つかりづらい仕事です。
IT市場そのものが伸びているので、プログラマーもエンジニアもどちらも将来性の高い職業ですが、
JavaScriptとかPHPとかを仕様書通りに書くだけのプログラマーはそのうち消えます。
◆関連記事:プログラミングはオワコン?結論:あと15年ぐらいでAIに奪われる
プログラマーの方が未経験でも目指しやすい【半年~1年でなれる】
結論として、未経験で目指すならプログラマーの方がおすすめです。
理由はなんとなく感覚で分かると思いますが、以下の感じです。
- プログラミングの基礎ができてないと設計はできないから
- プログラマー → エンジニアというキャリアアップが一般的だから
- プログラマーの方が未経験OKの求人が多いから
- プログラマーなら未経験でも半年~1年ぐらいでなれるから
特に「基礎ができてないと設計はできないから」という理由は、建築で例えても同じです。
大工さんを経験したことのある建築士さんの方が、
「この釘は材質的にこの角度から打ち込んだ方がいい」
「この木材はこう組み合わせた方が朽ちにくくなる」
といったノウハウが溜まっているので、いい設計図を書けます。
→「ありえない設計をする建築士の爆誕」です。
◯ケットモンスターアドバンスジェネレーションです。
「自分は割とリーダーシップがあるし、人に指示を出すのも得意な方だ!お客さんと打ち合わせしたりするのも得意だぜ!プログラミング??あんま詳しくないけどどうにかなるっしょ!」
といった理由で、プログラミング知識ゼロでいきなりエンジニアになると、苦労します。
プログラミングをやったことがないとプログラマーの気持ちが分からないので、
めちゃくちゃな仕様書を作って現場のプログラマーからキレられたりします。
未経験OKのエンジニアの求人もたまにあるので、
プログラミング未経験でもエンジニアになれないことはないですが、
プログラマーを数年経験してからエンジニアにキャリアアップするのが一般的です。
プログラマーとエンジニアの向き不向き
プログラマーとエンジニアに向いている人・向いてない人の特徴は以下の感じです。
プログラマーに向いている人- コツコツした作業が得意な人
- 1人でじっくり考えて自分のペースで仕事するのが好きな人
- ググるのが得意な人※1
※1…プログラマーに一番必要な力は「分からないことをググって解決する自己解決力」です。プログラミングに関して分からないことは大体ググれば解決します。
プログラマーに向いていない人- 細かいことを気にしない人
- ズルができない人※2
- 苦労するのが美徳だと思ってる人※3
※2…例えばテストでカンニングをするのはズルですが、プログラミングに「ズル」は存在しません。分からないことがあったらググってカンニングすればOKです。めんどくさい作業があったらツールを入れて自動化すればOKです。「ズルせず頑張って微妙なプログラムを作る」よりも「ズルしてもいいから良いプログラムを作る」ことの方が大事です。
※3…※2と若干被りますが、プログラミングという仕事は「めんどくさいことや苦労していることを楽にするための仕事」です。「苦労するのが美徳だ!」みたいな考え方が根付いている人は現状を楽にするための発想が生まれず、便利なプログラムを開発するアイデアが出づらいです。
- コミュニケーション力がある人
- 大きな視点で物事を考えられる(プロジェクト全体を見渡せる)人
- 臨機応変な対応ができる人
- 受け身な人
- 勉強したくない人
- 思い込みが激しい(人の意見を聞かない)人
- ITが好きじゃない人※5
※5…当たり前の話ですが、ITが好きじゃないとIT業界で仕事し続けるのは難しいです。僕の周りで5~6年以上IT業界にいる人は、個人差はあれどみんなITが好きな人です。「稼げるから好き」「リモートワークができるから好き」という理由でもOKです。「情熱」がないと乗り越えられない壁がたまにあります。
ここまで書いておいてなんなんですが、僕の個人的な意見としては、
プログラミングは「スキル」なので、向き不向きはあんまりないと思っています。
運転免許も「スキル」の1つですが、運転免許に向き不向きが無いのと同じ感じです。
正しい方法で正しく学習を続ければ、全員取得できるのが「スキル」というものです。
(たまに直ちに免許返納して欲しいレベルで壊滅的に運転が下手な人もいますが、そういう一部の例は除きます。)
まとめ:似ているようで明確な役割分担がある
記事のまとめ- プログラマーとエンジニアの違いを建築で例えると「大工さん」と「建築士さん」
- プログラマー:設計図通りに組み立てる大工さん
- エンジニア:お客さんの要望を聞いて設計図を書く建築士さん
- プログラマーの仕事内容…「開発」「単体テスト」「結合テスト」
- エンジニアの仕事内容…「要件定義」「基本設計」「詳細設計」
- エンジニアの方が1.25倍ぐらい年収が高い
- エンジニアの方が将来性が高い
- プログラマーの方が未経験でも目指しやすい
- プログラマーとエンジニアの向き不向きはこんな感じ
世間一般的には、
「IT業界でパソコンで仕事してる人=全員エンジニア」
みたいなイメージがありますが、厳密には色々違いがあります。
まず未経験で目指すならプログラマーの方がなりやすいので、
「未経験だけどIT業界に参入して年収上げていきたい!」という人は
①プログラミングを半年〜1年ぐらい学ぶ
②プログラマーになる
③プログラマーとして2〜3年ぐらい実務経験を積む
④エンジニアになる
という順番がおすすめです。
IT業界はフリーランスも多く、自由な働き方をしやすい業界なので、目指してみるのもアリです。
今回は以上です。
関連記事