こんにちは。たかです。
今回はプログラマーとエンジニアの違いについて記載します。
「プログラマーとエンジニアって何か違うの?」と思う方も多いと思うので、実際に働いてる中で感じる両者の違いや求められる能力の違いについて、筆者自身の実体験や感想も含めて解説していきます。
役割の違い
・プログラマー
プログラマーに求められる役割は『プログラミング(ものづくり)』です。
プログラマーがやることはプログラミングです。
みなさんがプログラマーやエンジニアを思い浮かべた際、プログラミングを行い何か動くものを作る、というイメージを抱くと思いますが、まさにそれがプログラマーの役割です。
・エンジニア
エンジニアに求められる役割は『システムを作り、世に出すこと』です。
意外かもしれませんが、エンジニアの中にはプログラムを書けない人もいます(もちろん程度にはよりますが、基本的にはプログラムを書ける人が多いです)。
プログラムを書かないのにエンジニアは何をするかというと、プログラムを世に出すまでの全体工程を管理監督し、世に出すまでの責任を負うというのがエンジニアの役割です。
具体的なステップとしては、要望に応じてシステムの要件を決め、スケジュール立てをして開発の進捗管理をし、適切な設計、テストを経てシステムをリリースする、というものになります。
求められる能力の違い
・プログラマー
プログラマーに求められる能力は『プログラミング技術、集中力』です。
プログラマーには必要最低限のプログラミング能力が求められ、その能力によって単価が変わってきます。
自分がどの言語を扱うか、どのようなジャンルのプログラミングを得意とするか(フロント or サーバなど)によっても受けられる仕事が変わってくるので、深く広く知識を習得し、勉強し続けることが必須の条件と言えます。
また、プログラムを書く際には必ず集中力が必要となってくるので、集中することが苦手な方は集中するトレーニングをすることをお勧めします。
筆者もプログラミングをする際、いつの間にか時間が過ぎててご飯を食べ損ねた、ということもよくありました(笑)。
集中力の部分については、プログラミングが好きになれば自然と身につくものだと思うのでまずは好きになることから始めると早いかもしれません。
・エンジニア
エンジニアに求められる能力は『コミュニケーション力、全体把握力』です。
システム要件を決めたり各作業を他の人に依頼したりする際には必ず人とのやり取りが発生するため、コミュニケーション力が必要です。
仮に人と話すことが苦手であったとしても、相手に分かりやすく物事を説明することができたり適切な粒度で依頼を行うことができるのであれば問題ないです。
また、スケジュールを管理したりシステムの全体像から何が必要かを判断する必要があるため、広義の意味での全体把握力が必要となります。
将来性の違い
・プログラマー
プログラマーのキャリアパスとして代表的なものを2つ挙げます。
エンジニア
プログラマーに最も多いキャリアパスがエンジニアになるルートです。
と言っても現場においてはエンジニアとプログラマーが明確に異なるわけではなく、ある程度システム開発の現場でコーディングをやった後は要件を決めたり設計する立場になっていくというものになります。一般的にシステム開発の現場でよく見られるキャリアパスなので王道のルートと言えると思います。
トッププログラマー
もっとプログラミングを極めたい!という人はトッププログラマーと呼ばれるいわゆる凄腕プログラマーへの道を選びます。
プログラマーの上位10%と呼ばれるトッププログラマーとなれば、プログラミング言語とだけ会話をして生きていくなんてことも可能です。
一般的にはトッププログラマーは後述するアーキテクトのようなアドバイザリーのポジションをしてる人が多いので、プログラミングだけをしているわけではなく、他者へのアドバイスも求められます。
トッププログラマーになるには向き不向きがはっきりと分かれるので、死ぬほどプログラミングが好きだったりいくらでもソースコードを読める人にとってはとてもいい道と言えるのではないでしょうか。
・エンジニア
エンジニアのキャリアパスとして代表的なものを3つ挙げます。
プロジェクトマネージャー
エンジニアに最も多いキャリアはマネジメントルートです。
チームリード、プロジェクトマネージャー等のチーム全体を管理するポジションになり、システム作成に対する全体監督を行うポジションです。
自分一人では作れない大きなシステムであっても、責任者として携わることができるようになり、エンジニアとしてのポジション、年収の両方がアップする王道の道と言えるでしょう。
ITコンサルタント
エンジニアとして培ってきた知識をもとに、クライアントの問題解決を行うITコンサルタントもよくあるキャリアの一つです。
ITエンジニアを務めていると時折無茶なシステム、なぜこうなっているのか?と思うような場面に出くわすことがあります。そのような場面において、もっと最初から関わりたかったという方はこのポジションが向いているかもしれません。
アーキテクト
エンジニアとプログラマーとしてどちらも高い能力を持っている方はアーキテクトというキャリアを選ぶと良いでしょう。
アーキテクトはシステムの提案段階から技術的な視点での実現可能性の検討を行い、開発工程全体に対する高度な業務・技術課題の解決に携わります。
前述したトッププログラマーでアーキテクトとなっている方も多いので、皆さんがよく現場で目にする「できる人」というのはこのアーキテクトのポジションの方が多いと思います。
以上で本記事は終了となります。
今後はエンジニア向けの記事も書いていきますのでそちらも読んでいただけると嬉しいです。
また次回の記事でお会いしましょう!