don't do it as a profession, embedded programming grind is worse than conventional cloud/web programming grind
In the cloud I can press deploy to update the servers, fixing a software problem in an embedded of a fleet with thousands of individual devices is a huge undertaking and can take months. Fixing a hardware problems usually means workarounds in software.
Heck a lot of that complexity leaks into the cloud code to fix bad design decisions made years before. Lots of "if deviceHardwareRevision <= X && deviceSoftwareVersion <= Y do Z" in the cloud code
We don't have huge amounts of traffic in our cloud so it is usually pretty reliable even though we don't even enforce a lot of best practices and patching a problem is relatively easy