Note: This article primarily addresses IoT from the perspective of professional/commercial software development, and is not intended to diminish the great work being done by hobbyist and makers…after all without devices and sensors you can’t have IoT!
After a recent speaking engagement up in Orlando we went out to a local establishment to continue the discussion. I very much enjoy these conversations. During these discussion we started talking about some of the work we are doing and the topic came up if these projects were IoT. I know this seems like a semantic, but I’m starting to think it’s important to provide a better definition of what makes an IoT implementation.
First let me say my early background was in designing small computers called embedded systems and writing the firmware to make these little computers come alive. When I was first introduced to IoT, I was thinking…
I’ve been doing IoT since the early 1990’s, what’s up with all this hype!
A couple years later I was at the AT&T Developer Summit in Las Vegas and figured out the I or Internet was pretty important to IoT in addition to flashing those LEDs. We connected our embedded systems using RS232/485 and so on. I still felt pretty good that I sorta did IoT in the early 90’s.
In early 2017 I decided to change the focus of my business from mobile apps to IoT. Along with this was a search to truly understand what it means to build systems that interactive with hardware in the real world. I can’t remember where I heard this saying but I absolutely love it:
Without Devices & Sensors there can’t be IoT
The converse is also true:
Without the Internet you can’t have IoT
This one also seems obvious but provides the basis for understanding the definition of IoT and why that definition is important. Not to minimize the value and challenge of building some really cool widget with an Arduino, or writing a PC application to control hardware, I will claim this isn’t necessarily IoT. The knowledge you gain from building this sort of software will provide a solid foundation for building IoT solutions.
So why is it important to define IoT?
Building a sophisticated end-to-end IoT application requires a different skill set and way of thinking
Without the understanding of what’s involved with flashing an LED from an Arduino, you won’t be able to do very much on the devices side of IoT, however just because you know how to flash an LED, or for that matter attach a number of sensors off your microcontroller and post data in real time to a cloud service, doesn’t mean you can make a living off of building IoT systems. That’s not saying you can’t sell millions of devices based off of your technology or play a key role in a full IoT implementation.
Building a commercial IoT solution requires you to consider things such as scale both in terms of securely and reliably handling a high volume of messages, as well as managing a large number of devices.
Although without devices and sensors you can’t have IoT, without some way of handling messages and managing those devices you can’t have IoT as well. Over the next few months I’ll be adding some additional posts that discuss this in more detail, including the difference between embedded systems programming and IoT.