
組み込みエンジニア?システムエンジニア?
SIer?ソフト系のエンジニアってことはわかるけど、
一体何がちがうの?という点をまとめていきます。
私は、大手の機械メーカーで現役の組み込みエンジニアをしているひらとまです。
学生時代からかれこれ10年以上組み込みやプログラミングに携わっています。
目次
システムエンジニア

システムエンジニアはソフトウェアが関わる、システム開発を
顧客の要求の分析から開発、テスト、稼働後のトラブル対応まで
全般的な対応をするエンジニアです。
システムエンジニアの仕事を流れに沿って見ていきましょう。
要求分析
お客がどんなものが必要なのか聞き出し整理します。
このとき、お客は社外のこともありますし、社内のこともあります。
お客が欲しい物って意外とまとまっていなくて、顧客の提案したものをそのとおりに作るのではなく、
本当に解決したいものはなにか?と聞き出していくのが腕の見せ所です。
もちろん、営業がいる場合は、営業がその役割を担う場合もありますが、一緒に進めていくことも多い印象です。
要件定義
顧客の要求をまとめ、システムとして満たすべき機能を整理していきます。
ここで、シンプルに顧客の課題を解決できると、後の工程が楽になりますし、
完成後になんか違う。。。と言われ揉めることも減ります。
構想設計
要件をどのように満たしていくか、システム全体の構想を行います。
近年では、単一のソフトウェアで機能を実現することは少なく、
例えば、WEBサービスであっても
ホームページの画面をつくるフロントサイドと
データを取り扱うサーバサイドに分かれるなど、
複数のソフトウェアの組み合わせるにより実現されています。
このように、システム全体の構造を設計します。
詳細設計
個々のソフトウェアを設計していきますが、いきなりプログラミングはしません。
UMLと呼ばれる設計図を作ったり、外注する場合は、仕様書としてまとめたりします。
プログラミング
実際にコードを買いてソフトウェアを作り上げていきます。
ここで意外なのですが、システムエンジニアの中には、
このプログラミング工程は行わず、プログラマに任せることが多いです。
もちろん、自分でプログラミングするという企業もありますが、
役割分担することで効率を上げています。
そのため、プログラムがかけないシステムエンジニアも一定数います。
テスト
プログラムが要求仕様を満たすか試験を考え、
実施していきます。
システムの品質を守るための大切な工程です。
稼働/トラブル対応
近年では、ソフトウェアをリリースしたあとにも、
バグが見つかり、必死で直していくということがよくあります。
最後まで面倒を見るのもシステムエンジニアのしごとです。
組み込みエンジニア

組み込みエンジニアはシステムエンジニアに含まれますが、
その中でも特に、機械やモノを動かすためのソフトウェアあるいはハードウェア回路を設計するエンジニアになります。
詳しくはコチラの記事で解説しています。
2つの関係性と違い
勘の良い人はわかったと思いますが、
システムエンジニアと組み込みエンジニアは次のような関係があります。

システムエンジニアが組み込みエンジニアを含んでいますね。
その上で傾向として特徴を分けると
プログラミングをするか
システムエンジニアはしないことが多い、
組み込みエンジニアは自分でプログラミングもすることが多い
新しい言語や技術への対応
システムエンジニアは自分でプログラミングをしないことが多い分、
新しい言語や技術への情報収集に力を入れる必要があります。
一方で、組み込みエンジニアは、昔ながらのC言語やアセンブラで記述することが多く、
流行り廃りに影響されにくいです。
まとめ
システムエンジニアと組み込みエンジニアの違いについて、
まとめました。
両者の違いを理解し、自分がどのようなエンジニアになりたいかじっくりと考えてみましょう。