Embedded systems are maybe the most complex part of an integrated IoT solution.
Looking at my company's experience I can say that most programmers that come to build IoT systems have to have additional experience if they want to work with hardware.
Customers that want to hire IoT developers also need to have a basic understanding of what skills his future contractors must have.
In this article, I will explain what IoT hardware development skills are important to build Internet of Things solutions. Some of them are easy to obtain, some are complex and require extra effort - yet they all are crucial.
Important skills for IoT developers
Let's take a look at a set of skills important for any IoT software developer.
C/C++ Programming language
The first step developers take in learning embedded development is choosing the right language.
Embedded systems could be programmed with both high-level and low-level languages. C/C++ is perfect for high-level programming.
Programmers who want to start a career in IoT need to learn C/C++. It is fundamental for IoT and embedded programming in particular.
Most of the already developed embedded solutions support C/C++. Such solutions' code is readable, easy to debug, and perfect for programming output and input devices.
Microcontroller and Microprocessor Fundamentals
Microprocessors and microcontrollers are important parts of every IoT hardware. Understanding how they work is valuable knowledge.
A microcontroller is a CPU of IoT device with its own RAM and ROM. Peripherals such as audio/video codecs can be connected to microcontrollers too.
A complex IoT system may require several microcontrollers interconnected to "rule" upon a network of other devices.
A good hardware developer who works with microprocessors also needs to understand capabilities and limitations of the target architecture.
This point is a little bit controversial because encompasses a diverse set of skills. The list of these skills could change by 100% from one project to another, but still, I will try to make an example.
Let's take switch debouncing. Sometimes, switches in electronics bounce when they are moved to a new direction. In embedded systems, this event can cause problems.
A developer needs to debounce switches by either hardware or software configurations. Hardware approach means using configured electronic components that eliminate a change in the state of a switch. Here you need to pay the price for components, physical space and narrowed environment constraints.Software approach means programming a delay that eliminates the effects of switch bounce. You pay for flash/RAM/cycles usage.
You can implement it in hardware and pay the price for components, physical space and narrowed environment constraints. Or you can shortcut to a software generator and pay the price for flash/RAM/cycles usage.
This was an example of a specific hardware knowledge that could be extremely useful on some projects. It is good to be ready for everything, yet I admit that you could be a good developer without it.
Simulation helps to check whether the conceptualized system is useful and will work as planned.
Simulations allow for building a digital representation of a future solution, checking how it will behave under different conditions, what happens when some parameters change.
It is also useful when you have little resources and budget - simulation helps to avoid developing features that will not fit the project. Yet some solutions are restrictively expensive and others may not provide required features.
You can go for Matlab or Simulink.
Despite the complexity, IoT embedded development is an interesting and challenging job. Developers love it because it lets you do something new and set new goals on one's professional development.
This list represents a few important skills that are valuable among IoT embedded engineers but is not limited to.