How is UX for IoT different?

I don’t consider myself a designer, I’m a hacker. I mash up stuff, that is to say, I take a bunch of different things and make them a single useful thing, or I take something and make it do something it was not originally designed to do.

In other words, it’s not very often I have to think about the UX (User eXperience) from a clean sheet of paper.

Designing for IoT comes with a bunch of challenges that will be new to designers accustomed to pure digital services. How tricky these challenges prove will depend on:

  • The maturity of the technology you’re working with
  • The context of use or expectations your users have of the system
  • The complexity of your service (e.g. how many devices the user has to interact with).
  • Below is a summary of the key differences between UX for IoT and UX for digital services.

    It’s a good read. I really enjoyed thinking about the different aspects that go into designing for the best user experience.
    Tempted as I am to quote every point they make, I will narrow it down to the following;

    IoT devices come in a wide variety of form factors, with varying input and output capabilities. Some may have screens, such as heating controllers or washing machines. Some may have other ways of communicating with us (such as flashing LEDs or sounds).

    Some may have no input or output capabilities at all and are unable to tell us directly what they are doing. Interactions might be handled by web or smartphone apps. Despite the differences in form factors, users need to feel as if they are using a coherent service rather than a bunch of disjointed UIs.

    At this stage I have mostly been using either a smartphone or a web browser as my UI. (User Interface), so its been nice to have plenty of space and present all the data I care about to the the user (me).
    That said, I need to start thinking about more minimal applications. Like they say, what if all I have is an LED.
    Is it single color or multi? How do I convey all the states the device has to offer to the user.
    My memory is shot at the best of times, memorizing flash codes is just not an option…….
    Then there is the last point they raise, making sure that no matter what the service or device I am using, how do I make sure that the user feels that they are all part of the one experience?

    We don’t expect internet-like failures from the real world

    It’s frustrating when a web page is slow to download or a Skype call fails. But we accept that these irritations are just part of using the Internet. By contrast, real-world objects respond to us immediately and reliably.

    When we interact with a physical device over the Internet, that interaction is subject to the same latency and reliability issues as any other Internet communication. So, there’s the potential for delays in response and for our requests and commands to go missing altogether. This could make the real world start to feel very broken. Imagine if you turned your lights on and they took two minutes to respond, or failed to come on at all.

    This one is huge. It has been on my mind for a long time.
    If a device HAS to phone home to change state, I have a lot of alarm bells ringing in my head right from the very start.
    Most of what I have built at my house works in the confines of my home network. That is to say, if my Internet connection goes down, most of my house still works.
    Ok, good, I can check that one off the list, but the latency issue is still an issue.
    My mashup code is not always as efficient as it could be….. that means it takes time for the digital signal to pass from one process to another. At times it lags. Other times it’s snappy.
    This is something I am going to have to change the way I think, its not just about my code, its about the user experience and what they take away from using the system.

    Many IoT devices run on batteries and need to conserve electricity. Maintaining network connections uses a lot of power, so they only connect intermittently. This means that parts of the system can be out of sync with each other, creating discontinuities in the user experience. For example, imagine your heating is set to 19 degrees celsius. You use the heating app on your phone to turn it up to 21C, but it takes a couple of minutes for your battery powered heating controller to go online to check for new instructions. During this time, the phone says 21C, and the controller says 19C.

    I’m just on the cusp of this one…. Just now starting to look at a few devices that can exhibit this delay….
    It never occurred to me that this out of sync issue is simply poor design.
    Part of that stems from the fact that I am both the creator and the consumer. I know why its out of sync and that it will (eventually) get in sync, but that’s just lame. The whole point of a lot of what I work on is to help others. To give them tools to solve similar challenges in their work places.
    In other words. I am a designer, and I need to start thinking like one!

    Code can run in many more places

    The configuration of devices and code that makes a system work is called the system model. In an ideal world, users should not have to care about this. We don’t need to understand how conventional Internet services, like Amazon, work in order to use them successfully. But as a consumer of an IoT service right now, you can’t always get away from some of this technical detail.

    A typical IoT service is composed of:

  • one or more embedded devices
  • a cloud service
  • perhaps a gateway device
  • one or more control apps running on a different device, such as a mobile, tablet, or computer.
  • Yeah. Pretty much knew this, and have dealt with it most of my life, but (again) never thought of it as a design challenge (or issue).

    If I have whet your appetite, then please check out the whole article. It really is an interesting read.

    My takeaway?
    I have a lot of work to do and a new hat to wear.