You want to become an embedded software engineer?
No matter where you are right now, you are probably surround by embedded systems without even realizing it:
An embedded system is a comupter systen that has a dedicated function within a larger mechanical or electronic system.
This could be for example, the microcontroller in your coffee machine or the microcontroller embedded in your RGB Bulbs. But embedded systems are also used in Cars, Planes, Spaceships, and so on.
5 Steps to become an Embedded Software Engineer
Learn to programm in C
C is still the programming language that is dominating the embedded space, even though there are alternatives around, to get a good understanding of the basics. You can and should start by learning C on your desktop computer before you are using it on an embedded device. The reason for this is, that you want to learn one thing at a time.
A good introduction to the C programming language is the C in 4 hours course.
Learn the basics of electronics
Working with embedded systems you are very close to the electronics side of things, so you need to understand the basics here, what is a resistor, how does an analog to digital converter work etc.
An introduction to electronics basics can be found here.
Get started with Arduino
While most of the commercial system will not use Arduino, it is great for self-taught embedded software engineers for two reasons:
- It provides a nice abstraction layer to some of the more advanced embedded system topics and therefore is easier to learn as a barebone microcontroller system.
- It has a very large community, so it is easy to find project ideas, blog posts and solutions to your problems because chances are you are not the first person that has this problem.
Take the next step and use a more barebone microcontroller.
Once you feel comfortable with the Arduino environment you can start exploring other system, like for instance the STM32 Nucleo boards, that give you even more direct access to the hardware.
Never stop learning
Now you should be able to develop your first projects, from this point on just keep learning, increase the complexity and difficulty of your project, and have fun!