The Internet of Things and App Development


The Internet of Things has been a hot topic for the last 24 months, reaching a fevered pitch in the last few months.  When I was at CES earlier this year, you couldn’t find a company that didn’t have some perspective on the Internet of Things (IoT).  Car companies, consumer electronic companies, even clothing companies were showcasing their new connected products and how the IoT was going to improve the consumer’s experience with their brand.

I’ve been thinking about this and what makes the IoT different than prior versions of connected products.  To me it is two key factors, the level of connectivity and the quality of the software.  Let me explain

Level of connectivity

For decades, large industrial plants and manufacturing facilities have been using real-time and near real-time data to improve the efficiency of their business.  The did this via ethernet connectivity and sometimes expensive satellite and microwave connectivity.  These systems were affordable because the cost of unplanned downtime was so high, that almost any connectivity costs were acceptable.  Additionally, cognitive computing algorithms  were developed around very specific use cases, i.e. pump maintenance schedules, which had to be custom developed based on the specifics of a plant or facility. These finely tuned systems of systems were built around the connectivity and proprietary standards of the hardware in place.

Now the cost of connectivity and level of penetration of simple protocols like TCP/IP are cheap and near ubiquitous.  You can added a wifi or 2G/3G/4G radio into a product very inexpensively, while transmission costs are now bore by most of the end consumers as part of their day to day life.  This is very different than the last few decades, and means that much of the value of a IoT solution, will be in the software’s implementation of the data and consumer’s usage of the device.

Quality of the software

With the mobile revolution over the last 7 years (I go back to June 29th, 2007 when the iPhone was first available – even though had been very happy with a Palm  Treo for years before this), consumers have become used to higher quality of software.  Why do I call it higher quality?  Is it bug free? NO! Is it more functional? No! Is it more atheistically pleasing?  no. What I mean by quality of software is that it is doing what you need when you need it.  Some of the most popular fitness tools in the last few years, are applications on a smart phone – apps like Moves which tracks your walking, biking, and running based on the accelerometer on your phone.  They take advantage of many of the capabilities of the phone, and given that most people keep their phone with them at all times, it becomes the de facto fitness device.  We see the same phenomena with pictures,  the majority of pictures on Flickr, are taken with smart phones.  The same with games, the majority of time spent gaming is spent on smart phones (I made this one up, but I would bet it’s true).

So the software that is running when you need it, on the data that you have with you, and provides you with the insights you need to change your behavior, improve your process, or just better engage in a situation is higher in quality in my opinion.

So why do these matter in the Internet of Things?

In the IoT, devices and software have to work hand in hand to improve processes and a person’s environment.  As developers, we need to understand this aspect of the internet of things.  It’s easy to get consumed by the cool factor, but cool without value isn’t that cool.  So we need to improve our software to better serve our users / customers. And the Internet of Things provides us with a great way of doing this.

Internet of Things applications and things have the ability to provide us as developers with real-time and near real-time feedback on how consumers are using our product.  We should take this information and quickly improve our product to increase its value.  This means letting a consumer know what data we can and do capture, and providing no nonsense, easy to understand terms on how we will use this data to improve the consumer’s experience.

We then have the ability to take this feedback and improve the product or create new ones.  This faster time to feedback is a principle foundation of the ideas behind DevOps.  Another key aspect of DevOps is scale, and the Internet of Things is all about scale for the product/application developer.  While any individual using a IoT device or application is potentially a single node, much more value is gained in the larger scale system where patterns and other insights may be gained to improve a product or application.  And peeling back the insight requires analytics.

So what can I do as a Developer?

First, make sure you are open to your customers on what data you do collect and how it will be used.  Where it makes sense, expose APIs so your customers can extend your application and product, trust me they will come up with even more cool things to do with your application/product than you can image.  And three, take advantage of the faster time to feedback to make your product better.  Remember once you release a product or application, the engagement with your customer is just beginning.  It’s not about the initial sale, but about increasing the value over time.