A Rambling On Product Design

Design is deciding what matters, then making it visible through hierarchies of information: figuring out what goes in the foreground, what recedes into the background, and what should be omitted altogether. But that definition is still a bit too narrow, because in software the hierarchy of information is fluid. It changes based on context, time and user intent.

In most other design disciplines the hierarchy is static. In software, it has to move. It’s why so many software products end up feeling badly designed even when they’re visually polished. Past a certain level, the problem is not that the typography is bad or the spacing is wrong, the problem is that no one has made a strong enough decision about what matters.

A spreadsheet-like UI is what you get when no hierarchy has been determined, and therefore none can be communicated. If everything is equally important, then the honest interface is a tabular dump. But most software rarely fits that use case.

Figuring out the hierarchy is not a decorative step added at the end. It is the work. In fact it’s one of the most satisfying parts of design because it can only really be discovered through playful experimentation. You keep asking: What does the user want right now? What do they expect to happen next? What is relevant in this moment? What can be safely ignored?

Good design comes from getting unusually honest and often unintuitive answers to these questions.

It’s one reason small apps made by one or two people, designing things they want, are often so good. The person making the product is close to the problem. They can feel, almost bodily, which details matter and which do not. They don’t need to negotiate the hierarchy with a committee.

As teams get bigger, products often become more ‘general’ and less opinionated. A product becoming less opinionated usually means it becomes less focused and more noisy. Once you stop trusting a specific view of what matters, you begin letting everything in. The interface gets more flexible, more comprehensive, and less clear. The signal of real hierarchy gets buried under all the things that might matter to someone.

The best products have the opposite feeling. They seem to know what you want a second before you do. You try something half-expecting it not to work, and it works. Not by accident, but because someone thought carefully enough about the structure of the problem to anticipate that moment. Games are often a good example of this. You try something weird, it works and you smile.

But some software applications also have this feeling. You almost get the sense that the software was designed by someone who has been exactly where you are. Someone who cares about the same things you do. Linear, Things, Zed, Helium Browser. Of the top of my head, these applications, feel like examples of this. The interesting characteristic they all seem to share is how fast they feel. Perhaps that’s just my software fetish but I doubt it. Rather, I think the creators built something they wanted out of pure frustration at not finding it elsewhere and built it while sweating the details.

There’s something deeply human about caring intensely about the shape of a tool. Doing everything you can to build it to fit your vision. Making it for yourself and sharing it with the world.