見出し画像

車載組み込みエンジニアからWEB系へ転職した感想【小林 / Kobayashi】

私は4年半ほど車載組み込みエンジニアをやったあと、現在の会社では約1年間PHP(Laravel), AWSを主に使用して業務を行っています👨‍💻
同じエンジニアといえど、業務内容は全く別物というくらいに差がありましたので、思い出など交えつつ書いてみたいと思います👀
これからWEB系への転職を考えている方々への参考になれば幸いです。

もちろん、私の経験した案件やプロジェクトの範囲での話でしかないので、一般化はできないと思います!そこはご注意ください⚠️


1. 使用言語について

【組み込み】

ほぼC言語、たまにアセンブラ
組み込みにおいてはいまだにC言語が主要な言語であり、かつて私のいた部署ではほとんどC以外は書きませんでした👀
組み込みはリアルタイム性が求められるため、GCなどの予測できない処理が入らず実行速度も早いということで、C言語が重宝されているわけですね。
C言語(アセンブラ)を組み込みで書くということは、モダンな言語とは単に文法等が違うだけではなく、メモリ管理やポインタ、周辺機器情報などの低レイヤ知識が求められることになるので、そこが大変でした😅
私のプロジェクトではOSなしのいわゆるベアメタル組み込みというものを多くやっていたので、コンピュータの電源が入ってからプログラムが動き出し、電源が落ちるまでの仕組みを全て把握しておく必要があったわけです🤔

【 WEB系】

PHP, JavaScriptなど(必要に応じて)
私は今主にPHPを使用していますが、WEB系においては本当に色々な言語が必要に応じて使用されていますよね。
便利な言語機能も多く、C言語をしながら本当に羨ましく思っていたのを覚えています🫧
ただ、色々な言語が使われているゆえに、実際の案件に入る前は独学で何を勉強すべきかが絞りにくいという面も感じました。
広大なWEB技術の中でいかに自分の専門領域を持つかというのは、難しい問題だと思います👀

2. 開発プロセス

【組み込み】

テストや事前の仕様重視
これは組み込みの中でも特に車載の特徴かもしれませんが、本当にテスト工程が多かったです。
やはり物理的な製品というのはユーザー自身に危害を加える恐れがあるので、非常に慎重に開発を進める必要があります🔎

また、テストではHWを動かしながら電流電圧をチェックするという工程もあり、ソフトウェアエンジニアといえど自動テスト主流なWEBとは隔世の感があります。(職場では基本、作業着でした👓)

【WEB系】

比較的スピード重視
WEB系でももちろんテストは重要ですが、それよりも開発スピードが求められる傾向が強いです。
仕様も最初からガチガチに固めているのではなく、フィードバックを受けて柔軟に変更することが重要視されていると感じますね🤔
設計やコーディング方法もそれを前提として行うので、最初のうちは自分の常識を壊す必要がありました。
また、テスト方法もPCで完結する自動テストが重要なため、いかに自動テストしやすい設計にするかというのが重要なファクターなのも面白いですね💡

3. 勉強の仕方

【組み込み】

自主勉強より仕事で得られる業務知識が重要
組み込み時代は、あまり自分自身で勉強というのはやったことがありませんでした。
汎用的なプログラミングの実力というよりは、特有の業務知識が求められることが多かったためです👀
またコーディング規約も厳密に定められているため、いかに規約に沿って作れるか、前例から外れないかといったことが重要視されていました。
規約を深く理解したりコンピュータの細部の動きまで把握する必要があるため、業務で獲得できるクローズドで深く狭い知識を求められていた形ですね🙌
(ドキュメントも機密扱いのものが多いため、自主勉強などはできなかったです)

【WEB系】

自主勉強が重要
WEB系では対照的に、常に勉強が求められていると感じます✅
使用する技術もオープンなものが多くネット上にいくらでも情報がありますし、それを使いこなすことが当然に求められます✊
私も現在のプロジェクトに入って初めてLaravelやAWSを触りましたが、「あまり理解していないので使えません」ではなく、ネット上に公開されているドキュメント等を見て自分で勉強しながら作っていく必要があります。
一方で、技術範囲が広すぎるため全ての仕組みを把握するというのは(少なくとも最初のうちは)不可能に近く、いかにフレームワークなどの「正しい使い方」を学べるかが重要で、オープンな広く浅い知識を求められていると感じています。

現在はより設計ができるように、AWSの資格勉強をしております!
受かりますように!🙏🙏🙏

4. リモートワークについて

【組み込み】

かなり可能性が低い
なんとなくわかることだと思いますが、組み込みではフルリモートワークできる可能性はかなり低いと思います😢
HWを動かしながらテストしますし、環境によっては専用HWがないとそもそもプログラムを動かせない、ということもあります。
(オシロスコープ、ロジックアナライザ、定圧電源なんてものは家にありませんし・・・デバッグに3日かかって、結局はHWの配線ミスでしたなんてこともありました。組み込みプログラマは、バグが出るとまずオシロスコープを取り出すというのは有名(?)な話です。)

ですが、やはり1箇所に集まってものを作っていくというのは楽しかったですね😳😳😳
みんなでワイワイとマイコンをいじりながらデバッグしたのも懐かしいです。

【WEB系】

今、やってます!
WEB系は専用HWや大規模な設備が必要ではなく、比較的フルリモートしやすい業種であるのは間違いないと思います。

ありがたいことにMarvelでは、絶賛フルリモートワークをさせていただいております🏠
フルリモートは自分の思うようなデスク環境を作れますし、何より通勤がなくて楽です。
(余談ですが、フルリモートになってからコンビニや外食が激減しお金の面でも大助かりです)
ですが、やはりコミュニケーションの面など難しいこともありますし、開発スキルが足りてないうちは結構しんどいです😢

6. 総括

結論としては本当に転職してよかったと思います😳😳
ありがたいことに、現在のプロジェクトではかなり大きな裁量を持って設計から実装までやらせていただいています。
その分プレッシャーも大きいですが、1年前と比べると自分のできることが大幅に広がっており、それが自分のモチベーションになっています🔥
(Marvel営業陣の方々、いいプロジェクトを紹介していただき本当にありがとうございます)

また、組み込みの経験は決して無駄になったわけではなく、今でも自分のプログラミングの基礎になっています✊
コンピュータを深く理解しながらのプログラミングを新卒から学べたのは自分にとっての財産です✨✨

同じような境遇の方々の参考になれば幸いです😌


Marvelでは今年『Marvelアドベントカレンダー2023』をやります🎄🎅Marvelのエンジニアがクリスマスまで記事のバトンを繋ぎます🔥
是非毎日のお楽しみとしてご覧ください😊
★Marvelのアドベントカレンダーはこちらhttps://adventar.org/calendars/9781





この記事が気に入ったらサポートをしてみませんか?