今の時代は手に職だよなー。
プログラミングできるようになってエンジニアに転職しようかな。
でも、フロントエンドとかバックエンドとか何になろうかなー。
エンジニアブロガーのプロコアラです。
エンジニアへの就職、転職の悩みに答えたいと思います。
10年間組み込みエンジニアとして働いており、副業ではWebサイトやWebサービスを作っています。
組み込みエンジニアとWebエンジニアの違いが分かってきました。
今回は、Webエンジニアと組み込みエンジニアの違いを紹介します。
Webエンジニアよりも組み込みエンジニアが性に合う人もいると思います。
組み込みエンジニアとWebエンジニアの違い
フロントエンジニア、バックエンドエンジニア、色々あるけれど何か忘れてはいませんか?
よく蚊帳の外になるのが組み込みエンジニア。
フロントエンド、バックエンドと呼ばれるのは全てWebエンジニアです。
Webエンジニアの他に、組み込みエンジニアと呼ばれる人たちがいます。
・Webエンジニア
・フロントエンドエンジニア
・バックエンドエンジニア(サーバーサイドエンジニア)
・組み込みエンジニア
・ハードエンジニア
・ソフトエンジニア(ファームエンジニア)
組み込みエンジニアはPCではない製品を作る
Webエンジニアはフロントエンドであればブラウザ上で動作するプログラム、バックエンドはサーバー上で動作するプログラムを開発するエンジニアのことを指します。
組み込みエンジニアは組み込み機器を開発するエンジニアのことを言います。組み込み機器とはPCのような汎用的な用途ではなく、家電のような特別な用途向けの機器のことを言います。
簡単に言えば、PC以外でCPUが組み込まれている製品を開発するエンジニアです。家電、自動車、ロボットなどの開発も組み込みエンジニアの開発対象です。
組み込みエンジニアの特徴
・色々な製品の開発に携われるチャンスがある
組み込みエンジニアはC言語、時にはアセンブリ言語を使用する
Web系のフロントエンジニアはマークアップ言語のHTML、CSSとJavaScriptを用います。
バックエンドであれば、PHP、Ruby、Python、Node.jsなどが主に使用されます。
組み込みエンジニアはC言語を使用します。
「え?まだC言語とか使っているの?」と驚かれるかもしれませんが、そうなんです。
組み込み業界ではC言語、C++言語がいまだに使われています。これは組み込み機器には制約があるからです。
メモリが潤沢に使用できない、CPUの速度が遅いなどの制約があるため、C言語が使われるのです。
また、安全という意味で最新言語ではなく枯れた技術であるC言語を使っている所もあります。
宇宙、航空関連、プラントなどは特にこの特徴が顕著です。
時にはアセンブリ言語を用いてレジスタやメモリを直接操作することも行います。
組み込みエンジニアの特徴
・組み込みエンジニアはC言語だけを覚えれば他の言語を覚える必要は無い。
組み込み業界は技術の進歩が緩やか
Webエンジニアは、技術トレンドにキャッチアップしていくために週末も勉強している人が多いです。新しいプログラミング言語、フレームワークが登場するため、勉強が必須であり、勉強会なども参加しているエンジニアは多いです。新しい言語はスピードよりも簡単にコードがかけるかに重きを置いているため、新たなプログラミング言語が色々と出てきます。
組み込み業界はスピード、メモリ効率重視のC言語です。C言語を超えるものはおそらく出てこないため、技術の進歩が緩やかなのです。勉強会に参加している人は少ないです。勉強しなくても1つの技術だけあれば割と食っていくことができます。覚えないといけない時は主にCPUが新しくなる時です。しかしこれも基本的には既存のCPUの上位互換であるため機能が似ていることがほとんどです。
ここを面白く無いと捉えるか、楽だと捉えるかで組み込みエンジニアが向いているかが別れます。
僕はもっと色々なことがやりたいため、Web系の技術を勉強しています。
組み込みエンジニアの特徴
・技術の進歩が緩やかなため、最新技術にキャッチアップするために猛勉強は必要無い。
組み込みエンジニアはノマドのような自由な働き方は難しい
Webエンジニアの中には完全リモートの案件もありますが、組み込みエンジニアは難しいです。これは、お客様は家電メーカーや自動車メーカーなどの企業相手になるためです。またPCではなく特定用途の機器に組み込むという性質上、作成したプログラムが動作するか確認する際に実機が必要となります。
組み込みエンジニアの特徴
・組み込みエンジニアは、自宅リモートは難しい。
組み込みエンジニアはIoTにより将来需要が増加する
全ての機器がインターネットに繋がるIoTの世界になると、センサーやデバイスを制御する組み込みエンジニアのスキルが重宝されます。このことから組み込みエンジニアの需要は増すことが予想されています。
まとめ
組み込みエンジニアの特徴をまとめてみました。よく知られているWebエンジニアの他にも、組み込みエンジニアという働き方があることを知ってもらえれば嬉しいです。
組み込みが使用するC言語はWebで使用するプログラミング言語よりも難しいと言われています。また、ハードを意識したプログラミングを行う必要があるため、最初は覚えることが多くて難しく感じるかもしれませんが、Web業界とは違って技術の進歩は遅いので、1つ技術を習得すればずっと飯を食えることができます。
色々なプログラミング言語を使いたい人はWebエンジニアがオススメです。週末プログラミング言語を勉強するなんて真っ平御免だという方は、組み込みエンジニアになり、色々な製品を作ることができる環境に身を置いて好奇心を満たす方法をオススメします。