Embedded Software Developer

Kyouma

New Member
Joined
Sep 9, 2022
Messages
2
Reaction score
0
I am a Computer Science student and I have been interested in Embedded Software Development. Can a person with a CS degree get this kind of job or is it only for electrical/computer engineers?
If so how do I go about becoming an embedded software developer?
 
It helps to have studied electronic engineering, but the real key is to finding businesses that do embedded systems.
My son studied electronic engineering and works for one. He was offered a position as a software dev but turned it down for a position at a mining firm where his uni skills will be better utilized.
Is there a particular sector you prefer? Where are you based / where do you want to be based?
I would prefer to work in Robotics Automation. I'm currently a second year Wits student. I am living in Joburg.
 
I am a Computer Science student and I have been interested in Embedded Software Development. Can a person with a CS degree get this kind of job or is it only for electrical/computer engineers?
If so how do I go about becoming an embedded software developer?
It is much easier to make the transition to an embedded developer from a CS degree than from an engineering degree to a software engineer.

That is, of course, unless you have no standards in your company and you'll hire anyone, then yeah it will be cake to go from electrical engineer, CS, hair stylist, etc. to "software developer"

Most of the embedded engineers I've interviewed had very low quality coding skills.
Most of their focus was on procedural type coding with little abstraction.

IE> many overcomplicated long functions with procedural behaviour (ie. my golden rule of a single screen per function would possible be frowned upon in that environment I reckon)
If it works this once it'll keep working forever.
That is quite typical for embedded development.

In modern software it is pretty common to constantly refactor code because interactions between multiple components that don't operate in linear succession happen often.
On an embedded machine you are typically running on a single core with a fixed instructions per clock.
If something took 10ms the day you coded it, it'll take 10ms 5 years later.
Whereas you know what is 100% not the case for software running on top of layers of abstraction
 
It is much easier to make the transition to an embedded developer from a CS degree than from an engineering degree to a software engineer.
I personally disagree. A degree in CS teaches you little about practical electronics. For example, a CS graduate may think it's perfectly fine to write a pin high in perpetuity, blowing the arse out a MOSFET.

You need that practical understanding and in my opinion a BEng is going to serve one better than a BSc. When things become more complex than turning a circuit on and off, a deep understanding of the subject matter will be infinitely more valuable.

For example, doing a CS degree, you do a lot of maths and programming, doing a BEng in EE, you do a lot of maths and programming as well, albeit the programming side to a lesser degree, but you also do things like optoelectronics and photonics etc etc

It's a **** ton easier to study the GoF than it is to learn about control systems as another example
 
Last edited:
I personally disagree. A degree in CS teaches you little about practical electronics. For example, a CS graduate may think it's perfectly fine to write a pin high in perpetuity, blowing the arse out a MOSFET.

You need that practical understanding and in my opinion a BEng is going to serve one better than a BSc. When things become more complex than turning a circuit on and off, a deep understanding of the subject matter will be infinitely more valuable.

For example, doing a CS degree, you do a lot of maths and programming, doing a BEng in EE, you do a lot of maths and programming as well, albeit the programming side to a lesser degree, but you also do things like optoelectronics and photonics etc etc

It's a **** ton easier to study the GoF than it is to learn about control systems as another example
99% of what embedded developers do will not be related to electronics at all.
And you are actually making my point.

Engineering is about working from 1st principles and understanding the fundamentals.
And without exception I interview previous engineers that have no understanding at all of data structures and algorithms at any level, and those are pretty much the bare level basics.

So just as conveniently as the CS graduate doesn't have any understanding of underlying electronics as you say.
Though I'll admit I have no idea what you are talking about with the MOSFET because keeping a MOSFET high is not at all a problem depending on what you are doing.
But any idiot can grasp that if something pulls a lot of power and you leave it on, it will burn it out.
Done topic learned.

If you are talking about designing and laying out a PCB, that is a different topic altogether.
But my company bought a chip maker and 99% of the people we hire in that division are software engineers, not electronic engineers.
The electronics take a relatively small amount of work comparative to the software which dominates the cost and time.
And they aren't making tiny little chips either, they are making full on ARM cards with state of the art processors to run all kinds of crazy workloads.

You can hire one guy to tell people not to pull some MOFSETs high and the rest can do the actual software development side.
 
Embedded really isn't that difficult if you have an understanding of Boolean algebra. If you can do procedural coding then embedded is not that far off...
 
Embedded really isn't that difficult if you have an understanding of Boolean algebra. If you can do procedural coding then embedded is not that far off...
Pretty much how I designed my circuits in Uni.
I started with a program I wrote and optimized, then turned it into boolean algebra, then built a circuit on this cute little breadboards people carried around on campus :giggle:
This was for digital logic without microprocessors
The microprocessors course was laughable easy in comparison
 
99% of what embedded developers do will not be related to electronics at all.
And you are actually making my point.

Engineering is about working from 1st principles and understanding the fundamentals.
And without exception I interview previous engineers that have no understanding at all of data structures and algorithms at any level, and those are pretty much the bare level basics.

