The Internet of Things opens up exciting new opportunities in the world of software development, but it also presents some new challenges.
It's not enough just to adapt a desktop app for the mobile environment. Developers must be aware of key issues that significantly impact the way software is designed and built for the IoT. Some are new challenges, some require a more back-to-basics approach that focuses on key principles which may have been forgotten or overlooked in recent years.
With the majority of devices running on battery power, energy efficiency is hardwired into the DNA of the IoT. There's a huge diversity of hardware that forms the IoT ecosystem with most devices run on SoCs, so you can't build a huge code base. Code must be optimised to ensure every instruction counts.
It may be necessary to add components which proactively monitor and manage the system, for example matching capacity to periods of peak demand or running processes when maximum energy or bandwidth are available. It's also important for apps to have built-in flexibility. That means using concurrent coding, enabling tasks and algorithms to be carried out simultaneously rather than sequentially, while remaining determinate. Many programmers are more used to writing sequential code, so may have to acquire new design patterns.
One of the greatest concerns for developers targeting the IoT is security. We're all aware of recent high-profile security problems involving big companies such as Talk Talk and Yahoo. In response to potentially damaging repercussions, companies such as Apple are adopting a policy of paying if a security bug in their offerings is identified.
Retrospective add-ons are not the answer. It's vital that robust security is taken into account right from the get-go. Involving a security conscious developer in the pre-project planning will ensure safeguards are embedded into the design of the core features and functionality of the app.
Human security is equally important. Installers and end users will need adequate training and monitoring capability to ensure that high security levels are maintained.
IoT devices are often controlling vital services and one simple glitch can cause major disruption. Therefore, IoT app developers need to concentrate even more effort on review and testing, putting in place robust verification procedures at key stages during the product development cycle. In addition, resilience is often mission-critical. Fault finding and evaluation should be essential parts of the post-installation support function.
One of the main challenges that mobile app developers have had to overcome is cross-platform compatibility. In the IoT world, that challenge is on a whole new level, with a much wider variety of devices, many without traditional interfaces such as screens or trackpads. In many IoT devices you are simply relying on sensors for functionality. Building a user experience around sensors can be challenging and requires the programmer to have the skills and knowledge to make the coding effective.
An app which controls an IoT device must enhance the user's lifestyle, not complicate it. If you're designing a program that contributes to aspects of people lifestyle, simplicity is what it's all about.
This is an exciting time to be a developer. More and more businesses are embracing the IoT concept and are looking for expert programmers to help them take full advantage of real-time data available from billions of connected devices. Being aware of and ready for the challenges is the first step to success in this massive global marketplace.
-- Mark Thomas is CEO of Coderus, a software development company in the U.K.