HACKER Q&A
📣 cblum

How to switch to embedded software development mid-career?


I'm a software engineer with 15 years experience. I've worked on various types of software, but always within the realm of "traditional software", like web servers, desktop software, and lately, services.

Ever since switching to services, I've been disillusioned with the field. I don't like messing with AWS, hate dealing with Kubernetes and the ecosystem around it, and I just feel like the field as a whole produces sloppy code.

I feel constantly anxious about having to learn new stacks often, usually having little time to do so. I can't master anything. I fail to see how all the stuff that pops up moves things in a better direction. It feels more like randomization than improvement.

Over the years, I've caught little anecdotes about embedded software development, in particular mission critical software. Maybe I'm wrong, but it seems to be a more rigorous field when it comes to writing software that works and is verifiably correct. I also like the idea of writing code that runs on a single machine, as opposed to e.g. a Kubernetes cluster.

For example, someone wrote this here on HN:

> The embedded world is very slow to change, so you can read about "modern approaches" (i.e. approaches used today) in any book about embedded programming written in the last 30 years.

> I currently work on spacecraft flight software and the only real advance on this project over something like the space shuttle that I can point to is that we're trying out some continuous integration on this project. We would like to use a lot of modern C++ features, but the compiler for our flight hardware platform is GCC 4.1 (upgrading to GCC 4.3 soon if we're lucky).

https://news.ycombinator.com/item?id=22391560

That sounds like a dream to me. To be able to focus my expertise on one thing (or one set of things) and apply that throughout my career.

Is it possible for someone at my career stage to switch into embedded software development? Has anyone here done that?


  👤 jmiskovic Accepted Answer ✓
The grass is always greener. I've been doing embedded for 13 years and it's not peachy. You use C mostly, or C++ that looks like C. You write bootloaders and same drivers over and over. There's constant diagnostics and same arguments - is it SW issue or HW issue? How can we work around HW issue with SW patch? Embedded development is more about engineering than about software development. Memory and space constraints are harder, shipping errors is so much more expensive and you spend about 50% of time in datasheets and schematics.

I see no reason why you couldn't make the switch. It is I think less lucrative than some other branches, and far fewer people apply for embedded position. As long as you demonstrate that you are reliable and interested, you should have no problem getting the position with no previous experience. Of course, this depends on your location. There are far less job offers for remote work, and it would complicate the learning process.