I’ve started learning embedded and its 2 main languages (c and c++). But I’m starting to realize that despite the simple learning requirements, embedded is a whole world in and of itself. And once you deal with real projects, you start to realize that you need to learn more “stuff” specific to the hardware used in the device you’re working on. This is an issue that rarely came up with the software-only projects I currently work on.
Is it possible to fragment this field into sub-fields? I’m thinking that those with experience in the field may have noticed that some types of projects are different from other types, which has led them to maybe maybe come up with their own categories. For example, when you run into a project, you may think to yourself that it’s “outside your field”? Does that happen to you? and if so, what would you call your sub-field or what other sub-fields have you encountered?
Here are a few sub-specialities I can think of:
Assembly Language Specialist
This person probably is not needed that much these days… but.. yet still critical from time to time.
Device Driver Specialist
DSP Specialist
Control Theory Specialist
Networking Specialist
UI Specialist
http://developer.android.com/guide/practices/design/performance.html
And then, of course, every industry is a specialization unto itself. Consumer Electronics, Military, Avionics, Robotics, Industrial Machines, Medical Devices, etc…
Have fun and good luck!