The best interface is no interface. In his Don’t Make Me Click talk, Aza Raskin (the son of famous human–computer interface expert Jef Raskin) eloquently explains that the best shovel is a hole.

Don’t Make Me Click by Aza Raskin

Although we still haven’t found a way to make completely invisible apps (hopefully AI will get us there), a good guideline is to only prompt the user as a last resort.

Only prompt the user as a last resort.

For example, if an application needs access to the user’s location, it should first try to call the location API. Only if that fails, should it prompts the user for manual input. Whenever user input is not absolutely necessary, such as when a drop-down only has one option, it shouldn’t be requested.

Today, building an application that follows the above guideline requires a lot of effort. Most people assume that interacting with an API and interacting with a user are completely different things, and have adopted different tools, strategies and abstractions for dealing with them. But what if they were the same things? What if we started thinking about the user as just another API? What if the code for getting the user’s location was the same, whether it ultimately asks the GPS or the user?

What if we started thinking about the user as just another API?

When you start thinking about your entire system as a collection of API calls, and stop thinking about the user as a special case, things become very interesting. You realize that API calls are just functions, and an interesting property of functions is that you can compose them. All you need is the type of inputs and outputs to match, like dominoes.

  • Need access your user’s avatar? The same line of code should be able to access the avatar the user previously selected, or prompt the user with avatars from linked accounts (Facebook, Twitter, Gravatar), the device’s camera roll, the camera, a drawing app, a random avatar generator, or any API that outputs an image (or something that can be converted to an image using other APIs). If necessary, compose the function with image cropping APIs (automated or manual), image resizing APIs, image compression APIs, moderation APIs, etc.

When you realize that the user is just another API, you notice that a lot of existing API concepts naturally apply to it:

  • Caching: Do I already know the user’s answer to this question?

I strongly believe that thinking about the user as an API is the key to the next user interface revolution.

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store