5 ms·
I currently work in embedded software which involves a lot of overlapping interaction with EE and hardware design folks. The consensus is that the hardest, most
by badRNG 4y ago
I currently work in embedded software which involves a lot of overlapping interaction with EE and hardware design folks. The consensus is that the hardest, most fascinating field is the one you currently have the least exposure to. The easiest, least exciting field is the one you have a degree in.
In CS, you may have spent thousands or tens of thousands of hours across many years learning and growing, and still being limited in your understanding of the field as a whole. It's daunting to explore other related fields just to find out that they each have similar levels of complexity, filled with professionals who've sunk similar levels of effort, time, and years of their life into their work (who are often equally struck by the complexity of your field.)
- netr0ute 4y agoThe grass is always greener on the other side
- actinium226 4y agoBut sometimes that's because it's fake. Other times it has more to do with the particular brand of, ahem, fertilizer, they use. Sometimes it really is greener and your side is shit and it's time to make a change.
- hnthrowaway0315 4y agoJust curious, for a software engineer that only works with managed languages such as Java and Python, what kind of embedded job is easy to squeeze into? Thanks~~
- AnimalMuppet 4y agoThere are a number of embedded gadgets that run on Android, complete with code in Java. (They aren't hard real-time systems, but not all embedded devices care about that.) Look for things that have a real graphical display and touchscreen.
- hnthrowaway0315 4y agoThanks! Is that different from Android/iOS development or just part of it?
- AnimalMuppet 4y agoWell... it's Android (or iOS) development, but it's different. In that kind of situation, you usually own the whole device. You don't have to worry about being removed from memory because the user wanted to run some hotel's booking app or whatever - the user doesn't have the option of doing that. You may have some additional hooks that give you some control of whatever custom hardware that comes with the device. You may or may not have to drop down into native code to access those hooks. You can't develop against a standard phone or tablet. You have to have your hardware to develop against. So, yeah. It's the same... but it's different.
- badRNG 4y agoIf you have experience with software, learning embedded concepts isn't a huge leap. At least in my area, aerospace, defense, and automotive tend to be the biggest, easiest employers to get started with. They will hire basically anyone with a solid grasp of C, OSes, and basic computer architecture (at an undergrad level.) I find embedded really rewarding. A 20 year old embedded-C code base generally follows the same design patterns and coding conventions and styles that you'd use today, and don't feel "old" or like they need to be rewritten. A 7 year old JS code base, on the other hand, is largely outdated, and may be written in a nearly extinct framework by the time it is your turn to maintain it. If you get tired of giving up time on the weekends so you can learn a new framework, consider hopping over!
- hnthrowaway0315 4y agoThanks for the tip, that's really interesting. I'm more into lower level stuffs so I'm taking CS courses towards OS and Compiler. I also played with a Tiva launchpad but stopped after failing bit banging multiple devices :D
- krapht 4y agoHeh, or you could be me, and escape embedded. I hate staring at 20 year old legacy C or C++98 codebases, Makefiles and Autotools make me cry, and trying to debug random hardware issues with blinking LEDs or print statements (JTAG access is too optimistic) is something only the most detail-oriented person might enjoy :). I'm exaggerating a little, but more power to those of you who suffer through it!
- CodeSgt 4y agoKnow of any companies/industries that have started switching to Rust for embedded?
- badRNG 4y agoHonestly no. Pretty much the only folks I've heard talking about Rust are in the application dev space. Generally the space I'm familiar with is lately being called "deeply embedded" to differentiate it from IoT platforms (which sometimes run full-blown Android) Typically the real time space is very conservative on what types of changes are implemented, and that's largely because a lot of rt software exists on safety critical systems that need to be supported for decades.
- btkramer9 4y agoIf you (or anyone else) are interested in getting into embedded email me at my username @ gmail. We're currently looking for a couple. Coming from Java/Python is a plus