If you are contemplating a smartphone app to complement your IoT product, remember, an App is for Life, not just for Christmas.

A slapdash, barely usable, or unmaintained mobile application is probably worse than none at all. If you are not prepared to invest ongoing effort into a mobile application, give serious consideration to just not making one.

The first question you should ask, is “does my product really need a dedicated app?”. Are there system-level services that you can support that will make your product integrate into the mobile platform? Maybe all you need is a URL (or QR code) on the side of your product which links to a setup website or a youtube video.

Let me tell you the story that prompted me to write this post:

We recently bought a new camera, after gravity claimed the last one. You know the type, it’s a Nikanonpus CoolShot that’s weightless, waterproof and WiFi-enabled. After familiarising myself with the basics of using the device, I noodled through a maze of setup menus, and configured its WiFi. Well, I think I did, the camera didn’t seem to have any options to upload photos anywhere, nor show up on a network list. I think you’re supposed to use it as a server, but I’m not sure. There’s probably some information in the 300 page user-manual that we’ve already lost.

So, my next action is to check if there’s a companion mobile App. I type the product name into app search and yes, an app from the manufacturer is there. When I download it, it presents as an app named “WMU”, and sporting an outdated version of the manufacturer’s logo. Catchy name. I start the app. Immediate first impression: EUGH, bloated pixels. This app does not support the native resolution on my iPhone 6 Plus. “How old is this app?”, I asked myself. The App Store listing says the application was last updated 16 months ago (which is quite a while in app terms, but well after the iPhone 6 launch).

I try to use the app to talk to my camera. It tells me “Select a Wi-Fi connection in the smart device ‘Settings’ menu”. This confuses me, so I look through the camera menus. Then I realise it’s talking about my iPhone when it says “smart device”. The app appears to have been built using a multi-platform app-toolkit, without even bothering to localise “iPhone” or “Android” in the respective versions. I resort to looking for help in the app’s menus. “Aha”, I think “a nice prominent ‘Instructions’ button”. I tap it. It opens a web browser and loads a PDF file from the net, on page 1 of 104. Page 1 has links to instructions for various product models. The links do not work. (I loaded the PDF in an app that could follow the page links, and the “instructions” for my product type on page 76 say “refer to your camera’s operating manual”.) I tried the link for “support”; this disappeared into the corporate website with tier upon tier of “choose your country, choose your product” generic menus.

I could go on, but let me sum up: this app would earn you a C-minus in high school ICT class. It is the flagship mobile app intended for interacting with professional and high-end consumer devices from a company with over $10BN in annual revenue and employing over 25,000 people.

Really, Nikanonpus? You couldn’t hire ONE iPhone programmer in your cast of thousands? You outsourced this app to a studio who put their work-experience kid on the job, and knocked out some kind of one-app-fits-all javascript monstrosity that is nothing but an embarrassment to a huge industry leader.

So, what do we learn from this story. If you think you need an app, then your app is probably going to be the public face of your device, the part that customers actually interact with. So to all intents and purposes, IT IS YOUR PRODUCT. You might think your product is a learning thermostat, or a surveillance camera, or a colour-adjustable lightbulb, but all those things are going to be installed up on the ceiling, and never touched again. Your user interface, your app, is your product. Respect your app.

Here is what I advise are the minimum criteria for a companion application for your IoT product:

  • Don’t embarrass yourself. Look at your app installed alongside a page of other apps that a prospective user might have on their phone. If the app’s icon or starting screen is the ugliest one on the page, go back and try harder.
  • Follow native idioms on iPhone and Android. These platforms are different, and a big part of effortless usability is the app user’s immediate familiarity with how your app will operate. Users should already know — without thinking — how to do basic platform tasks, how to navigate menus, how to access settings, how to exchange data with the OS or other apps.
  • Employ permanent development staff, or maintain an ongoing relationship with a studio for quarterly updates (or better), even if the update is just recompiling for the latest SDK version. Do not “buy” an app and consider it a one off expense. The relationship between your IoT product and its app is ongoing and dynamic.
  • Perform regular usability testing. Do not let your programmers build and test the UI alone, I’ve been a programmer, and I know that programmers do not think like other people. Try your app on actual consumers, hire a testing company to convene a focus group or enlist passers-by at the mall. Make the developers watch recordings of users struggling with the app’s interface. Retain someone to do this as their full-time job if you’re at all able to afford it.
  • Provide an introductory tour of your app. Have your app demonstrate itself to the user, and introduce to the user how the app is intended to be used. Make the tutorial both easily dismissible, and able to be re-triggered later. People don’t remember things well until they have learned concepts on which to cascade the memories. Expect and support your users to go through a tutorial a few times as they build their understanding. Look at Apple’s “tips” application for inspiration.
  • Be self contained. Your app should fetch and retain some troubleshooting tips, FAQs and/or documentation which can be read even if the mobile device is off the network. Do not bake the text into the app, but have the app check your servers for help updates weekly or more often. If the customer needs to seek support, you already know their location and product details, don’t ask the customer to re-enter information you already know.
  • Stay up to date with the platform. When Apple or Google* announce a mobile platform OS revision, rebuild and test your app immediately. There is no excuse for having your app not work for a month after the next release of the platform software or hardware.

A mobile application is a big responsibility. It needs to be kept clean, and walked often, and be vaccinated. If you are going to be a grown-up company, you need to commit to this.

*Footnote: it’s sad for early adopters, but Windows phone has fallen to under 1% market share and appears doomed. Bonus tip: stay in touch with which way the platform market is going.

(This post originally appeared on Medium)