So just as conveniently as the CS graduate doesn't have any understanding of underlying electronics as you say.
Though I'll admit I have no idea what you are talking about with the MOSFET because keeping a MOSFET high is not at all a problem depending on what you are doing.
But any idiot can grasp that if something pulls a lot of power and you leave it on, it will burn it out.
Done topic learned.

If you are talking about designing and laying out a PCB, that is a different topic altogether.
But my company bought a chip maker and 99% of the people we hire in that division are software engineers, not electronic engineers.
The electronics take a relatively small amount of work comparative to the software which dominates the cost and time.
And they aren't making tiny little chips either, they are making full on ARM cards with state of the art processors to run all kinds of crazy workloads.

You can hire one guy to tell people not to pull some MOFSETs high and the rest can do the actual software development side.
As long as your programmer understands the impact of his code on power consumption Of a device powered by battery and has to last for years. IMO an engineer is likely to fare better the closer you are to bare metal.
 
As long as your programmer understands the impact of his code on power consumption Of a device powered by battery and has to last for years. IMO an engineer is likely to fare better the closer you are to bare metal.
Why?

That stuff is still controlled by software.
You turn stuff on and off and look at the power impact it had.

Some of the most "complex" things I've done with microcontrollers like DMA-ing results out of free-wheeling ADCs and so on were 100% dominated by software complexity.
I would say almost all of the complexity I've had with electronics designs has been around operational amplifiers which is really not a digital circuit at all so out of scope of a typical embedded engineer.
If they are getting to that level then they are moving back into the PCB design, layout and so on
 
Why?

That stuff is still controlled by software.
You turn stuff on and off and look at the power impact it had.

Some of the most "complex" things I've done with microcontrollers like DMA-ing results out of free-wheeling ADCs and so on were 100% dominated by software complexity.
I would say almost all of the complexity I've had with electronics designs has been around operational amplifiers which is really not a digital circuit at all so out of scope of a typical embedded engineer.
If they are getting to that level then they are moving back into the PCB design, layout and so on
Are you an engineer or comp scientist?
 
As long as your programmer understands the impact of his code on power consumption Of a device powered by battery and has to last for years. IMO an engineer is likely to fare better the closer you are to bare metal.
Whichever way inclined your qualification is, it's not that difficult to pick up a book and address your shortcomings. Fortunately it's relatively simple for engineers and CS to transition due to the mathematical foundation in each stream.

Some of the best "engineers" I've worked with were physicists, mathematicians and computer scientists. Likewise some of the best developers were engineers.

If the will and interest is there, you can make it work either way...
 
A lot of generalizations in this thread.

To be a true embedded design engineer, you will have to have a deep understanding of the hardware you are working on, and how it is used in the specific application. In general, this isn't something explicitly taught at university. You might learn the bare basics, but to really master it, you will have to get a job as an embedded designer, then gain experience.

Very few embedded jobs (at least in SA) will allow you to do just the embedded software. You will be expected to do the hardware development as well. So unfortunately, I doubt your CS degree will lead to a career in embedded design, at least without the relevant HW experience.
 
@itareanlnotani <-- *someone who previously identified as an embedded software developer
FTFY ;)

I *used* to be an embedded software engineer. Many many moons ago. I do still dabble.

When I was doing that, C, 8051 Assembler, Visual Basic (mostly as glue or frontend), knowledge of how to use an ICE - in circuit emulator (that was shared between all the engineers in the company!, so had to beg to use, and it was ALWAYS in use), knowledge of how to read a datasheet, and make code to get the hardware to work solely from the datasheet, as the internet wasn't much good at that time.

I worked on software for Parking Meters in Cape Town, on Healthcare products,on Parking meter Systems, and on custom controllers.


Lots of burning EPROMS at the time for code. You learnt to debug code properly, as you didn't have EEPROM's. Erasing a PROM meant sticking it in a UV case for 20-30 min to erase, so you could start again. Programming might mean 5 min to upload.

Fun though. I worked with 1 touch dallas touch chips and even wrote an emulator to pretend to be one so I could debug code. Which was funny, as they were supposed to be secure that couldn't be copied. No, but you sure could pretend to be one, which was much the same thing haha.

In China I also did some work on IP Camera software; wrote custom firmware for a range of those.
Started development on a JAMMA board hardware, but unfortunately didn't finish due to circumstances. Definitely should have kickstartered that at the time. Or got investment capital


Since then, I've done front end, back end, management, and am back at consulting these days.

I would say nowadays, if you want to move into that area, start learning some basic PCB design, and hardware basics.

Learn how to use various environments.

eg low memory embedded linux ucLinux. Learn about partititioning flash, talking to hardware over i2c etc. Playing with router hardware will help a bit with that. Or get a PI and learn more lower level things.

Get some experience on different ARM SoC's. One thing you'll notice is that the drivers all suck ha.

Microcontroller stuff, eg arduino and similar lower end devices.

RTOS's

