I should have loved electrical engineering

tdhttt | 114 points

EE encompasses a lot of "engineering that takes hard math" at a professional and research level (similar to "hard CS," just different fields of math), so it is very hard to do as an undergrad, when your background in complex analysis and E&M is weak.

Early classes on circuits in EE will usually take shortcuts using known circuit structures and simplified models. The abstraction underneath the field of analog circuits is extremely leaky, so you often learn to ignore it unless you absolutely need to pay attention.

Hobbyist and undergrad projects thus usually consist of cargo culting combinations of simple circuit building blocks connected to a microcontroller of some kind. A lot of research (not in EE) needs this kind of work, but it's not necessarily glamorous. This is the same as pulling software libraries off the shelf to do software work ("showing my advisor docker"), but the software work gets more credit in modern academia because the skills are rarer and the building blocks are newer.

Plenty of cutting-edge science needs hobbyist-level EE, it's just not work in EE. Actual CS research is largely the same as EE research: very, very heavy on math and very difficult to do without studying a lot. If you compare hard EE research to basic software engineering, it makes sense that you think there's a "wall," but you're ignoring the easy EE and the hard CS.

pclmulqdq | 9 hours ago

When I studied electrical engineering, I'd say that a good half of our class were your typical "DIY" tinkering guys, which had been a hobby for quite some time. For some, like me, it was audio equipment. Guitar amplifiers, effects pedals, and all that. For others it was robotics. Other again enjoyed building their own DIY home automation systems. Or fitting mechanical systems with sensors and such, ham radio, whatever.

But, yes, probably half of my classes were a real drag to get through. It all depended on who the lecturer was, and how enthusiastic they were.

TrackerFF | 10 hours ago

The EE component of my CSE degree felt like a math degree in disguise. Calculus, linear algebra, differential equations, discrete mathematics... It was a long time ago but I remember it as three years of math prerequisites and Maxwell’s equations and then finally we could learn what a MOSFET is. Absolutely terrible. I just want to learn how circuits work and how to build a guitar amp! But noooooo I need to learn how to solve partial differential equations, which I’ve done zero times in the field.

ryandrake | 9 hours ago

> It seemed crazy to me that with all the amazing technological advancement we had, our efficiency in communicating via the computer wasn’t much higher than someone with a typewriter 150 years ago.

We're making electric super cars that still use a steering wheel and gas pedal. Just because it's old doesn't mean it's deficient. Humans haven't fundamentally changed in the past 100 years, so it is probably the most intuitive way to manually control a car.

The typewriter/keyboard is probably the most intuitive method to input alphabet characters. Of course that doesn't preclude entirely new ways to control our computers. But if you set out to simply replace the mouse and keyboard without fundamentally changing how we interact with a computer, then you're setting yourself up for failure.

CrossVR | 10 hours ago

Let me give you guys a perspective from someone who did Electrical Engineering in Africa. There are hardly any job openings centered around electronics so the programme/curriculum is Power Engineering heavy. Most of the professors did research around this area, and there were very few who did anything in the sciences. I had the chance to pick some electives from the Computer Engineering department, but this was just during my third and final year of university. Unlike OP, I did not have an issue breezing through circuit problem sets, though they felt very repetitive, I was not bad at it, nor did I fail any classes.

I had an eye opening experience when I had my first taste of programming when I took C programming in my second year of university. What do you mean I can run a command and see instant output? Amazing! This was not the case for my electronics and power engineering lab sessions. We were using equipment that had been around since the 80s with little to no supervision. Just a bunch of routine "experiments" which I can barely remember any of. In my third year, I took Digital Computer Design (a C.E elective) and I realized I had been wasting my time learning about how the power grid in my country works. I tried my best to salvage as much as I could by picking more C.E electives, albeit not many available, did as best I could.

Everyday I wonder, how different would my life have been if I studied CS or even CE, I do not know. But, I appreciate the little this journey taught me, that you can always squeeze lemonade out of whatever lemons life gives you. I see my old EE notes now and they don't make sense to me, but I appreciate the happy chills solving circuit problem sets gave me. I work in software now, and I get that 1000x more, and that is how I know I made the right choice.

