And there's a fair cohort of us (note, US-based perspective here) that _did_ go through the traditional electrical engineering education, learned the hard math and analog/mixed-signal engineering needed to put together something like this, dipped our toes in the industry, and then realized all our CS buddies had double our base salaries for objectively easier work.
We've strongly disincentivized gaining mid-level expertise on hard engineering.
> and then realized all our CS buddies had double our base salaries for objectively easier work.
One thing I realised as a graduate student designing RF PCBs and digital circuits was that the debugger for reality sucks. It's really frustrating to be faced with a problem where you just can't get "more information by recompiling with debug flags" and can't easily (or reversibly!) change the system to make it easier to understand. Totally different skillset, and requires a different method of thinking (frankly, at times, with a lot more thought).
This is a huge part of it! I spent a couple years doing IC-level failure analysis, which involves cool toys like electron microscopes, ion beams, strong destructive chemistry… a lot of it was neat, but the feedback loops were hours at best, and often days. Compared with having CI just do this for you automatically, or having something like `guard` running locally, is utterly transformational by comparison.
We've strongly disincentivized gaining mid-level expertise on hard engineering.