Lots of things to specialize in, dependant on what you are doing.

Read things like

eevblog.com
https://jaycarlson.net/ (lots of great info on various things)

etc

There are plenty of local embedded development houses doing stuff, you can call around and see if there are people hiring.

Definitely possible to get a job in embedded dev without a degree - I don't / didn't have one, although I am finally doing it now.
A keen sense of learning, being flexible, fast learner, will help you.


In case you fancy reading through older stuff i have written about that touches on hardware and embedded stuff - https://www.computersolutions.cn/blog/category/firmware-2/

Was interesting for me to go back and look at some of my older posts anyway haha.
 
Last edited:
Pretty much how I designed my circuits in Uni.
I started with a program I wrote and optimized, then turned it into boolean algebra, then built a circuit on this cute little breadboards people carried around on campus :giggle:
This was for digital logic without microprocessors
The microprocessors course was laughable easy in comparison

Building simple boolean logic circuits is not the type of circuit design that an EE does. The type of circuit design you learn as an EE is analogue circuit design, i.e design circuits with transistors, opamps, etc as well as RF (radio-frequency) circuit design which is not covered by a standard CS curriculum.

Look whether you think a CS degree is sufficient or not is irrelevant. The reality is that many embedded job advertisements expect you to have been educated in EE/ECE at university which is why companies usually hire BEng or BSc(Eng) rather than CS for embedded.

The consensus generally is that unless you did a maths focused BSc Computer Science degree an electrical engineering degree is significantly harder and has a wider scope which explains this hiring pattern we see. For example for my ECE degree at UCT I basically did all the computer science modules that a CS student does and the rest were electronics/math/physics based + many modules were embedded focused.

The company I work for (large multinational) exclusively only hires engineers with BEng/BSc(Eng) for embedded roles.
 
Last edited:
There is a reason they are different degrees. Idealy you should have people with engineering and CS degrees working together on projects that involve both.

If your interest is software/firmware then its good to do a CS degree. Try and do some short courses on embedded systems and electronics to show a prospective company that is where your interest and skills lie. Projects you do at home are also important to show your skills.
 
Yep, my company is part of FAANG group. We bought an entire division from AMD in Germany and then bought a chip maker in Isreal to produce custom ARM silicon.
Since then we've built an enormous amount of products both internally and externally.
I interact with those people daily and 99% of them and us are CS graduates.
Some even come from engineering companies where they were CS graduates and they adapted just fine.
I'm sure there are some EEs in the actual chip layout part, but I don't interact with them because they aren't involved in software needed to run these at all.

I've also, contrary to the implication from above poster, learned a LOT of electronics since and I'd be willing to bet that a EE graduate would struggle to keep up. Most EE degrees just barely skim the surface, just like computer science degrees and when you actually dive into each field you learn so much more over time.

We have almost no electronic engineers in the company.
Most engineers that switched are mechanical engineers, surprisingly.
I suspect because mechanical is such a complex degree that the people who make it through are super adaptable.

Last but not least, Computer Science is a branch of mathematics.
If your university had more mathematics in your EE degree, then the university is the problem.
Looks like someone is conflating software engineering with computer science.
But there is no way that a university that adheres to the Washington accord would be able to offer the requisite modules for any engineering degree and squeeze computer science in there.
There is too much material to cover in 4 years for both.
The fact that an EE thinks they covered everything is part of the problem I guess or the program offered by that university is woefully inadequate.
 
Last edited:
Yep, my company is part of FAANG group. We bought an entire division from AMD in Germany and then bought a chip maker in Isreal to produce custom ARM silicon.
Since then we've built an enormous amount of products both internally and externally.
I interact with those people daily and 99% of them and us are CS graduates.
Some even come from engineering companies where they were CS graduates and they adapted just fine.
I'm sure there are some EEs in the actual chip layout part, but I don't interact with them because they aren't involved in software needed to run these at all.

I've also, contrary to the implication from above poster, learned a LOT of electronics since and I'd be willing to bet that a EE graduate would struggle to keep up. Most EE degrees just barely skim the surface, just like computer science degrees and when you actually dive into each field you learn so much more over time.

We have almost no electronic engineers in the company.
Most engineers that switched are mechanical engineers, surprisingly.
I suspect because mechanical is such a complex degree that the people who make it through are super adaptable.

Last but not least, Computer Science is a branch of mathematics.
If your university had more mathematics in your EE degree, then the university is the problem.
Looks like someone is conflating software engineering with computer science.
But there is no way that a university that adheres to the Washington accord would be able to offer the requisite modules for any engineering degree and squeeze computer science in there.
There is too much material to cover in 4 years for both.
The fact that an EE thinks they covered everything is part of the problem I guess or the program offered by that university is woefully inadequate.

While I agree with a lot you are saying there are a lot of companies doing embedded work that require custom boards to be built and matched with the firmware/software. In such a case understanding the electronics side of things is far more important as it can change quite a bit depending on the implementation.
 
Top
Sign up to the MyBroadband newsletter
X