文系から組み込みエンジニアに転職できるのか? – 転職前後で役に立ったことや知識など

キャリア

文系卒でメーカーの営業をやっていた私は転職して、組み込み系のエンジニアになりました。エンジニアになってからは5年ほど経過しているのですが、その経験から分かったことを書きます。

この記事は、自分と同じように、ソフトウェアの業界の未経験者だったり、文系だったりする人で、組み込みエンジニアになることを検討している方に向けて書いています。あくまで自分の身の回りの経験から書いていますので、業界全体を説明出来ているとは限りませんが、こういう人もいるんだな、くらいの感覚で思って下さい。

ちなみに自分の経歴ですが、大学は文学部卒、新卒時はメーカーの営業職に就職したのですが、思う所あって5年ほどで転職。2016年からソフトウェアエンジニアになり、以来組み込みの受託開発やアンドロイドアプリ開発の仕事などをやっています。

何を準備するべきか?

未経験から組み込みエンジニアに転職するに辺り、何を準備するべきか色々と調べました。結果から言うと、以下の準備をしておいた事が後々役に立ちました。

転職活動で役に立ったこと

転職活動中は、まず自分のソフトウェア技術者としての潜在能力をアピールしなくてはなりません。ソフトウェア技術者としての直近の能力は高くないので、その知見の少なさを早期挽回出来るとアピールする必要があります。以下は私がアピールした事の例です。

  1. プログラミング: C言語は独学で習得済み、理解に問題はない
  2. 基本情報技術者試験: 勉強中で間もなく受験予定
  3. 英語力: 前職就職時点では大した英語力はなかったが、学習してTOEIC 〇〇点を取得した
  4. 情報系のスクールに通った(1ヶ月程度)

1はやる気さえあれば誰でも言えるようになる所だし、2についても本当は取得してしまっている方が理想なんだろうけど、転職活動中は忙しいし実際取得するには時間がかかるので「取得に向けて勉強中」というだけでもやる気はアピールできると思います(ただ勉強は面接対策とかでなく、役に立つので本当にしておいた方がいいです)

3は、私の場合前職が英語を使う仕事だったのでこのようなアピールにしましたが、英語以外でも前職で勉強して身につけた何かがあれば、その学習能力を次の仕事にも活かして早期挽回できると力強く断言したらいいと思います。

4については、費用も高額(15万円くらい)だったし、内容的には会社の未経験者研修の10-20%くらいの密度しかないものだったので、正直元が取れるほどの知識が得られたかと言うと微妙でした。やる気をアピールすることはできたと思いますが、なければ無いで行けたかもしれません。逆に言うと、会社の研修がしっかりしたところに行くと、給料をもらいながら5~10倍くらい効果的な教育を実務経験者から受けられるので、独学を長くやったり企業の高望みをするよりも、まず入れる所に入ってしまうというのが知識習得上効率的かもしれません(会社によりますが)。

エンジニアになってから役に立ったこと

実際エンジニアになってから勉強したことの方が多いのですが、以下の勉強は役に立ちました。

基本情報技術者試験

基本情報は資格を持っているからと言って転職や評価的に何かいいことがあるかというと微妙です。ただし、それを取得する過程で未経験者が幅広く情報分野の専門用語考え方を知ることができます。入門段階では、これが一番重要です。基本的な用語や考え方を知らないままでは、さらなる情報収集の効率が高まらないし、面接官の質問を理解できないかもしれません。

基本情報で問われるような用語や考え方一つ一つはググれば手に入る基本的な情報ばかりですが、基本情報の参考書は結構体系立てて解説してくれるものも多いので、知識習得には非常に効率が良いです。受験した結果仮に落ちてしまったとしても、勉強の時身についた専門用語や情報学的な考え方はエンジニアとして仕事をする中で必ず役に立つので、資格に挑戦して損は無いです。個人的には、同じ参考書を真面目に2週して勉強すれば、まあ落ちないと思います。

C言語

ソフトウェアエンジニアなので、当然プログラミングは出来たほうがいいです。というか、できないとつまらないと思います。時々、プログラミングはできなくてもSE業務ができる、と言っている人がいます。正しいです、プログラミングの知識がないままSEとして働いている人も、中にはいます。そういう人達は、スケジュール管理とか、見積原価表作成とか、そんな仕事をしています。管理業務です。

