This article primarily addresses IoT from the perspective of professional/commercial software development, and is not intended to diminish the excellent work 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 this 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 essential 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 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 of years later I was at the AT&T Developer Summit in Las Vegas and figured out the I or Internet was pretty crucial 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 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 interact with hardware in the real world. I can’t remember where I heard this saying, but I 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 necessary. Not to minimize the value and challenge of building some cool widget with an Arduino, or writing a PC application to control hardware, I claim this isn’t necessarily IoT. The knowledge you gain from building this sort of software provides a solid foundation for building IoT solutions.
So why is it essential 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 many 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 vital role in a full IoT implementation.
Building a commercial IoT solution requires you to consider things such as scale both regarding 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.