Looking at ways to break into SW development officially while not losing current salary (> $160k). There are a few avenues I can consider based on my experience and interests.

I've been doing hardware design (mostly PCBs, consumer electronics, some IC level analog design) for ~20 years, while constantly doing hobby type software stuff in the background, and constantly fiddling with the tools used for engineering design itself. I'm always the only one in the group more interested in the tools than in the work output, and will easily spend a month writing some script to reduce some of the tedium which might otherwise take just a few days for some particular task.

I have in fact written stuff for work, including actual firmware that is out in the field, some calibration stuff in the factory, some internal tools. I've participated in a few code reviews, a few agile sprints, and can get around in git. So it's not like I'm playing guitar hero with code; I think I have better coding skills than other EE's for whom this is a mere hobby. I have an architecture book currently at bedside, and fell in love with SICP a few years ago, which is what triggered my interest in functional programming.

I'm fascinated with CAD/EDA systems, drawing tools, drafting programs, spice and/or digital simulators, schematic, layout, libraries, solidworks, user interfaces, etc., and have a long list of features I'd like to see implemented in the next greatest and latest design software. I've also done fun work recently in embedded inertial measurement units and some navigation stuff, sensor calibration, developing models based on measured data, etc. I have a few other passing interests, but if they were that interesting to me I'd have done something about it already.

My preferred language is currently Clojure, although I can do some legitimate things as needed in Matlab, Python, C/C++, and Verilog. I'm primarily in Windows, but I can navigate around as needed in Linux pretty decently as a user, not an admin.

So I see the following options:

  • Some type of tools/cad/eda company -- none of these that I know of in Seattle.
  • Some type of mathy role regarding sensor data, navigation, satellites, control systems, etc. -- mostly require PhD which I don't have.
  • Get up to speed in the current goings-on with regard to self driving cars, etc. I've seen a few roles for FPGA development as it relates to AI and deep learning, so that might be my foot in the door.

I don't believe I have the experience it would take to maintain my seniority/salary in SW, yet the HW design role is really getting tedious.


2 Answers 2


You actually have a huge advantage from a particular viewpoint. What you need to do is capitalise on it. You're thinking in terms of getting a job doing it which is the wrong approach if you want to keep your revenue stream.

Your advantage is an intimate knowledge of hardware and the processes and infrastructure that go with it. You enjoy optimising as well.

Find a niche (and there are plenty) and write software to cover it and go into business for yourself while still continuing to work.

I can barely code, I don't even enjoy coding, I'm a professional engineer. But I make more money out of software than most developers in this country precisely because I find niches which they don't have the knowledge to cover and I retain ownership of products rather than slave away for someone else. You're in a better position than me, you can actually code and won't have to pay people to refactor your work once it's a proven product like I do.

Any expert with a wholistic view of their field can find a niche to cater to, you don't need world famous incredibly complex software and a million clients. Just a handful giving you a couple of k every month each for something you made in your spare time.


I don't see the slightest problem.

Fundamentally, you're just saying

"I want to work in software. But I hate cloud, social. I do like tools / cad / sensors."

I happen to laothe/like the same things as you; there's a world of software to be engineered.

Non-issue so far.

You'll be welcomed with open arms by all the software world that also loathes cloud/social/apps.

As has been pointed out zillions of times, software is:

  • You make nothing when you are inexperienced / unproven, then you make insanities of money when you are experienced / proven. Be prepared to make zero for awhile.

  • It is extremely hard to "break in". Once, well if, you're "in" the demand for you is nuts. But. It is extremely hard to "break in".

  • Be aware that programming is like being a guitarist. You can't learn to be Joe Walsh. Right? And it's almost always a thing where you start early. The majority of "real" programmers just "have it" when they're 13, 14 or so (like guitarists) and build experience from there. Excellent math is an inevitable prerequisite too. It is not an "old starter" game.

  • A huge issue with software is, anyone can be a hobbyist programmer. So, it's ridiculously easy to pick up Unity and knock out "a game". That is vastly different from having the whole wealth of computer science, algorithmic structure, realtime interactions, parallelism, and programming mathematics absorbed and being able to do things like, you know, "fly aircraft" with it.

Good luck. If it works out you'll soon be earning a decent salary ;-)

BTW your position is almost humblebrag! Everyone is desperate for programmers who also can do hardware/embedded etc. Right? I mean I can't connect a frickin' relay board. Really you seem golden. I just glanced at a dozen contracts you could pick and choose from on SO's job site. Enjoy!!

The "Shareware" factor...

  1. An EXCELLENT, OUTSTANDING "in" for you is to create a piece of payware that is sold somewhere.

  2. This immediately completely solves two problems, (i) it is the best possible calling card. In your position hirers WANT TO BELIEVE you are a competent programmer-as-such, due to your background. Having a commercial product achieves this, and

  3. And (ii) in itself working on such a thing will bring you you to speed on a normal language, say c# is fine or (I bite my tongue) Java variants. (BTW the idea of "not liking" python, put that in a box and float it away :) )

  4. What venue? Nowadays there are very many "asset stores" - a great thing. For example the Unity (game engineering related) asset store example sells many fine pieces of software which have in a word, made the developer basically the top of their field from scratch

  5. Recall that you don't, actually, have to sell that much. Just mention that it is, uh, "successful" and gloss over figures. Nobody cares.

  6. You can't lose with the "shareware" approach

One problem with that...

To create a small software product like that "after hours" - so, sitting in your laundry room for a few hrs every night, like when authors write their first book while still having a job (with your faithful wife gritting her teeth and looking after the kids etc) - is pretty challenging, it is a "young guy's game". It's easier to do that when you're like 20 than 40, so get ready for the challenge. (Conversely of course your vast experience in engineering is hugely in your favor.)

Good luck

  • Thanks for the positive comments. I keep thinking I just need to take a year off and pretend people are still writing "shareware" and just not have a boss for a while. I'd like to use my particular combination of skills, which I realize is slightly less than common. My concern is exactly what has been brought up -- I haven't developed the discipline, etc., to be "real" at the task. Nov 3, 2018 at 19:24
  • @Sonicsmooth Actually "shareware" is a fantastic idea. I'm adding an interesting point to my answer ....
    – Fattie
    Nov 4, 2018 at 5:28

Not the answer you're looking for? Browse other questions tagged .