そういうのは、直接的に価値を作る仕事ではないのです。極端な話、管理業務の人がすごい優秀でもコストがせいぜい1-2割減くらいですが、コードを書く人がすごい優秀ならコスト半減はあり得ます。あと繰り返しますが、単純に管理業務はつまらないです。稀にコードは書けないけど折衝がすごい上手くて活躍しているような人はいますが、そういう人も大抵昔はコードを書いている事が多いです。

未経験でエンジニアになったのなら、積極的にコードを書く仕事を志望すべきです。それが実力をつける近道です。その為に、時には少々「できるふり」をする必要があるかもしれません。未経験者に商用のコードを書いてもらうというのは組織として勇気の必要なことです。ただ謙虚にしていると機会がなかなか回ってきません。自分にコードは書けるんだ、ということをアピールする必要があります。技術的な話に首を突っ込んで下さい。自分ならこう書くとか、少々分不相応なことを言ってもいいです。それが例え不正解だったとしても、しばらくすると「そんなに言うなら、お前書いてみろ」という雰囲気になります。

但し、準備していても実際コードを書いてみると最初は不具合を出してしまうものです。しかし不具合を出したところで、命までは取られません。不具合を指摘されるとかなり萎えますが(特に出荷後不具合…)、その時の悔しさは次の実力になります。恐れずに、沢山書いて下さい。

手を動かして成果物を作ってみる

ソフトウェア業界の何が素晴らしいかと言うと、パソコン1台で基本的には企業が準備している開発環境と同じような環境が、個人でも構築できることです。これにより、未経験者の参入障壁が大幅に低くなっています。

これが機械系のエンジニアであれば知識を実践で試すには旋盤とか金型とか切削工具とかが必要になりますし、化学エンジニアなら試薬とか実験器具とか色々と必要になるわけです。数十万円単位の資金がかかります。一方ソフトウェア業界では知識を実践する環境を低コストで手に入れられるという特徴があります。未経験者はこれをフル活用して学習するべきです。

但し、組み込み系は、ソフトウェア業界の中でもハードウェアを扱う仕事なので、Web系やPCソフト、モバイルアプリ等に比べると開発環境を作るのにコストがかかります。それでも最低数千円〜2,3万円程度の費用で環境を構築し、知識を実践することができます。

私は、組み込みに関しては、趣味時間で以下のような事をやってきました。楽しさと役立った度合いを表にします。私は★一つでも結構楽しかったです。

項目役立ち度合い楽しさ備考
C言語入門本★★★★★★★必要不可欠です。これがないと始まらない。
サンプルで電卓作ったり。
C言語ポインタ解説本★★★★独学なら入門本とセットでやっとくべき。この辺の本など。メモリの様子を図を書きながら進めたりすると理解は深まる。
ただ普通の人はあんまり楽しくないかもしれない。
Arduino工作入門本★★★★簡単なロボット等、電子機器を制御する、という感覚は身につく。電子工作の入門にはいいが、直接仕事に役に立つ知識が身につくかと言うと微妙(参考図書)
RaspberyPi活用★★★★★★★★★★自宅にサーバを立てるところから、仕事で使用されていたのと同じライブラリのコードを動かして見る、仕事で使っていた組み込みLinux
カーネルを自分でもビルドして焼いてみる、LEDを光らせる、Bluetoothモジュールと通信させる、PCとソケット通信してみる等。Linuxは色んな所で使われていて、組み込み/非組み込み問わずIT業界全体でその知識は非常に有用
ルネサス/ Armマイコン制御★★★★★★ルネサスやArmのマイコンを使用してLEDを光らせたり音を出したりする修行。独力だけだと中々キツい。マニュアルを読み解く力が身につく。テレビやエアコンを操作する赤外線リモコンを作ったり、下のスマートロック作成をしたりするのに応用した。未経験者研修ではこの会社のキットを使ってライントレースカーを作る研修があって楽しかった。H8版とArm版両方作って遊んでいた。
スマートロック作成★★★★★★★★マイコン、Bluetoothモジュール、モーター、磁力センサ、モータードライバ等の制御、3Dプリンタ、RaspberryPi活用、電子回路設計等、これまでに身につけた知識を総動員しつつ作った。仕事に直接生きるかというと微妙で★2つくらいだが、ソフトウェア・ハードウェアの制御の為に必死で汗をかくという姿勢が身につくので★1つプラス。やってる間は寝食を忘れるほど楽しい。
iTron入門★★★★★★組み込みでよく使われるRTOSのiTronの一種であるHOSのプログラミング入門本。この本が結構いい感じに分かる。仕事でもiTronはよく目にするし、APIは共通だったりする。API仕様の基本の考え方がよく分かる。ただこれを使って自分であまり色々作ったわけではない。H8なのにシリアル通信が簡単に上手くいくのでテンションが上がる。

