IoT apps = DCOS + Web stack
TL;DR: In order to successfully build, deploy and operate IoT apps, you need two things: the Datacenter Operating System (DCOS) and the Web stack (HTML/CSS/JS).

I’ve been developing Web apps since ca. 1996: I learned Java (back then at least Sun thought that applets are the way to go, so I worked through things like Scribble — yes, I’m that old). I wrote my own CMS in JSP (evaluated OpenCMS which back in 2002 or so was just not usable) for a customer and went through all the funny and not so funny languages; I will admit, I also did PHP … I was young and needed the money.

Equally, on the backend side of things I’ve used MySQL, PostrgeSQL, MongoDB, Redis, Neo4j, CouchDB, a number of RDF stores, as well as many more things I prefer not to remember.
If you like, I’m a developer turned devop, and the latter mainly due to me joining MapR Technologies, in 2013, where I was fortunate enough to learn everything about networking, storage and OS-level admin stuff from a number of the most talented systems and ops people I am aware of (clush, anyone? :).

Last but not least, while being active at W3C from 2006 to 2012 I’ve lived through the HTML(5) and also the RDFa/microdata wars. I think it’s safe to say that the Web stack has stabilised; we got rid of Flash etc. and now have a powerful set of technologies incl. HTML, CSS and JavaScript — as well as an array of JS libs, more than I care to count — at our disposal, allowing us to create responsive, cross-platform Web apps. This front-end stack is typically what also drives IoT apps.
It’s somewhat strange, however, to witness how we deal with the backend(s) of IoT applications. We still behave as if it is 1996.
We provision nodes (on-premise or in the cloud), we keep track of their IP addresses, we deploy databases, datastores and query engines on a 1:1 basis and re-invent the wheel when it comes down to things like fault tolerance and fail-over, as well as scaling our apps.
Why? Because change is hard and a new paradigm takes time to settle.

The new paradigm I’m talking about is the DCOS-based application development.
In a nutshell, it means that you focus on the business logic rather than on infrastructure issues.
You develop, CI, CD and operate your applications in a scalable, elastic, robust and agile manner.
How?
I will tell you. Soon.