The key skills that every embedded engineer needs now

Fluency in the programming languages used to write an operating system, such as C: an understanding of hardware at the component level; and an ability to straddle software and hardware with ease—these are all core skill sets of today's embedded engineer.

Given the diverse and ever expanding set of technologies that embedded development encompasses, we wondered what skills are most important for engineers to be competitive in the job market and grow their careers. So, we asked three embedded engineers with a significant number of years designing embedded systems under their collective belts to give us their top recommendations--surmising that if they made it this far in their careers successfully, they must be doing something right.

Rob Oshana, VP Software Engineering Research and Development, NXP

About me: I manage a team of 700 software engineers that builds software for a number of industries including industrial, automotive, mass market, and IoT.

Key skills: Embedded software engineers today still need the “traditional” skills of low level HW/SW programming at the register level, but the skills requirements are continuing to expand.  Embedded engineers today are expected to be familiar with open source technology, such as Linux, Zephyr, Tensorflow, or RISC-V. In fact, open source technology and licensing is becoming ubiquitous in embedded software.  Also, software optimization skills at the SoC level are increasingly important for both performance, memory and increasingly power optimization.  System-level thinking will be more important as embedded engineers are asked to do more with dedicated hardware accelerators like GPU, DSP, video, vision, security, and neural network accelerators.  Building hardware/software systems utilizing these blocks for optimized use cases will increasingly be the norm in embedded computing. 

Matt Liberty, President, Jetperch LLC

About me: I have 25 years of experience in developing hardware and software.  As a consultant and the creator of the DC energy analyzer Joulescope, I have tackled a wide range of projects for various high-tech industries spanning PCB design, FPGA design, embedded C firmware, host software, algorithms, and even servers. I enjoy being a generalist engineer who can execute, but I also enjoy diving into narrow, challenging theoretical problems.

Key skills: For embedded developers working on microcontrollers, you should start with C, git, and test-driven development.  I recommend learning Python, which I find invaluable for tackling every-day tasks from dynamically generating boilerplate code using jinja2 templates to quickly scripting system and stress tests using Cython bindings.  Consider learning Micropython or CircuitPython, especially for rapid prototyping.  Learn more about software security and how to write safer code.  Find a new topic that interests you and explore it, at least to become familiar.  Possible topics include AI, "edge computing," Rust, and the Lattice ECP5 FPGAs plus LiteX. Finally, ensure that you set aside the time to "sharpen the saw" and continue to improve your core skills.

Mike Anderson, Sr. Project Leader - Embedded Systems Architect, The Aerospace Corporation

About me: I have over 40 years in the real-time/embedded fields.  Now, I am an Embedded Systems Architect for a large corporation that specializes in satellite and space operations.  I've ported operating systems, written boot loaders and many device drivers in my career.  As an architect, I need to know both the hardware and the software/firmware to understand how to work within the constraints for the system (CPU speed, RAM, flash storage, etc.) and how to pass requirements down to developers and help them understand how the software needs to be written to meet the overall mission's requirements.  I need to be both a generalist with the 30,000 ft view to help design the overarching system and a specialist with the ability to read a data sheet and determine how to set the write bits in the right registers to achieve what needs to be done and help developers debug issues.

Key skills: Embedded development can take many forms depending on your interests.  Are you more interested in hardware, software or even firmware?  If you want to go beyond being an applications programmer, then you'll need to understand something of the hardware.  You don't need to be an electrical engineer or a chip designer.  But, you should understand things like address and data buses, interface buses like I2C and SPI and how GPIOs work.  You also should have some basic electronics background about things like GPIOs and their associated voltages.  E.g., you 've got a 3.3v GPIO that's 5V tolerant.  This helps you understand the basics of interfacing your embedded hardware to the real world. 

Beyond that, you need to decide if you're interested in device drivers, porting the operating system or getting the operating system running from scratch.  These all require the ability to read the manufacturer's data sheets, know what a register is and how to manipulate bits within registers.  On the other hand, if you're not interested in the close-to-the-metal stuff and want to focus on software, then is the application simply embedded (i.e., resource constrained) or does it have real-time and/or safety-critical implications? The embedded, real-time and safety-critical are all related in many ways, but they're not the same thing and they all require slightly different skill sets.  All of these skill sets can be learned.  But, most folks are not in a position to try to tackle all of these areas - especially early in their career.  But, you can have a plan that started with "just" embedded with resource constraints.  Then, move to real-time (both soft- and hard-real time).  And then finally to safety-critical (the most demanding of the real-time domains because of the consequences of a poor design).

Get deep insights from industry subject matter experts into the latest technologies and developments and how embedded developer are tackling the issues of engineering at the edge, ultra-low power AI processing, and developing secure IoT devices at Embedded Innovation Week, September 28-October 1. Check out the schedule and register now for this free, digital event.

RELATED: 

Penn State receives sensors to enhance student education

An Essential Online Resource for Embedded Developers