With The Internet of Things, software development enters a whole new dimension.
As the IT world explodes into millions of points of contact thanks to the Internet of Things, it's creating new opportunities and challenges for the people that will be building solutions accordingly. The question is -- will it be more opportunity or more challenge?
Photo: Joe McKendrick
The number of developers currently working on IoT applications has increased 34% since last year to just over 6.2 million, according to estimates from Evans Data. The analyst firm adds that in addition, the increase of development for mobile devices, up 14% since last year, has led to smartphones being the most commonly connected IoT platform.
So, the question is, will six million-plus developers even be enough to handle the workloads that the exploding IoT will bring?
A recent piece posted at Ozy cautions that a hyperconnected future -- with 20 billion devices and up -- "could present a startling shortage of developers with the skill sets needed to build apps and meet demand. By 2020 there could be a deficit of five million to 10 million developers."
"There's this massive expectation of software going where no one has gone before," Sam Ramji, CEO of Cloud Foundry Foundation, is quoted as saying in the Ozy article. The article went on to quote Cisco's Doug Bellin, who explains the opportunity/challenge:
"We'll be unearthing and analyzing data in unheard-of ways, adding a whole new layer of intelligence that will transform business. Because with up to triple the number of connected devices at their fingertips, engineers will be working in 'real-time rather than through the rearview mirror' -- in other words, on-the-spot or proactive computing instead of reactive computing. That could lead to more sophisticated machinery that advances already fancy developments with smart turbines, which now use data that explains how the machines interact with the landscape and the wind to optimize efficiency. Or it could lead to engineers writing code to funnel terabytes of data from jet engines into the cloud, where it's analyzed and translated into meaningful insights to cut costs in areas like fuel or maintenance. "
It's not just a shortage of traditional development skills, but also a re-alignment and reshaping of development itself to meet these new possibilities. For example, developers may have adjust the cadence of their work to multiple layers of community input. I recently heard from Mance Harmon, head of architecture at Ping Identity, who discussed the implications of IoT on the development world. There certain skills required to build and manage blockchain-enabled IoT networks,
'Distributed consensus algorithms, like blockchain and hashgraph, require developers to think about the development process differently," Harmon says. "The order of transactions flowing through the network isn't settled until the community collectively agrees on the order. An application may receive a transaction, but may decide not to act on the information until the community agrees on the order of transaction relative to other transactions."
Alternatively, Harmon continues, "in some applications it may be appropriate to immediately act on the information, and then make the necessary corrections if the community agrees on a different consensus order.In some cases, a developer might want to go ahead and use the transaction prior to reaching community consensus."
Harmon provides the example of developing an IoT game, a version of Pokemon Go that interacts with sensors and things scattered throughout the environment. "Transactions received from the network may be reflected immediately in what is rendered on the screen of the smartphone or VR goggles," he explains. "If the community decides that the order of the transactions should be changed, then the updates are made as appropriate to what is rendered on the screen.On the other hand, in a distributed stock market, matches between buyers and sellers would not be reflected in the ticker tape until after the community has reached consensus.These are not design considerations that most developers have encountered before."
More of my discussion with Harmon is posted at RTInsights, in which he talked about the distinctions between open and "permissioned" networks.