By Mychal McCabe (@mychalmccabe)
Application development and application developers have enjoyed a golden age recently, with apps going mainstream thanks to the massive popularity of mobile devices running either iOS or Android and with clear cut winners in the IT domain who have made it easy to extend their platforms.
But what about the IoT application development space?
In 2014 Gartner placed IoT at the top of their hype cycle, the so-called “Peak of Inflated Expectations”. While as Kevin Ashton helpfully pointed out to me on Twitter, the Hype Cycle only refers to how Gartner’s analysts are feeling, they felt exactly the same way one year later — In 2015 IoT was once again at the Peak of Inflated Exectations.
In other words, we’re a long way from maturity… and it shows. In a survey of IoT developers released earlier this year, seventy-five percent were to some degree excited about IoT, only half felt they have the skills, resources and technological tools to deliver on IoT expectations, and fewer than 25% had apps generating any revenue.
And we haven’t even entered what Gartner calls the ‘Trough of Disillusionment’…
Part of the challenge clearly has to do with the nature of embedded systems and what might reasonably be characterized as their inherent complexity. Network configuration, device drivers, BSPs, and all the other nuances that go along with hardware dependent code.
In a survey we conducted late last year of senior technology leaders from companies squarely in the embedded domain, multiple participants identified diminishing expertise below the application layer not as a concern, but as the reality in their engineering departments. As one customer put it,”Your value is,’I don’t have to develop that.'”
While the vision of IoT as a system of systems, with pervasive intelligence spanning from data center to edge is clear enough, how do you make it a reality? How do you push applications down past the gateway, past the large devices, and on to very small devices or even sensors with little to no knowledge of embedded systems?
Around the IoT water cooler, at the tradeshows and other industry events that keep cropping up, everyone is comfortable talking about the challenges of making sense of the massive amounts of device data coming their way, but this belies the fact that many systems send only a fraction of the data they generate (in some cases as little as 1%), that the data usually isn’t anything like real-time, and most interactions with data involve a snapshot or generalized view of the system state.
Then there’s security. When systems include humans and high-powered devices like PCs or servers, it’s easy to implement something like VPN or firewall… how do you accomplish similar results with a low-power device that doesn’t have a human in the loop, for devices running an OS that weighs few than 20KB running applications that weigh 2-3KB?
Until the current period of immaturity ends and the first round of best practices and standards emerge, how will the hard work get done?
And how will you engage in that hard work if your background is in application development rather than device development?