When I first started to develop embedded software more than 15 years ago, embedded software engineers had a very specific skillset. They were often electrical engineers who not only understood how the low-level hardware worked; they could also write assembly language or C code at that low-level to get the system to meet its real-time requirements. An embedded software engineer had to understand not just the hardware, but also software. The world of bits, bytes, and peripheral registers was the embedded software engineer's domain. In today’s development environment, this no longer seems to be the case.
In the early days of embedded systems, developers used “simple” 8-bit or 16-bit architectures that a developer could master over the course of several months during a development cycle. Over the past several years, many teams have moved to more complex 32-bit architectures. They don’t just include a few peripherals for sampling sensors and communicating, but also hardware for USB, external memory, DMA, TCP/IP, Bluetooth, and many other peripherals that would take a developer perhaps years to truly master.
Embedded systems have started to become extremely complex. The big push to connect every device to the internet to create the IoT is causing a demand for embedded software engineers that has not yet been seen in recent history. This big push is causing a vacuum in which companies can’t find enough embedded software engineers. Instead of training new engineers, they are starting to rely on application developers, who have experience with Windows applications or mobile devices, to develop their real-time embedded software. The problem, of course, is that these engineers don’t understand the low-level hardware, but only high-level application frameworks that do all the work for them.
Interestingly enough, microcontroller manufacturers are currently in a big push to provide developers with high-level software frameworks and tools that abstract out the low-level hardware. This makes it easier for embedded software developers or even application developers to write their application software at a higher level. They do not have to reinvent the wheel by worrying about the low-level hardware and software. As we move toward these high-level abstractions as an industry, we will undoubtedly benefit from decreased costs and time to market. But we may also find that the traditional embedded software engineer, who understands all the bits and bytes, will quickly become extinct.
Future embedded software engineers will have a very different skillset from their traditional predecessors. They will not be masters of bits and bytes or real-time behaviors. In fact, they probably won’t be masters of anything. Instead, they will have high-level application development skills, which means they know a little bit of this and a little bit of that. They’ll know how to call an API to make the hardware do something, but they won’t know why or how it does it. They’ll hope that the APIs work as expected because they won’t have the real-time debugging skills or the knowledge to dive into the registers and find a problem—at least not within a suitable timeframe. These engineers will be far more like Windows programmers—far removed from the hardware.
The extinction of the traditional embedded software developer is not necessarily a bad thing. We’ve seen in the mobile device space how working at a high level can produce rapid innovation and allow teams that might otherwise have been lacking in critical skills to still be successful. As an industry, we just need to be wary and remember that the traditional embedded software engineer is still required to bridge the gap between the hardware and the new embedded application developers. So while universities crank out developers who understand machine vision, machine learning, and many other cutting-edge research areas, the question we might want to be asking is, “Where are we going to get the next generation of embedded software engineers?”
Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost, and time to market. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees including a Masters of Engineering from the University of Michigan. Feel free to contact him at [email protected], at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter.
INSPIRE. COLLABORATE. INNOVATE. Atlantic Design & Manufacturing, part of the largest advanced design and manufacturing industry event on the East Coast, is the annual must-attend trade show for discovering the latest in design engineering. Source from the region's most comprehensive collection of cutting-edge suppliers, deepen your expertise with free, conference-level education, and network with thousands of professionals who can help you advance your projects — and your career. From prototyping to full-scale production, one lap of the show floor will help you overcome your toughest manufacturing challenges and keep you up to speed on innovations transforming the industry. Everything you need to take projects to market faster and more cost effectively is here. Click here to register for your free pass today!