何は優先度が低いか?

色々と準備して転職した一方で、これはあまり役に立たなかったな…というものもいくつかあります。世の中的には必要だという人もいるので、どちらが正解なのかはわかりませんが、私個人としての感覚で書いています。

数学・物理(特に転職時点)

プログラマーは文系でも結構やっている人がいるので、自分がプログラミングをやること自体はあまり心配はしていませんでした。実際、そこは学習すれば何とでもなります。

一方心配していたのは、組み込み=電子機器の制御を行う都合上、物理や数学の知識が必要になるのでは、という点でした。28歳で転職した私は、高校生の時以来物理や数学を使用していませんでした。もう一度勉強する必要もあるかな…と思って高校生が使っているような物理の教科書や、数学の参考書(チャート式)なんかを購入し、覚悟だけはしていました(解いて準備した、とは言いません…)。

しかし、入社して分かったことは、組み込みのプログラマーが数学や物理の知識を駆使して問題を解決することは滅多にないということです。ハードウェアの制御は仕様書に規定されたコマンドをソフトウェアから発行してやることで殆ど完結します。ハードウェアマニュアルやデータシートにはコマンドの取扱方や部品の特性が記されていますが、それらを理解出来れば充分に仕事が出来ます。

自動車関連では単位の変換等でたまに物理の式を使用しましたが、決まった式を使うだけなのでその場で覚えれば別にどうということもありませんでした。プログラマー、SEとして仕様通りにシステムを完成させるという点においては、数学や物理を使用することは殆ど無いと思います。周りにも数学が得意だという人はそんなにいない印象です。

ただし、メーカーである客先の要件定義プロセスに入り、客先と一緒にプロダクトの仕様を決めたり、よりレベルの高いソリューションを提案するには、その業種によって電気電子や光学的な知識等を求められる可能性はあります。また、最近流行している機械学習の案件にコアな部分まで入り込もうとすれば、微積分や統計数学等の習得が必要になります。私にはいずれも経験がありませんので、そういう業務をやってる人達がどのくらい数学・物理が得意なのかは未知数ですが、理数系の基礎的な学力は有している可能性は高そうです。

ただ、いずれにせよ、転職時点では数学や物理よりも身につけるべきものが沢山あるので、そちらを優先したほうがいいです。

英語力

英語については、色んな人が色んな事を言っていると思います。将来性の話をしている人もいますし、ドキュメントの読み書きについて言及している人もいます。私は前職の関係でTOEICが900点以上ありますが、個人的感覚としてエンジニアになって以降その英語力が活きてよかったと思ったケースは殆どありません。

日本の組み込みエンジニアは大抵日本企業向けに仕事をしているという事情もあります。稀に、顧客に英語圏の発注先やパートナーがいて、その方々とコミュニケーションが必要になるケース等もありますが、そんな場合でも高いレベルの英語力までは必要なく、皆結構単語を適当な文法で並べて事足りてるケースが多い気がします。ソフトウェアエンジニアに英語力もあることを前提とした組織体系が組まれないからでしょう。

ドキュメントについては確かに英語で記載されているものも多いので、それらは読めたほうが便利です。技術的な場面で使用される英語というのは文法的には平易で、専門用語が難しいというパターンが多いのですが、専門用語はTOEICなどを勉強しても習得出来ないので、出くわした時に調べるという方法が効率が良いです。高い英語力をもっていても結局ググらないと読めません。

最低限、TOEIC500-600点位あれば当面は問題無いのではないでしょうか。

しかしこれも数学・物理の所と同じですが、より高いレベルで仕事をするような、例えば英語圏のパートナーや外注を活用しながら案件をコーディネートするとか、OSSに参加してドキュメントを書くとか、そういうレベルの人になるなら、追々必要になるかもしれません。

何が楽しいのか?

ソフトウェアを作るということは、組み込みに限らず、何が楽しいのか自分でも上手く言語化出来ない所があります。それでも頑張って表現してみると、「形のなかったものがジワジワと形になっていく感じ」が、自分の中で気に入っている部分です。組み込みはソフトウェアの中でも、モノの動きが伴う分野なので、初めはダミーで実装していた機能が本実装されたり、同じハード構成なのに機能が増えてできることが増えたりすると、そこはかとない愛情を感じることがあります。おお…大きくなったね、お前さん…と。

