Many companies face a tough challenge: Connecting their embedded systems to the Internet of Things (IoT). To do this, code must be written by a software engineer. But what kind of software engineer do you need to write these types of applications?
You may or may not already have software engineers on your team. In either case, it’s important to understand that software engineers dealing with embedded systems are very different from other types of software engineers—including the enterprise software engineers on your development team.
How so? It’s not that embedded systems software engineers are any smarter or better than enterprise engineers; it’s the environment of embedded systems that makes them different. Let’s take a closer look.
Understanding the physical system
Enterprise engineers building cloud accounting software, for example, generally don’t know what physical systems it is going to run on, or the specific location from where it will run. It’s just going to run in the cloud somewhere. They have a set of languages and frameworks to use, but really don’t know if it’s going to run in a rack somewhere in Colorado, on a server inside a company, or on a Raspberry Pi. For the vast majority of cases, this information simply isn’t necessary to write a perfectly good enterprise application for the cloud.
Embedded engineers, on the other hand, know exactly what chip their stuff is going to be running on. They know the processor, down to the exact version, because that matters when they need to talk to sensors in their system. Hardware interfaces matter, a lot, especially with IoT devices. Embedded systems engineers need to understand the physical system down to the smallest detail, and therefore work directly with the hardware designers. In most cases, they end up reviewing and requesting changes involving the hardware. Sometimes they don’t have that luxury, and just have to work with the system as is, somehow connecting it to the Internet of Things. That’s not the perfect scenario, but is something an embedded engineer encounters.
Other physical constraints the embedded engineer faces when developing software are:
- Harsh environments
- Limited space
- Power availability
- Constricted memory or processing options
- Difficult communication connectivity
These things require a skill set unique to an embedded engineer. Embedded engineers have to know, in detail, about the physical system, because they are interfacing at that level.
Domain expertise differs
Back to our cloud accounting example, the enterprise engineer has to know a lot about business systems for the application to be viable in the business environment. Embedded system engineers need to know something about the domain that the system is in, but generally are not deep domain experts. It’s more important that they have general embedded system knowledge.
Let your domain experts focus on your domain
Your domain experts are a rare commodity. Ideally, they focus on the specifics of your domain, and not the “rest of the stuff.” Every embedded system has a few things in common, and good embedded engineers are well-versed in these areas:
- Receiving data
- Rate that data is received
- How that data is processed
- Response rate
- Communication and environmental limitations
- User interface
- Securing the system and data
In many ways, this list requires the same skill set if you’re developing an embedded system for an HVAC system or a petroleum metering system. A good embedded engineer can form a common vocabulary with your domain experts to address these things and free up your domain expert to work on other projects.
You might have to look outside for help
Whether you have a large or small team, you may just need a few extra sets of hands to handle the common elements of building an embedded system to free up your domain experts to work on important domain issues.
Or, if you discover that you don’t have the embedded software engineering expertise in-house, you’ll end up looking for a company that possesses the knowledge and understanding of embedded systems. Understand that these people don’t need to be domain experts in your industry; they need domain expertise in developing embedded systems.
Using the criteria outlined above, find a company with extensive experience developing embedded systems for companies that are in the same situation as you find yourself. Make sure whomever you choose has the same level of domain expertise in embedded systems as the level of your team’s domain expertise in your industry.