One of the biggest dreams anyone has is to make a living doing what they love. For all hackers, makers, and DIYers with a passion for embedded systems, it may make sense initially to pursue embedded systems design as a possible career, but without so much information on the types of qualifications or steps needed to actually secure a job offer, it may seem daunting to try and break into the field.
YouTuber [iAyan Pahwa] currently works as an embedded software engineer, having been in the field for two years, with prior experience as a hobbyist working with microcontrollers, motors, and programming in the embedded domain. In this video, embedded below, he provides his take on what you need to know to get yourself that first job.
Embedded systems jobs tend to pay well and have plenty of opportunities to work on interesting projects. Since consumer electronics exist in all industries, you won’t have any lack of companies looking to hire someone with embedded systems knowledge.
These roles typically deal with schematic layout, embedded board design, power electronics, PCB design, and tasks that rely on the analog domain. You’ll need to be able to use some CAD and EDA software and have experience with analog debugging.
While there are tons of opportunities in embedded hardware, [Pahwa] mostly sticks to talking about breaking into embedded software.
Most software engineers work in C, working on boot loaders, middleware, or kernel development. Classes to look for include CS50 (for basic C), learning to program device drivers, and systems programming.
In addition, learning to program microcontrollers is essential. Even if you end up going into VLSI or electronic control automation, at least learning to program an Arduino is a very helpful step to digging deeper into the hardware aspects of embedded systems. While Arduino is programmed in a C++ based language, programmers familiar with C shouldn’t have any issue with the syntax.
Learning to program microcontrollers in C or Assembly is necessary to be able to optimize your code. Being able to understand computer architecture and registers increases your knowledge of the internal design of microcontrollers and how they are used in production. Common questions you will encounter include stack pointers, left and right shifting, moving registers, and how to control memory.
Beyond understanding the different processors used in industry, understanding operating systems is also helpful, especially learning the ins and outs of Linux. You’ll probably be asked about system calls, filesystems, and command line during interviews to test your comfort within the Linux environment. Hardware descriptor languages (HDLs) like Verilog or VHDL are also common skills required for embedded software engineers.
[Pahwa] goes a lot more into detail about specific tips for students studying embedded systems looking to ace their interviews for embedded systems roles, as well as for anyone uncertain about whether they’re truly passionate about this industry.
A lot of the skills that embedded systems engineers have are picked up, and chances are if you’re already a hobbyist, you may already be familiar with many of the tools and processes necessary for embedded systems. Skills like debugging Assembly and working with data sheets for unfamiliar microcontrollers can only come with practice and time, so spending time working on projects and familiarizing yourself with existing environments is crucial for success in the field.
Most of all, staying motivated and seeking the expertise of others already in the field is a huge asset. Since the field is so broad, there is no limit to the opportunities you’ll find and the resources available for an aspiring embedded systems engineer.