kwakubiney | 4 hours ago

I had a similar starting point to the author but ended up in totally the opposite direction, haha. Took computer engineering in undergrad and did well in both CS and EE courses. My first job was as an SDE at AWS but I hated it. Went back to school for EE, got a PhD, and started working as an ASIC designer, which I'm still doing today.

It's definitely the case that there's a bigger jump from school project to actually useful product for EE than for CS. But now that we have affordable but decently featured FPGA boards, the barrier is much lower than before, at least for digital design.

zhemao | 2 hours ago

Weirdly my background is physics and CS and I am recently discovering a love of EE. I don't think it's as easy to pare these subjects apart as history suggests. Modern bleeding-edge solutions require a "full-stack" understanding. If you know maxwell's equations with your physics knowledge - then you can implement them numerically with your CS knowledge - build a hardware optimized version with verilog/FPGA with your EE knowledge.

reedf1 | 10 hours ago

As an EE who changed majors from CS in college and who has also done a lot of programming, I can see where the author is coming from. But electrical engineering, by its nature, is a low-level field. If CS students spent their first couple years doing algorithms and data structures in assembly, they would also find it difficult!

A key purpose of the repeated exercises in circuit analysis is to build up the student's intuition for how electricity works. Mathematically, it's "simple" -- just systems of (possibly complex) equations and basic diff eq. But for sophomores, all that is still new, and most students don't enjoy going deep into derivations.

Building kits and plugging pre-made modules into microcontroller development boards is fun, but it's not really engineering. You don't hire an EE to plug off-the-shelf components together, you hire an EE to do design work, to make sure everything is going to work under all operating conditions, and to diagnose problems when something goes wrong.

Finally, software is just easier[1] than hardware. Modern software is a mathematical idealization that runs of top of decades of high-level tools and abstractions. That's why it's so cheap and popular!

[1] This does not mean that everything in software development is easy, just that you don't need to deal with physics or chemistry or manufacturing or the procurement of physical goods in order to create new software.

AdamH12113 | 4 hours ago

Here is the thing about hardware vs software.

For the same mental effort, you get orders of magnitude more "end product" from software than hardware, with greatly less overhead and greatly more flexibility.

Hardware is extremely punishing and "complexity friction" kicks in almost immediately. A multi-feature door alarm on a microcontroller is a one hour affair that a newbie could finagle. With a pure hardware implementation its a multi-day effort, plus another day of reworking the board to dial it in. And if you aren't copying a design, you likely need a degree as well.

There is also the fact that software pays much more than hardware, can be done remotely from just about anywhere, doesn't involve working in labs full of lead and solvents, and like the author noted, has a much higher "wow!" factor from people in general. Software makes you feel very powerful, hardware will humble you into the ground.

Workaccount2 | 6 hours ago

The feeling you got when tinkering is the same I got when first studied formal electronics in HS. I didn't do college, but the only one from my graduation year who stayed into electronics until now it's me. It's been 12years and I'm still doing it. I've been blessed enough to have encountered people that paid me to do Industrial Design and Product R&D. I'm now currently in manufacturing and automation.

blopp99 | 9 hours ago

I think this article has a much simpler explanation than a lot of the points being made in the comments: When it came down to it, the author was more excited about software than hardware.

Contrast this:

> One of the EECS professors was kind enough to offer a RC car kit to his students to program it. I decided to give it a try. Maybe the toy car wasn’t exciting or maybe I was pre-occupied with other course work during that summer, I didn’t even open the box.

With this:

> Writing web applications blew my mind. I can just write some code, click a few buttons and boom all my friends and family across the globe can just see it! This feels like magic.

Anecdotally, I saw this a lot in college. Students would start out in electrical engineering because they thought hardware was really cool, but when the time came to do the hard work they didn't have much motivation. They wanted to be a hardware engineer, but putting in the work was unappealing. Software has a wider range of job opportunities from intense FAANG-level jobs down to being the person who pokes at a company's old PHP website long enough to keep it serving pages. You can jump in and find a level that matches your motivation. With hardware, you have to clear some hurdles to begin being useful at all.

To my surprise, I think Arduino and Raspberry Pi have made this worse. I talk to a lot of people who see themselves as amateur EEs because they bought an Arduino and used some jumper wires to connect some sensors to the right pins. It's exciting. Then they lose motivation when they encounter a problem that requires doing anything more complex or custom. These people often overlap with the CS students who think the entire world of software engineering is writing CRUD apps composed of APIs connected together.

Aurornis | 4 hours ago

I learned BASIC when I was 7 in the early 1980's. I went to a very advanced high school that had Internet access in 1991 and some Unix systems. I loved it and was fascinated by all the hardware.

I started college in EE, I absolutely loved my digital logic class. I talked to one of the lab TA's in Circuits 2 and said this wasn't as interesting as digital logic. He told me to switch to computer engineering. I looked at the courses and there were only 5 classes different. I switched that week.

I've been designing computer chips the last 30 years.

> Maybe I Am Just a Software Guy

That's the TL ; DR version of the article.

The TL ; DR version of my post is "I like programming but I find hardware far more interesting."

lizknope | 8 hours ago

I did a lot of CS out of passion as a child but leading up to high school I was around such uniquely skilled group of friends in the field that I felt that I should pursue EE as I felt so out-skilled as a programmer. It only took me a single year of university to realize that EE was NOT my calling. I've never had so much completely fail to instinctively "click" in my brain compared to my peers. Meanwhile I was practically teaching the CS courses to my peers. I found that computer engineering was the perfect intersection for me because it let me explore so much more hardware and low level stuff without requiring analog dark magic that for whatever reason even the simplest of principles my mind couldn't grasp. I still really wish I could have gone on to make super clean headphone amps and all that but it turns out there really are just some things you can be "naturally" good and bad at, and for me it clean code not clean circuits.

edit: +1 on the "I just started bruteforcing" part of getting frustrated with everything. It was not a good way of learning but even after switching programs I found myself preferring to just bruteforce problems I had lost hope in thinking through to completion without running into a mistake that'd require me start back over from the top when I have 200 of the same type of problem to do after. So much mental effort would be wasted trying to "get" things I just wasn't getting that I started to getting more satisfaction mentally from just managing to get the solution without doing the effort of doing it "right" (ignoring that my methods of bruteforcing would probably still take far more time and energy, it was at least something that didn't hurt me spiritually on every failure).

mynameajeff | 8 hours ago

I had the background for EE. Grew up around a bunch of HAMs and Motorola engineers, competed in FIRST, CS Olympiads, etc. Went to a great engineering school and then had my ass handed to me end of sophomore year. So I did the reasonable thing any 20yo would do and listened to my academic advisor. Who told me that "maybe EE, just isn't for you." Seeing the economic bottom fall out for engineers and CS graduates didn't help. So, in a state of panic I transferred to the CS program. I had to extend my graduation another year.

Career wise and financially, its worked out great. Even most of my EE friends didn't do much in EE after the first 5 years. Everyone just migrated to where the jobs were: Software development, IT, and Cybersecurity.

yardie | 6 hours ago

You should have loved electrical engineering, but you should also have loved software engineering. It's just that the software side of your education leap-frogged straight over the fundamentals and into hacking on cutting-edge completed systems at the very beginning, which suited your desired learning style much better.

There are plenty of "applied" electronics technician or electrician's apprenticeship programs that are more like your software education. Take an induction motor, a variable frequency drive, a few sensors, and a programmable logic controller, and hook them together according to the manufacturer's instructions, and you can be off to the races operating a pump or a conveyor on day 1. But will you understand how the insulated gate bipolar transistors and filters in that variable frequency drive turn the rectified high-voltage DC bus into three-phase AC that generates a rotating magnetic field and induces a current in the motor armature? No, you don't need to know any of that to make the pump work.

You wrote:

> I couldn’t imagine ... a toy CPU implemented in SystemVerilog being ... useful

No, it's really not, but your work on real CPUs depends on registers and combinatorial logic and ALUs and MMUs. End users can typically just download Python and treat everything behind the screen as a black box, but if you really want to call what you're doing "engineering" or a "science", then developing an understanding for what happens behind the curtains is incredibly useful. If you've implemented a toy 8-bit CPU with load, store, compare, jump, and a few basic math instructions, you can write some assembly or a toy interpreter for it and you will have an understanding of how real CPUs work that can enable you to write better code later. Add some interrupts to that CPU and build a multitasking operating system, and you'll understand parallelism better.

All of modern technology is a pyramid. At the point of that pyramid is just a single doped semiconductor with a P-N junction. We build that junction into transistors, and transistors into gates, and gates into CPUs, and on those CPUs we execute assembly, and we write low-level languages that compile into assembly, and build operating systems and syscalls with those low-level languages, and access those systems with high-level languages, and connect those computers together with networks, and write applications that operate on those networks, and at the broad base of the pyramid there are billions of people using those applications.

In 2025, no one human brain comprehends the full stack anymore, we all become our own individual bricks in a particular layer. But to do the best work at any point in the pyramid, you ought to know a bit of how it works above and below you!

LeifCarrotson | 6 hours ago

More people should get into EE and see it all the way through. And, rather than getting a masters degree or PhD, go straight into industry. Why? Because just beyond what you learn in your BSEE degree lies one of the most fascinating topics ever: Signal integrity.

I understand why a lot of people bail out of EE, and why a lot go to web dev specifically. EE relies so heavily on simple calculus that there's a distinct moment where you have to go "what the heck am I actually learning?". And seeing that software has this apparent depth (design patterns, OOP principles, Haskell, ORMs, Fieldingian REST, GraphQL, 10,000-word blog posts on vim vs emacs, etc.), they naturally get drawn there.

phendrenad2 | 9 hours ago

For me, it's a bit of the reverse. I initially wanted to go into CS, but had to start with 2 years of generic fundamentals closer to your regular EE curriculum. Ended up majoring in finance. Have been able to catch up quite nicely on my own on the CS knowledge since it's just software. But I miss the EE parts. I can't build the remotest smallest device with my hands. After high school I thought I would go onto studying supraconductors and stuff.. Go figure, I got lost along the way, smh.

aatd86 | 9 hours ago

It's hard to put this plainly without being insulting but I have to be blunt. EE is just 100000000000x harder to learn. The distance from theory to application for EE is especially gigantic.

Software development for the most part is extremely easy. It's one of the few "engineering" fields where you can go to a bootcamp and learn it in 6 months. You won't see this kind of thing for quantum mechanics or electrical engineering.

Also the gap between theory and application in software is miniscule. Instantaneous even. You basically learn software via application.

A lot of software engineers take pride in their jobs and in their intelligence but they don't fully understand just how easy software is. Like you guys (to be accurate: most of you guys, not all) have an easy job and you learned a easy field. EE is challenging. You don't like it because it's harder and the intellectual capacity to handle it isn't there for everyone.

There's a reason why all hardware development moved to Asia. Software is just too attractively easy and the internet boom made it lucrative. Asians took whats available while the west took what’s most fun. And now the skill gap is more evident and we can’t go back.

ninetyninenine | 6 hours ago

If you want to learn how to solve problems with hammers, engineering is what you want to do. If you want to know how the hammer works, do mathematics or physics. If you want to get paid, do software.

This is why I did an EE degree, didn't get paid much, went into software and used that to pay for a mathematics degree.

crinkly | 10 hours ago

TL;DR author discovers there is little overlap between EE and CS.

Hardware and software are called different things for a reason? I do agree that tinkering with the hardware always needs to be in-step with the lesson at hand. You can't just state KVL/KCL and move-on, you need to have the student build a circuit and play with it for a day or two.

1970-01-01 | 9 hours ago

[dead]

s5300 | 7 hours ago