How to Overcome IoT Challenges and Accelerate Time-to-Market
Discover how to accelerate IoT development through modular coding and automated testing, reducing costs and improving efficiency in diverse hardware environments.
This article was originally published in 2016, and has been republished in 2025.
Operationalize your IoT development
Regardless of the hype you are hearing about the new wave of Internet of Things, one fact remains true, the staggering variety of different use cases and hardware required for implementing a full fledged IoT solution presents a large challenge.
As a result, a significant amount of effort ends up going to new code development, and one off solutions. Let's face it, there isn't a chance that in the near future, all these different technologies are going to be standardized. And because of this, development and integration costs will remain a large factor in the cost of IoT solutions, reducing competitive edge, and keeping prices high.
But what if you could change that...
During Philly Tech Week, I was fortunate to catch a talk with Bulogics about these exact challenges.
The two key points to take away are
Create modular code
This isn't a new idea, by far. Development shops have been creating libraries of existing code bases for years. But, as embedded programming, the type that runs IoT solutions, becomes more mainstream, SI's can benefit from taking the concepts of modern development practices, and integrating them in to their own processes.
Modular coding requires breaking the entire program into smaller, independent, routines. These routines can they be used, and reused, something common in Object Oriented Programming, but not so much in embedded.
Now add documentation, and store in a code library, and all of a sudden, you have a set of reusable, function specific, code. Code that doesn't need to be redeveloped, only customized.
Automate your embedded testing
This is something I'm most excited about. For the past several years, we've seen an explosion of testing frameworks for front end web development, enterprise applications, mobile development such as Android and iOS, etc. By borrowing some of these higher level language concepts, we can further automate our embedded solution development.
Some points to keep in consideration about embedded platforms,
They are memory constrained
They are usually single function devices
This result is, it's very difficult to load your tests in software on a device. But there is hope! Specific testing frameworks, such as Unity and Ceedling allow you to detach code from the hardware, and perform tests without continually re-flashing the device. In fact, you can test code without the device at all. Once successfully tested, this code can be loaded on a multitude of hardware platforms with minimal changes.
To sum things up
By building a code base, and automating testing, SI's are more able to create better hardware solutions, requiring less effort, and turning around deliverables in a shorter time-frame. The automation of testing ensures better quality (assuming the tests are written correctly), and can help bring solutions to market faster, cheaper, and respond quickly to market demands.
Now go operationalize your efforts and stop reinventing the wheel!