And only because the job selection -- especially locally, (and remote is getting harder to find) -- is far far better. Even if the type of work isn't usually as interesting. 9/10 of the jobs out there are some variant of this.
These days I work on some systems for autonomous agriculture, which is mostly in Rust, and again Linux on ARM SBC type work.
Really, I wouldn't say I'm an expert in embeddedd; I'm no EE, and while I've played with board layout I'd never trust me to build hardware :-) And I've never been the person doing initial board bring-up, though that could be fun. So, again, generalist with a lower-level systems interest/focus.
Anyways the transition happened roughly on that path. With a zig-zag over to database internals for a bit which was also very cool. FWIW I've been a software developer in some form for about 25 years now. Maybe more depending on how you define it.
I'd say embedded is a bit of a trap and a mixed bag career wise though. Others here have made this observation before: EEs are in my opinion underpaid, and work adjacent to EE suffers from the same problem. It's a bit like gamedev, people like to do the work which I think increases competition for jobs? Something like that.
(That said I'm happy with my compensation right now)
(Also even the ads side at Google was a bit systems-y; realtime bidding, low latency, all in C++, a bit of mixture of high and low-level.)
It's kind of like reading old (pre-XP) texts about testing that refer to testing a program in a family as "unit" testing. Not technically wrong because it all depends on how you define a unit, but definitely a sign of linguistic and economic drift.
Having been out of web-facing things for a long time, I think I'd feel pretty alien being dropped into a TypeScript-on-Node codebase. I'd have no problem picking it up having played with it a bit over the years, but it still strikes me as a bit odd. And I find the JS frameworks out there like React etc absolutely terrifyingly overwrought.
Luckily for react everybody did basically adopt it so their component model did not fail.
It is always funny to watch people mock Java in the 1.0 version of their framework and some other thing and then come back and look 5 years later and their stack is easily or greater and complexity than the old Java stacks.