The Internet of Things is supposed to describe a world where connected devices improve our lives. But an embedded engineer finds crippling tradeoffs in every solution today.
Let me introduce myself: I'm an embedded software developer. As far as signal processing, processor selection, battery handling, interfaces to peripherals, and optimization goes, well, I've got those skills nailed.
But I've discovered that working with a connected device requires a fairly significant expansion of those skills. I should point out that it's hard to find this complete skill set in one individual: The diversification of computer science means that deeply embedded engineers often have trouble talking to server engineers
As a developer, cost, functionality, and perceived ease-of-use influence my technology choices. To that end, I've connected devices via BTLE, cell modems, Broadcom 802.11 WiFi chips with MCUs running TCP/IP stacks, other WiFi chips that have serial interfaces, and Electric Imp's WiFi cloud solution. But no matter how careful I am in the selection process, once I've started working on a design I've never come across a connectivity solution that didn't make me wish I'd chosen something -- anything -- else.
Moreover, I would not want to give any of the connected devices I've created to my non-geek friends. The reason is that, for a user, setup is a larger barrier than is generally accepted by device manufacturers. As wireless costs come down, the configuration remains an unsolved issue, which causes products to have a higher support cost than expected. Security, too, is an issue that sabotages usability, leading grandma to have a 190-character password scribbled on a sticky note that was once on top of her router.
Even if you have a broad background (or a large team), there is no ideal connectivity solution. Let me repeat: There is no ideal connectivity solution. Each technology has its advantages, sure, but the disadvantages can far outweigh the positives.