“Perfection is achieved not when there is nothing left to add, but when there is nothing left to take away”

– Antoine de Saint-Exupery

Designing an engaging and pleasant user experience is a very fragile art. It takes painstaking work to distill the power of a website or software into something that the everyday user can understand. But products from Twitter to Minecraft have become phenomenal successes by crafting their UX from very simple concepts. I dub these concepts “primitives”.

##What is a primitive? A primitive is a fundamental building block from which you can build more complicated things. Your computer screen can display millions of colors but they can all be described as a combination of three “primitive” colors - red, green and blue. All of Western music is built up from the 12 notes of the chromatic scale and the rests between them.

A user experience is also composed of primitives. Consider Facebook for example; the entire site consists of two things: posts and likes. Everything from timeline to events is just a stream of posts presented in different formats and contexts. Extraneous interactions that could not be represented by these (such as “pokes” and Facebook Gifts) have been removed or fallen out of favor.

Primitives are the key to designing an experience that your users will fall in love with. Picking the right ones results in a sense of familiarity that keeps competitors from poaching your user base. Specifically, a good UX primitive has two qualities:

###Minimalism Minimalist primitives are useful out of the box but allow room for experimentation. They enable “emergent properties,” which are interactions that your users invent without your intervention.

image Users invented retweets by simply prepending “RT” before messages

Twitter has used minimalism and emergent properties to great effect. The concept of retweets and hashtags emerged organically from Twitter’s users, who invented them using just 140 character tweets and the “mention” feature. Only later did they formally become part of the product.

Trello allows users to create cards and put them into lists. Because of its simplicity, it is possible to use Trello for task management concepts ranging from a simple to-do list to a “Kanban” system that Toyota uses to manage its factories.

It is of course possible to go too far with minimalism. Google Wave had a user experience that was so generalized that no one had any idea how to use it. Instead of encouraging ingenuity, it just resulted in frustration.

###Composability In addition to being minimalist, the building blocks of your software’s UX should be composable. Having a set of composable primitives means that basic concepts can be combined in different permutations to express more complex interactions. This means that users can “discover” advanced techniques by building on their previous knowledge, rather than having to read how-to guides.


This window contains most of the magic of Photoshop

Composability is most often seen in application that are designed for “creators.” Almost every advanced effect in Photoshop is a clever combination of several filters and layer styles. Every seemingly magical keystroke in Vim is a sentence of the form “verb-preposition-subject”. Composability allows users to do hundreds of different things without having to remember hundreds of different things.

##Stretching the definition of UX These simple principles apply for any type of software interaction, from designing web sites to devising a new programming language. While I use these principles when designing clean and powerful APIs for developers, the same concepts can be used for all software.