Chat about electronics engineering as a career choice, especially money

Thread Starter

DraxDomax

Joined Apr 5, 2019
43
I've began to notice that since my high school years in Israel. There's a lot of software/hardware development going on there. So, I think I got a decent look.
My general impression is that software just pays a lot better, for the junior-senior levels (I am not interested to talk about Principal levels. They are a small % of the workforce and are usually special arrangements).

Also, I think we agree software is easier to learn? I mean: software tends to break into modules and areas. One can look into a for loop, understand how it iterates, look into a nested function, understand how it works, look into an interface, understand what this software connects to.
Software code also is pretty much self-documenting and seld-diagnosing.
I am no Java expert but when some component at work traps a bug, I have some initial info, and I can look into the code and the reason is often obvious. Plus. the rest of the application usually works fine.
Not to mention software theoretically never "wears out", while electronic components can fail at any given moment and are theoretically GUARANTEED to fail at some point in the future.

Electronics is a bit more magical. It's easy to see resistor circuits, but: put some semiconductors and alternating current and you soon find yourself doing differential math!

Households already have computers as normal household items that are used for life. All you need to do is download some open source IDE and google your way to knowledge.
Electronics require components. Like, I was playing with a circuit that used a 2SA933, had to order one from the internet, wait for it... And I am in the lucky position of living where things get shipped easily and owning some disposable income.
If I were some dude in a less good part of Africa, that would be a lot harder!

So, why does a field that requires so much more, pay less?
 

bogosort

Joined Sep 24, 2011
432
So, why does a field that requires so much more, pay less?
The barrier to entry for hardware is surely larger than it is for software, but I think you are severely underestimating how difficult software can be. We can think of any number of metrics to compare the two, but let's consider complexity, which is what separates the pro's from the wanna-be's in both fields. Off the top of my head, I can think of only one significant hardware/software project for which the hardware is likely more complex than the software: the LHC at Geneva. There are probably massively-parallel HPC projects that also apply. But, in general, I'd say that software complexity greatly exceeds hardware complexity. An obvious example is a home computer: the OS is far more complex than the CPU, even though the latter is comprised of several billion transistors.

