Four keys to successful IoT product software: Using a co-development approach
Implementing IoT successfully and efficiently requires strategic coordination and integration of custom development efforts between embedded, app and cloud software components. A failure to do so has consequences and can delay or even cripple the entire system. At IPS, we approach custom IoT software development by considering requirements of the full stack from the outset. This has afforded us valuable learning on how to overcome the challenges of prioritizing development and creating faster, more complete IoT systems.
It is much like building a house. Imagine how a contractor coordinates the plumber, the electrician and the carpenter, prioritizing the work that needs to be done first and then ramps up the work that can be done simultaneously. Creating an IoT system is very similar to that process in that you need to prioritize the development of cloud, embedded and app software at the right time for it all to work seamlessly together.
The following are four key steps to creating successful IoT software.
1. Managing custom co-development. Managing separate software teams is a big challenge under the best of circumstances. To be effective, it is important to minimize overlap of embedded and application efforts as much as possible, and to prioritize when to start development of the various parts of your IoT deployment. To avoid the dangers lurking in parallel development, prioritize embedded system development early in your process so you can define a clear interface where the app can be integrated. Essentially, you want the embedded system to tell the app software, “Here’s what I can do. And what I can’t do.” Start your app team out on a slow burn and then as the embedded work ramps down, accelerate the app effort.
Whatever development effort you start with (embedded, cloud or app), try to remember the 60% rule. Get your first development effort to 60% complete before spinning up your next team. Once you hit the 60% mark, slow down the first team to stretch out the second half of the development schedule, maximizing the amount of overlap with the other development teams. This gives your early software teams time to mature their product and define clear integration endpoints, while providing a significant amount of team overlap to continue to be agile and address issues that arise later on.
2. Coordinating embedded and app team communications to ensure success. Give serious consideration to your teams’ proximity, and create a regular schedule of cross-team check-ins. This is particularly critical during testing, validating and debugging phases. Consider hosting a couple of cross-team scrums throughout the week, and creating a designated channel in Slack or your favorite real-time communications tool where the two engineering teams can post questions and design decisions that may impact the other team. Whatever your method, regular and deliberate communication between the two integrating software teams is an absolute requirement for the success of your multi-platform IoT connected system.
3. Hammering out a super-well-defined spec. Make sure everything is documented clearly and communicated consistently. Keep efficiency and system security in mind at each juncture and make sure your spec is crystal clear regarding the integration between both embedded and app teams. Lacking documentation on a small single-platform application can be a nuisance, but lacking documentation on a cross-platform connected system is disastrous. Your connected deployment must have clear, well-defined integration endpoints that are formally documented. Having a clear spec to share with external development teams helps to avoid many obstacles, including who’s right and who’s wrong when two integrated applications aren’t behaving properly; misguided assumptions, such as how a system or API is supposed to work; and inefficiencies, such as forcing other developers to learn your API by trial and error.
4. Maximizing priority on the integration phase. The challenges of this phase are immense and often terribly underestimated, resulting in late delivery and delayed product release. After the majority of development is completed in the individual embedded, cloud and app software projects, it’s critical that there is dedicated time for integration. No amount of planning can prepare your application for the problems introduced when you plug it into an external software platform or framework.
To address the challenges of working across the full software stack, this highly effective approach called “co-development” accurately prioritizes the various pieces of IoT product development to arrive at a complete, successful technology as quickly and efficiently as possible. By optimizing the integration process among the various teams and software components, a smooth pathway to your connected IoT system is created.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.