組み込みエンジニアってきついんでしょ?
ハードもソフトも知識いるじゃん。
興味はあるけど難しいなぁ。
こうしたネットの声に対して意見を述べたいと思います。
なぜネットでは組み込みエンジニアがきついと言われるのでしょうか?
それには2つの理由があると思っていて、1つは自分の能力不足、もう1つは開発スケジュールの短さです。
この動画では自分の能力不足から来るきつさについて話したいと思います。
きつい状態からの乗り越え方

組み込み開発に求められるものをこちらの図に示しました。
開発では大きく分けてハードウェアとソフトウェアの知識を求められます。
初心者はそのどちらもわかりません。
だから最初が一番きついです。
乗り越えるには一体どうすればいいのでしょうか?
その答えは、とにかく手を動かして自分の中で腹落ちさせることです。
まずは簡単に動くキットを手に入れてサンプルコードを動かすという体験を積み重ねましょう。
例えばメーカーに入っていれば既存製品があるのでそれをいじくればいいですし、
個人で始める場合は電子部品やサンプルコードが付いた出来合いのキットを買って始めるのがいいです。
そしてこの時のポイントとしては、とにかく小さく始めるということです。
初心者はいきなり大きなものを作りたいと考えがちなんですけれども、それらは小さなプログラムの集合体です。
小さなプログラムを着実に理解してつなぎ合わせることによって、大きなプログラムは出来上がっています。
実際に手を動かすとわかりますが、小さなプログラムでさえも一発で動作原理や仕組みを理解するのは難しいです。
サンプルをなぞって何とか動かすことはできるようになります。
ただ、この時、理解ができないまま、次のサンプルをまたなぞって動かすことになります。
そうするとだんだんと作業感が出て退屈な気持ちになってくるかもしれません。
それでも繰り返し続けることが大事なんです。
実際、私も電気知識は知らないし、プログラミングもやったことない状態で新卒で入った会社で突然組込みエンジニアになったので、
最初は本当に意味不明すぎてストレスによる高熱で何ヶ月もうなされました。
けどこれはしょうがないんです。
分からないものは本当に分からないから、他の人はできているのに自分にできないわけがないと思って、
できるようになるまで食らいついてやろうと、当時は必死でした。
エンジニアには相手がわかってないと思ったらテキトーに説明して流す人が多いです。
そんな態度を自分も取られているのがわかったし、その時の自分の無力さにとても悔しい思いをしたのを今でも思い出します。
きついを乗り越えた先に何があるか
すみません、話が脱線してしまいました。
つまり何が言いたかったかというと、諦めるな、ということです。
けどそんなこと言ったって難しいものは難しいって思いますよね。
確かにそうなんですけど、諦めずに何度も何度も繰り返しやっていると、
ある時突然すべてが繋がる瞬間があるんですね。
いわゆるブレイクスルーっていうやつです。
一旦わかり始めるようになると技術レベルは急激に上がり始めます。
これはもう明らかに自分でも感覚としてわかると思います。
今までサンプルを見て呪文のように書いていたソースコードの意味が、
はっきりと理解できるようになるし、自分でそのサンプルのソースコードを改造したりもできるようになってきます。
もちろん途中でつまづくこともあるんですけども、その解決方法を探るのも楽しいし、
その過程において自分の理解がより深まってくるというのもこの段階です。
組込み開発を始める時に作りたいと思っていた大きなものも、
どうやったら実現できるかということが考えられるようになってきますし、
自分の身の回りのものはどうやって作られているんだろうかということも、だんだんとわかってくるようになります。
組み込み製品というのは現実のものとして動くので、自分が何か作ろうと思った時に参考になるものもたくさんあるのがいいです。
そしてそれをどうやって実現すればいいかも分かるような状態にだんだんと近づいてきます。
組み込みエンジニアは他の業界のエンジニアに比べると、
ベテランになればなるほど重宝されやすいという傾向にあります。
これはなんでかというと、今まで話してきたことでわかると思いますけれども、
長くやるほど組み込み開発の経験と勘が蓄積されていくからなんですね。
何かを作りたい、何かがうまく動かない、そういった状況になった時に、
ベテランになればなるほどスマートに解決できるということがあります。
誰かに頼りたいときどうすればいい
すみません、また私の話をしますけど、開発するのがきついなと思った時に、
誰か助けてくれる人が欲しいなって感じる時があると思うんですよ。
以前は先輩のエンジニアとかインターネットで答えを求めるしかなかったんですけども、
今はAIが発達しているのでそちらに聞いて解決を図る方がいいかなと思います。
なぜかというと、自分のわからないことを先輩とかに聞いて確かにその答えはもらえますが、
その答えを聞いたところで自分がもともと理解できてないもんだから納得することができないんですね。
その点AIだったら何回でも同じことを聞くことができますし、そのわからなかった部分だけに絞って深掘りして聞いていくこともできます。
AIは情報が確実かどうかがわからないという難点はありますが、数をこなしていくんだとすれば、
AIを頼った方が習得は早いと思います。
何度もやっていく中でどんどん自分の軌道修正をしていく感じです。
きつい組み込みやらずともウェブ系やればよくない?
ところで組み込みなんてわざわざ苦労するものをやらなくたって、
ウェブ系の言語をやった方がいいんじゃないの?って思う人もいるかもしれません。
確かにウェブ系の言語の場合、少しコードを書くだけですぐ画面上で何かを動かすという体験ができます。
組み込みと違ってハードウェアも必要ありません。
小さな成功体験を積み重ねやすく、自分の中で納得感を得られやすいので続けることが簡単です。
私はJavaScriptやVueなどのフロントエンドの言語であったり、Kotlinを使ってAndroidスマートフォンのアプリ開発をすることもできます。
いずれもフリーランスで働くには十分な数の案件があります。
それでも私は組み込みを主力の技術として選んでいくつもりです。
なぜかというと、ウェブ系の言語は総じて言語自体のバージョンの進化が早く、
常にキャッチアップしていかないと言語仕様の変化に追いついていけないという欠点があります。
一方の組み込み開発で使うのはCかC++のいずれかがほとんどになるでしょう。
50年近い長い歴史の中で使われ続けてきた言語であり、プログラムの実行速度が他の言語に比べて圧倒的に速かったり、
レジスタ単位の制御に向いていることから、まずCやC++は淘汰されることがないと考えています。
一旦習得してこんなに安心感を得られる言語は他にありません。
今IoTやAIが普及する中で組み込みエンジニアの需要はますます上がっているのに、
慢性的な人手不足に業界全体が苦しんでいます。
組み込みの勉強をするのは確かにきついです。
ただその見返りは十分にあると私は確信しています。
ぜひ皆さんが組み込みに少しでも興味を持ってやってみたいと思ってもらえたら嬉しいと思います。
コメント