The simple reason is because hardware is inherently much more modular than software. The vast majority of the engineers at Intel aren't designing at the transistor level; they're looking at blocks of transistors at the cache level, or the gate level, or the blocks of gates level (ALU's, etc.). And these blocks are as decoupled from each other as the laws of physics allow. On the other hand, it takes enormous effort -- in the form of design, management, and increased complexity -- at multiple levels to approach true encapsulation in software. Every layer of abstraction, necessary in the attempt to decouple the various parts from each other, adds complexity to the whole. And complexity makes things harder.

So, I'd agree that the prerequisites are more challenging in hardware -- it takes a lot more effort to get to the point where you can look at an arbitrary circuit block and understand what's going on, as opposed to being able to follow an arbitrary piece of code. But at the professional level, working on large projects as part of a team, I believe software is generally more challenging than hardware. Note that I say this as an electronics engineer, in full recognition of how much technical minutiae we're required to know.

Put another way, extremely talented developers shine above even very good developers in a way that we just don't see in hardware. Put the best electronics engineer you've ever known on a team with 5 other good engineers; will the team's productivity change significantly? Maybe, maybe not. Put the best software developer you've ever known on a team with 5 other good developers, and their productivity will likely skyrocket.

The skill gap between best and average in software is greater than in hardware, partly because software tends to be more complex, and partly because much of hardware design has become commoditized. If you were trying to break into the voice recorder market, you wouldn't hire a world-class amplifier expert to design one from scratch -- you'd hire a competent electronics engineer at a fraction of the salary to choose an appropriate off-the-shelf IC and integrate it into the product.
 

djsfantasi

Joined Apr 11, 2010
5,966
Another viewpoint is not dependent so much on complexity, but the inherent skills of the person.

To me, hardware is much more rigid. We can’t break the laws of physics. A hardware professional needs to have a very specific body of knowledge before s/he can be successful.

Software is much more... well, soft! There are general constructs that are put together to create an event. You’ve mentioned some. Looping, conditional execution, calculations and IO. As you become more experienced, language and platform are minor components of a solution. Because no matter what the software language or what the hardware platform is, the implementation at an algorithmic level remains essentially the same.

By now, it’s obvious that I’m a software guy. And I know and expect the hardware guys to say, “But what about...?”

And I’ll just nod my head.

From your post, it looks to me that you’re a software guy, too. You show a natural skill. And thus, that personal knowledge should guide your decisions. Not which career makes more money. Because, know what? You can make all the money in the world and when you get older, you’ll feel unsatisfied.
 

Gibson486

Joined Jul 20, 2012
317
He pretty much sums it up. A CS curriculum only scratches the surface the same way a circuits class scratches the surface of being an EE. The difference is that software has kind of catapulted into so many variances that you cannot possibly squeeze it into a four year degree. You have people who know python, but hate C, but people who know C but refuse to acknowledge python. Every organization needs something different.

The barrier to entry for hardware is surely larger than it is for software, but I think you are severely underestimating how difficult software can be. We can think of any number of metrics to compare the two, but let's consider complexity, which is what separates the pro's from the wanna-be's in both fields. Off the top of my head, I can think of only one significant hardware/software project for which the hardware is likely more complex than the software: the LHC at Geneva. There are probably massively-parallel HPC projects that also apply. But, in general, I'd say that software complexity greatly exceeds hardware complexity. An obvious example is a home computer: the OS is far more complex than the CPU, even though the latter is comprised of several billion transistors.

The simple reason is because hardware is inherently much more modular than software. The vast majority of the engineers at Intel aren't designing at the transistor level; they're looking at blocks of transistors at the cache level, or the gate level, or the blocks of gates level (ALU's, etc.). And these blocks are as decoupled from each other as the laws of physics allow. On the other hand, it takes enormous effort -- in the form of design, management, and increased complexity -- at multiple levels to approach true encapsulation in software. Every layer of abstraction, necessary in the attempt to decouple the various parts from each other, adds complexity to the whole. And complexity makes things harder.

So, I'd agree that the prerequisites are more challenging in hardware -- it takes a lot more effort to get to the point where you can look at an arbitrary circuit block and understand what's going on, as opposed to being able to follow an arbitrary piece of code. But at the professional level, working on large projects as part of a team, I believe software is generally more challenging than hardware. Note that I say this as an electronics engineer, in full recognition of how much technical minutiae we're required to know.

Put another way, extremely talented developers shine above even very good developers in a way that we just don't see in hardware. Put the best electronics engineer you've ever known on a team with 5 other good engineers; will the team's productivity change significantly? Maybe, maybe not. Put the best software developer you've ever known on a team with 5 other good developers, and their productivity will likely skyrocket.

The skill gap between best and average in software is greater than in hardware, partly because software tends to be more complex, and partly because much of hardware design has become commoditized. If you were trying to break into the voice recorder market, you wouldn't hire a world-class amplifier expert to design one from scratch -- you'd hire a competent electronics engineer at a fraction of the salary to choose an appropriate off-the-shelf IC and integrate it into the product.
 

djsfantasi

Joined Apr 11, 2010
5,966
He pretty much sums it up. A CS curriculum only scratches the surface the same way a circuits class scratches the surface of being an EE. The difference is that software has kind of catapulted into so many variances that you cannot possibly squeeze it into a four year degree. You have people who know python, but hate C, but people who know C but refuse to acknowledge python. Every organization needs something different.
I agree with Gibson. And have to add to my comments regarding software. You have to study the standard software constructs like you do with hardware. But, a poorly implemented hardware construct may simply not work. A software solution may work, most of the time. However, it’s much more difficult to test because a test had to be defined for every permutation of events and every boundary point. If not, software will interact in a totally unpredictable manner.

The other thing about software is that it’s just as easy if not easier to write bad code that works. Today. As a professional software engineer, I have many horror stories about systems that blew up.

One database was designed with an unsigned long as an index. We would never exceed an unsigned long. Until we found out we were hours away from doing just that. We had 2 hours to release new code with a double long index, convert all the databases to use the new index and cut over WITH NO DOWNTIME. BTW, unsigned long can address 4 billion records. Plus all the related tables adds up to a huge ass amount of data to be converted.
 

Papabravo

Joined Feb 24, 2006
12,774
In a career that spanned half a century (1964-2014) I did both. If I had it to do over again I would choose a different path. Engineering and software development are both commodity jobs and it is difficult to make any kind of a mark. I've made more with my investment portfolio than I ever made developing a wide array of products. These jobs are just not worth the investment in education or the aggravation of working for pedants.
 

CharlesWMcDonald

Joined May 16, 2019
233
I have also done both. For most of my life I have worked in electronics but I switched to full time software development. I switched because there were far more jobs in my area and software paid more. But my real love is for electronics and even though I do software for a living, I still maintain an active interest in everything electronic.

@djsfantasi Mentioned that you can't break the laws of physics with hardware, well neither can software. With electronics and other hardware you can invent new stuff, stuff that no one has ever seen before you created it. I have experienced this myself, I have nine U.S. patents.

Most people equate "hardware" with computers but there is a lot more to it than that.
Besides, electronics is more fun!
 

djsfantasi

Joined Apr 11, 2010
5,966
I have also done both. For most of my life I have worked in electronics but I switched to full time software development. I switched because there were far more jobs in my area and software paid more. But my real love is for electronics and even though I do software for a living, I still maintain an active interest in everything electronic.

@djsfantasi Mentioned that you can't break the laws of physics with hardware, well neither can software. With electronics and other hardware you can invent new stuff, stuff that no one has ever seen before you created it. I have experienced this myself, I have nine U.S. patents.

Most people equate "hardware" with computers but there is a lot more to it than that.
Besides, electronics is more fun!
And as I said earlier, I’m a software guy first. With software, you can also invent new stuff. Back in 1969, I coded an artificial intelligence application which could recognize objects. New stuff. Stuff that hardly anyone had seen before. Admittedly, I built in the shoulders of giants at MIT but I was a HS sophomore. Sometimes, new inventions are developed simultaneously. In the 70s, I created something that looked extremely like XMS/XSL. I also created a hierarchical database system before any commercial available product (1972).

The same opportunities that you cite for hardware, also exist in software. At the highest level, both hardware and software have the same opportunities for breakthrough development.

To a non-software person, all they see is routine code. To a person with advanced software skills, software is the master and hardware the slave. I brag that I can do ANYTHING in software. Anything.

Besides, software is more fun.
 

Ian Rogers

Joined Dec 12, 2012
689
As an embedded designer, I have to do both.. The mobile crane industry was extremely rewarding, but it wasn't the hardware or software that comes first, It was the initial crane knowledge... I was late into embedded engineering. I started as a diesel mechanic and moved into mechanical engineering /design.. I then went back to school to do my Electrical Engineering.. However!! All that pails into insignificance as my knowledge of crane geometry and crane trigonometry ( maths ) prevails... Turning complex math situations into 8 bit code is very daunting.. Thanks to the micro world we now have 32 bit micros, however.. My products are still 8 bit...

In a nutshell.... Follow your head...
 

crutschow

Joined Mar 14, 2008
24,130
I've done some simple software and digital designs, but mostly analog circuit design.
I find software design rather tedious and less interesting than circuit design, so that's where I stayed.
For me it was more a matter of aptitude and interest, rather than money or other considerations, that kept me in circuit design.
But, of course, there's relatively much less circuit design now then when I started, (where software design was in its infancy).
 

BobTPH

Joined Jun 5, 2013
2,207
Lifelong software engineer concentrating in compilers and development tools. Invented plenty of new things — 3 patents. Made plenty of money, comfortably retired now.

Electronics has been a hobby since early teens. I love building and programming microcontroller based devices. It is so refreshing to write the first to the last intrruction executed on the processor. No dealing with tons of crap written by others.

Bob
 

bogosort

Joined Sep 24, 2011
432
Good try but still not quite there. After the break the "laws_of_physics()" call will still return true.
Your imagination is as lacking as your sense of humor. :p Software is beholden to hardware (and, consequently, physics) in the same way that mathematics is beholden to pencil and paper.
 

djsfantasi

Joined Apr 11, 2010
5,966
Your imagination is as lacking as your sense of humor. :p Software is beholden to hardware (and, consequently, physics) in the same way that mathematics is beholden to pencil and paper.
Beholden?

Not true for all software. I can write software independent of hardware. Hardware has to satisfy specific requirements. Try to power an Arduino with 120VAC without supporting (additional) hardware.

Or write code that works on an Atmega, ATTiny, AVR that is not beholden to the underlying hardware.

While perhaps in decline, write a Java app totally independent of the hardware it runs on.

All the while designing hardware that can take inputs at any level and driving outputs at any level. Voltage in, voltage out, amps, gain and many other parameters are beholden to each other and to physics. Have you ever designed a circuit that takes in 1V @ 1A and converts it to 10V @ 10A?
 

nsaspook

Joined Aug 27, 2009
6,729
Beholden?

Not true for all software. I can write software independent of hardware. Hardware has to satisfy specific requirements. Try to power an Arduino with 120VAC without supporting (additional) hardware.

Or write code that works on an Atmega, ATTiny, AVR that is not beholden to the underlying hardware.

While perhaps in decline, write a Java app totally independent of the hardware it runs on.

All the while designing hardware that can take inputs at any level and driving outputs at any level. Voltage in, voltage out, amps, gain and many other parameters are beholden to each other and to physics. Have you ever designed a circuit that takes in 1V @ 1A and converts it to 10V @ 10A?
I think you misunderstood his post.
 
Top