Friday, October 12, 2018

How HCI and API design are similar

All software needs an interface. Having one makes it possible to use the functionality and consume the data that lives within that software.

Humans use interfaces for software all the time, with the World Wide Web arguably being the biggest interface there is (OK, perhaps some websites aren't the best examples of usefulness in this mass experiment).  But put basically... they allow human-to-system interaction, also known as Human Computer Interaction or HCI for short.

Human Computer Interfaces have the following principles:

  1. They remove complexity:
    By making it clear what each function does (e.g. do not have two ways of doing similar things)
  2. They follow standards:
    By following established conventions (hyperlinks, buttons, tick boxes, etc.) they provide consistency.
  3. They make interaction easier:
    By enabling swift and efficient relationship with the underlying data & processes and providing feedback or a response when something happens.

And Application Programming Interfaces (APIs) play a very similar role, but in a slightly different system-to-system manner. They:

  1. Remove complexity, by (hopefully) providing a single request & response for each individual function
  2. Follow standards, usually in the form of an API specification, to allow consistent development against them
  3. Make interaction with the underlying systems easier via a standard set of methods (GET, POST, DELETE, etc.)

Ultimately, whether interacting with a human or another system... a well designed interface benefits both parties.

No comments: