r/ElectricalEngineering • u/Atmos-Ego • 1d ago
Education How necessary is programming?
I had to retake my basic programming in C course and now I’ve moved onto a more complicated assembly based microcontrollers class.
I feel like I underestimated how much of this major is just coding, and I still feel like I understand essentially nothing. It’s the only subject that makes me feel completely stupid and I’ve been to dozens of office hours. Thinking about how difficult this class is going to be to even pass let alone actually memorize any of the information for my career is overwhelming.
32
u/ZealousidealTill2355 1d ago
Could you get by without it? Sure.
But coding only enables you to be capable of more. If you don’t learn fundamentals, such that you can be somewhat comfortable with coding when you eventually encounter it, you will be at a big disadvantage compared to your peers that do.
At the end of the day, it’s taking EE and adding a level of abstraction so that we can control circuits and signals through written word.
5
u/Atmos-Ego 1d ago
I am just not sure how I’ll be able to actually get it down. Im kind of just hoping that since this new class is more on assembly that it wont depend too much on prerequisite c knowledge
9
u/ZealousidealTill2355 1d ago edited 1d ago
Assembly is the other way, where it’s going to show you the lower level instructions that become functions in C that you can use—not the other way. For instance, what does an “if statement” actually look like to the CPU?
But where exactly are your difficulties? There’s a difference between saying “a machine doesn’t work!” vs. “the machine won’t turn on because the cord is unplugged” — the second is more actionable and the way you should think about problems.
3
1
u/Atmos-Ego 1d ago
I feel pretty lost with like a majority of the terms tossed around in class. We did a review quiz in class today and I didnt really get anything relating to bitwise operators, and pointers.
Even with the stuff I somewhat know I dont really get what its doing. It’s just like memorizing the answer to 2+2 instead of knowing the process
5
u/ZealousidealTill2355 1d ago edited 1d ago
Bitwise operations, I would argue, are essential if you’re pursuing that domain. But look on Yputube because it’s also pretty intuitive if you’re comfortable with math and logic. Your instructor may be making it seem harder than it is. And for the hairier operations, take your time and break it down into chunks until you do understand it.
Pointers are easy. Say you have two words in the dictionary that have the same meaning? Maybe “index finger” and “pointer finger” — right?
Under “Index finger” — it will have “the second finger on the human hand used for gesturing, counting, etc”
But under “Pointer finger” — it will have “See Index Finger”
Even though the definition of “pointer finger” doesn’t tell you what it actually is, it shows you where to find it and saves work and paper.
And in computing, being able to do that allows for better data integrity and uses less memory —because if the data is the same, and means the same thing, why am I using multiple registers?
I can just have another variable that makes sense in this other situation, and simply “points” to the original data instead of duplicating it to a new location in memory for use (or duplicating the definition under pointer finger).
It also makes sure if I need to update that data, it updated everywhere it’s used (update the definition of index? Pointer is automatically updated too, since it simply references that definition).
1
u/Potential_Slice_5631 1d ago
You prefer assembly?? Nah fuck rhat
1
u/ZealousidealTill2355 1d ago
Yeah I don’t think anyone really does, which is why C was invented to begin with.
And even C wasn’t good enough, which is why we added levels of abstraction on top of that lol.
9
u/AnoArq 1d ago
Most hardware focused EE roles will be more scripting than programming and most of the hard stuff from C and Assembly will be hidden from you.
There's mixed rolls like test engineering where you will need to know both, including some of the more fun parts of C# or Java. Likewise the controller space where you'll be deep in the programming with some hardware integration.
There's signal processing roles where you'll want lots of programming practice. Matlab and Python can make those much easier but you'll want the knowledge to drop those data sets into C where you can manipulate the raw memory at 10x to 100x the speed.
1
8
u/Embarrassed-Tea-1192 1d ago
Most EE roles don’t require any programming at all. You’ll never have to do it again after school if you don’t want to.
7
u/MonMotha 1d ago
The only EEs who really, really need to grasp low-level programming like C and assembly allow (and almost forces) you to do are folks who do embedded systems or people who deliberately get into software work. Those roles are mostly on the "computer engineering" side of things, but there's a lot of crossover with electrical engineering and computer engineering (many/most schools offer both degrees from the same department and share many classes between them), and people with EE degrees still often fill embedded systems roles especially on the hardware side where being able to grok what the firmware folks are doing is highly useful.
If you're going to do just about any other kind of electrical engineering, you can potentially get away without being able to do software programming at all especially if you're willing to let an AI model whip up quick and dirty scripts and models for you (yuck, but it often works OK). Having a useful knowledge of some sort of high-level scripting language is often still useful for automating tasks and numerical analysis. Python is popular. MATLAB often qualifies. Lua is more niche but also useful.
Nobody is going to expect someone who isn't being hired into a software-centric role to have all the details of any programming language memorized. I do embedded systems and consider myself an "expert" on the C programming language especially in embedded contexts and often still look up some of the more esoteric language details several times per week. I would consider myself "reasonably highly competent" at Python in use cases related to my craft and would never be able to write something useful without access to at minimum the language standard library documentation that's on python.org.
2
u/ElmersGluon 1d ago edited 1d ago
How much you will do this in your job depends on your job.
However:
- Being skilled in programming allows you to do things you otherwise might not be able to do and/or allows you to be far more efficient at it.
- It sharpens your skills in critical thinking.
There are plenty of people who might prefer to not code. But not being able to code, or rather, not being able to learn to code is a bit of a red flag for someone going into engineering.
If a person doesn't have the ability to break down a problem into manageable tasks, if they lack critical thinking, if basic coding is too difficult for them, than there is reason to question how good of an engineer they can be - because these are or reflect key facets to any branch of engineering.
1
u/Atmos-Ego 1d ago
Yeah probably i should just give up
1
u/ElmersGluon 1d ago
Not necessarily - it depends on what the issue is.
If you're fully capable but have an awful instructor, then that's not on you.
There are many programming tutorials and learning sites out there. I would explore some of them and see if they help to make things click for you.
1
u/Atmos-Ego 1d ago
I dont want to be too quick to blame my professors but in the previous class there were a few times where I’d given my code to the professor and they suggested a fix id already mentioned trying. They’d then be surprised when I went in person and it still didnt work lol.
Makes me think a lot of my classmates are just having ai write their homework
1
u/anishkgoyal 1d ago
Depends on the role, but I would say knowing how to code in general opens you up to performing a lot of tasks faster/automating things compared to your coworkers (assuming the role isn't too physically involved). It's a plus to have that kind of mindset. I did my undergrad in computer engineering, so I'm a bit biased, tho
1
u/moto_dweeb 1d ago
Much less relevant now than it was a year ago. At this point unless you're actually doing sw design, throwing shit into an ai to generate scripts is EZ
1
u/DroppedPJK 1d ago
It is super necessary to having an easier life in this career.
While some fields wont need it, almost all fields are made easier utilizing programming.
There's just so much tedious shit to do and programming goes a long way to getting out of that part of work faster.
1
u/Atmos-Ego 1d ago
Ah to have coding be something I think of as the convenient and easy solution. One day maybe
1
u/Kataly5t 1d ago
AI does it all for my team - even the bash scripts to set up Linux servers. We just debug everything AI outputs.
1
u/Humdaak_9000 1d ago
I'm of the opinion that in the very near future, if not already, most engineering will be coding with specialized domain logic. Programming is such a force-multiplier if you're an engineer, you're foolish to ignore it.
1
u/NewSchoolBoxer 1d ago
I never encountered a single line of code working at a power plant or medical device company. Some jobs have a coding component but not the majority. Don't apply to embedded systems or anything that mentions a programming language in the job description and you'll be alright.
1
u/motoh 1d ago
Single anecdotal data point.
I'm in a test engineering position where I can read code, and even implement a bit of it myself, but it is not expected as we have a team of software engineers whose purpose is to implement the automation of our test design.
This has, however, hobbled my job searching recently, as more coding skill is expected in even similar positions to mine.
1
u/Vegetable-Two2173 1d ago
There are areas where you won't touch code.
There are areas where code is everything.
Speaking as an EE/CS (and sometimes ME), figure out a way to make it stick. Grab an Arduino kit and start playing. Understanding what the person after you needs to do will make you a great engineer.
Be a great engineer.
1
u/Jellyswim_ 1d ago
Microcontrollers is probably one of the last programming intensive classes that you're required to take for EE.
If you wanna go into FPGAs or something similar, you'll obviously need more, but if you can make it through this course, you probably wont have to worry about it much more.
But lots of coding experience and language familiarity can still take you a long way and looks good on a resume.
1
u/StageMajestic613 1d ago
Very. I’ve been in RF 30 years and still write embedded C code frequently, along with Python for everything else. Though AI is making it a lot easier.
1
u/_Darkstorm_ 21h ago
Meh, just pass the classes. Whether you use code or not in your later EE career very much depends on what sub-field you are planning on going into. In general, I would recommend at a minimum know Python and keep up with it as it's very handy as a general-purpose scripting language and it will run almost anywhere. Also, knowing how to manipulate Excel with VBA will give definite benefits. Matlab is another good one to have under your belt. A bit of shell-scripting for whatever OS you are using can help with "cheap and cheerful" fixes outside of EE.
If you are doing microcontrollers, Standard-C, assembly, and Lua are going to be your bread-and-butter. FPGA are going to require VHDL expertise, maybe Verilog too. C# if whatever you are making is going to interface with MS Windows or dotNET ecosystems.
If programming is your weak spot, either shore up your weaknesses or mitigate them by choosing fields where it's not as much of an issue. Programming in some form or fashion within the STEM fields is pretty much inescapable though, so be warned.
1
u/johnnyhonda 17h ago
I feel like I underestimated how much of this major is just coding
You probably did. Look at it as a tool to solve problems. A person who can code in any profession is way more capable than the person who cannot.
101
u/flyinchipmunk5 1d ago
Very necessary or not necessary at all depending on your job