音楽をやっていた人とか、デザインができる人とか、0から何かを作ったりするのが好きな人は結構向いているのでは無いかと思います(ちなみに私は学生時代、軽音楽部で作曲してたような人間でした)。

また、組み込みはコンピュータの仕組みを掘り下げて理解できる仕事です。メモリ配置、エンディアンの問題、ハードウェア制御、OSの起動から終了、ドライバの作成や制御など、そのコンピュータの根幹に関わらなくてはならないような問題に多く遭遇します。

物事を掘り下げて探求するのが好きな方、理系基質の方は好みの分野なのではないかと思います。私もこうしたミクロな世界を探検するのが結構好きで、色々と細かな動作を手を動かして試してみては喜んでいます。理系基質な世界ですが、文系の人間も排除しないで、分かるように説明してくれる所も、組み込み分野のいい所です。

Web系との違いは?

「エンジニア 転職」などと検索すると、ソフトウェア界隈ではWebエンジニアとしての転職が最も人気があることが分かります。組み込みは業界的にはWebに比べるとマイナーです。組み込みの人たちは、たまにWeb系の業界と自分たちの業界を比較していることがあります。私はWeb系で働いたことがないので余り正確なことは書けないのですが、その人らの情報を元にすると組み込み系とWeb系のイメージはこんな感じらしいです。

Web系組み込み系
雰囲気華やか、洒落くせえ地味、質実剛健
男女比5:5か、むしろ女性が多い
(それもイイ女が…)
8:2くらいで男が多い
オフィス都心のオシャレな事務所地方の工場か、都内でもちょっと都心から外れた雑居ビル
バグったら…その時直そう😆誰か死ぬね😂
給料平均はやや高いWebに比べると平均はやや低い
その他ドラマに出てくるエンジニアは大体のこの業界の人らWeb系にやっかみもあるが、自分たちの仕事に誇りは持っている。
Web系の人には存在を認識されていないことがある
組み込みの職場にいた人々にWeb系のイメージを聞きました(N数は5くらい)

(これは私が言っているのではない!)誇張された表現も多いですが、一部そうなのかもなあ、と思うこともあります。Web系とどっちに行くか悩んでいる人がいたら、参考程度にはなるかもしれません(但し、偏見とやっかみに満ちています。ネタかもしれません。当てはまらない現場も多いと思います)

あと思うのは、GUIを伴うフレームワークについてはやはりWeb系がかなり発達していて、組み込みのユーザーインターフェース周りの設計は今ひとつだったな…と思うことがあります。Web系のフレームワークは作り方を半分強制するところがあるので、余り考えずとも綺麗な設計に近づく一方、組み込みで使われるC言語ではSwitch文有りまくり、フラグ有りまくりな実装でゴリ押し出来てしまいます。組み込みはコンピュータそのものに関しての深い知識を得られますが、ユーザーインターフェースを作るに当たってはWebの作法を学んでおくのも有りだなと感じます。

ちなみに、Webと組み込みをセットのシステムにすると、今流行りのIoTという分野に生まれ変わるようです。なので、本当は仲良くやらないといけない両業界ではあります。

とりあえず楽しくやってます

以上、自分が組み込みエンジニアになって色々と感じてきたことを書きました。この職業は、万人向けではないかもしれませんが、何かを作るのが好きな人、突き詰めて考えるのが好きな人、モノづくりが好きな人などには、ハマるものがあると思います。仕事としてだけでなく趣味の領域に広げていけるのも魅力です。

更に、好奇心があれば、組み込みの世界からはライブラリ、OS、ネットワーク、Web、モバイル、機械学習等のソフト寄りの世界から、電子回路、通信制御、周辺機器制御等、ハード寄りの世界まで地続きで歩いて行くことができます。モノづくりの世界をとても広く見渡す事ができる魅力があるのです。

私は組み込みエンジニアになった時、まるで買ったばかりのRPGのフィールドに降り立ったかのような新鮮な感覚を覚えました。そして、その感覚はエンジニアになってから5年が経過しようとしている2020年現在でも続いています。現在はモバイル等、純粋な組み込みの仕事とは少し毛色の違う仕事をすることもありますが、心の原点は組み込みエンジニアです。私はこの職業から始めて、スーパーエンジニアの地位を密かに狙っているのです。

コメント

タイトルとURLをコピーしました