❤️ち→む⭐️びずり→みん❤️ Advent Calendar 2015 の記事です。
http://qiita.com/advent-calendar/2015/team_bizreamin
概要
私自身が2015/05に組み込みアプリケーションエンジニア(据え付けカーナビゲーション)から、Webアプリケーションエンジニアに転身した経験を基に、
- 組み込みエンジニアとWebエンジニアのスキルセットの違い
- 組み込みエンジニアからWebエンジニアへの転身は難しいか
- Webエンジニアへ転身したい人がやっておいたほうがいいこと
について、書きたいと思います。
あわよくば、組み込みエンジニアからWebエンジニアへ転身したい!と考えている方の参考になれば幸いです。
組み込みエンジニアとWebエンジニアのスキルセットの違い
QCDの観点で見ると、組み込みエンジニアが作るプロダクトは「品質(Quality)がズバ抜けて重要」な場面が多いと思います。
Webエンジニアの作るプロダクトは「速さ(Delivery)が最も重要」なことが多いと思います。
そのため、持っているスキルセットも基本的にその傾向の違いが出てきます。
組み込みエンジニアのスキルセット
- ソフトウェア開発工学の知識(UML、各開発工程の深い理解とプロセス化)
- マルチプロセス、マルチスレッドプログラミング
- 低レベル層の知識(アセンブラ、メモリ管理、排他制御、描画制御)
- ソフトウェア品質保証の知識(テスト技法、なぜなぜ分析など再発防止手法、etc...)
- ウォーターフォール
- ハードウェアを含めた製品独自のUIの知識
- C、C++
- 「原理を知っていて、自分でフレームワークごと作れる」ことが求められる
Webエンジニアのスキルセット
- データベースに関する知識
- HTTP,TCP/IP等の通信プロトコルの知識
- インフラに関する知識
- 自動テスト技法(XUnit、Selenium、etc...)
- アジャイル
- HTML/CSSを用いたUIの知識
- Java,ruby,PHP,etc...
- 「便利に使えるライブラリ、ツールを知っていて使える」ことが求められる
組み込みエンジニアからWebエンジニアへの転身は難しいか
組み込みエンジニアからWebエンジニアへの転身について、転職市場では一般的に「キャリアチェンジ」と捉えられることが多いようです。
しかし、個人的な感覚ではキャリアチェンジと言うほどではなく、多少の努力で十分に可能だと思います。
理由は、組込み開発は基本的に「最も過剰な開発」であるため、Webに置き換えた場合もそのまま流用できる部分が多いためです。
Web開発をするときは組み込み開発でやっていたプロセスから、不要と思うものを除いてスピードを上げるという感覚で開発ができます。
また、ソフトウェア品質保証の知識などはWebの世界でもほぼそのまま使えますし、開発要件の特徴から組み込みエンジニアのほうが深い知見を備えている場合が多いです。
(もちろん、Webエンジニアの中にも深い知見を備えた人は多数います)
一方で、Web独特の知識を身に付けることにハードルがありますが、感覚的には「組み込み開発において、ハードウェアやOSが変わり新たなソフトウェアプラットフォームで開発に臨む時」と同じなので、未体験のレベルではないはずですし、乗り越えられない壁ではないと思います。
Webエンジニアへ転身したい人がやっておいたほうがいいこと
Webエンジニアになりたい!と思ったら、まず小さいWebアプリケーションを一つ作ってみるのが良いと思います。
なるべく網羅的にWebアプリケーションの知識が手に入る本を選んで、手を動かしてみるのが一番です。(狭く深くよりは、広く浅く、がポイントです)
Webアプリケーションの世界は、組み込みの世界と比べて「知識量」がモノを言うので、とにかくinputを増やすのが大切です。
「少しの量を100%完璧に理解する」よりも「6割でいいからたくさん識る」というスタンスで臨むといいと思います。
Web開発は、とにかく「完璧よりも速さ」です。
おわりに
業界的に、組み込みの業界はソフトウェアが主役ではないことも多く、ソフトウェアエンジニアを真剣にやりたい人にとっては、恵まれない環境であることが多いです。
しかし、不満を抱えていながらも組み込みエンジニアからWebエンジニアに転身する人は少なくて、理由を聞くと「全くの畑違いでやっていける自信がない」という話をよくされます。
でも、組み込みエンジニアで培ったスキルは確実に役に立ちますし、そんなに難しくないし、なにより楽しいですよ!
特に若い人はまだまだチャンスがあると思うので、悩んでいる人がいたらぜひチャレンジしてほしいなと願いつつ、本記事を締めくくりたいと思います。