Be a Tool

For ages developers and business people have been trying to get to the heart of the usability question. What things, or ideally, what one underlying factor determines the greatness of an interface… or better yet, a tool?One of the questions I ask myself is, what makes Google, Gmail, the Mac, Basecamp AND bash and vi all great? Could there possibly be something that all great interfaces have in common? Better yet, why stop there–what makes iPods and staplers and cars so cool? Why do people love Moleskine notebooks?

1 – The Real World

One of the first parts of the interface question lies in the physical world. The mind more easily grasps how tools and appliances work than how complicated mechanisms work. We definitely prefer going to the toaster and then to the fridge, over having one big clumpy appliance that toasts, freezes and blends.

The only reason that integrated solutions are appreciated is that they all work together according to one paradigm. But when you can eg. cut and paste or drag and drop across unrelated applications, then integration becomes of no use. Even if MS Office thinks that spreadsheets and sales presentations are both “documents,” we think more in terms of context. Just as granny knew whether to use a typewriter or a calculator, it feels natural to use different tools for different things.

Even though we have “MS Office,” people clearly refer to using “Word” or “Excel” depending on the context. Unlike MS Works, which was a bunch of bad apps that could talk to each other at a time when no others could, MS Office understands that integration is all about several tools or appliances that share a useful paradigm (eg. cut and paste).

2 – Smart integration

We see it to some degree in Gmail. Gmail doesn’t really require you to use anything else. It happens to have integration with Google Calendar, and Google Documents, but it’s all optional. On the Gmail side, it doesn’t piss anyone off because Google Documents is only one of the options–you can download documents or even see them in HTML. So it’s not quite an MS Works all-in-one, it’s more like MS Office. Independent apps that just happen to work well together.

3 – The Brain and the Domain

Most of the time, a great tool comes as close as possible to integrating into the way we think about the problem domain. Spreadsheets are great because it all starts with how you’d do it on paper. You write out a bunch of numbers. Then you want to add them at the bottom. Or on the side? You put labels… somewhere. It really just enhances the way you’d naturally do things. Just general-purpose enough to act like pen-and-paper on crack. It’s just LIKE writing down your budget on a napkin, except that with the napkin, as soon as you try changing a value or two, you have to recalculate yourself. So the spreadsheet JUST does what you’d do yourself, only better.

Similarly, Basecamp just acts like glorified pencil-and-paper. And it’s really reflected in the names 37 Signals use for their other products: Basecamp, Campfire. Why use Campfire? You’re basically trying to emulate the water cooler or the conference room. If you take Campfire and add too many features, it’s not a camp fire anymore. It’s a can-opening, waffle-making fridge that also offers online chat. What’s wrong with that?

An improved tool is one that does its own job better, not just more jobs badly.

So this says to me that the optimal interface or tool is:
“The same as you would do by hand, but BETTER.”

4 – Complicated Really Means Mental Reflexes

Poor interfaces often occur when we try to go beyond that principle. When we try to get too complicated.

I mean, we already know this, but how exactly? It reminds me of something I started to understand through sports and martial arts. That it wasn’t about reflexes or how fast you move. That one of the main factors in success was training your mental reflexes – by which I meant your reflex to make certain decisions. It’s the difference between having the reflex of turning off or on a light when you enter or leave a room, and having the reflex of thinking, “do I need this light on?” In Judo, it would be the split-second decision, do I block this throw or go with it and try to turn it around? THAT is what clearly differentiates the master from the amateur.

Because it’s hard.

So that’s why poor tools cause you to have to make a lot of split-second decisions. Right, do I click on X or Y to do Z? Or worse, having to really think through how something is going to work.

Tasks and tools feel complicated when they require mental reflexes.

5 – Complexity Can Be Simple

This doesn’t mean that interfaces can’t do complex things. But the key is that they have to reflect the way people think about the problem domain.

What’s great about vi is that it does just that. Although this infamous text editor is, well, infamously hard to learn, those who succeed in learning it well, love it. What’s so great about this old hacker tool?

When we edit text, we think in terms of “delete those three words” or “replace the X in ‘thxre’ with an E” or “delete everything up to the word ‘hand’.” So even though vi is a real “challenge” to start using, it’s only because of the memorization. Once you get it, you just feel like you can FLY. Why? Because all of a sudden you’re freed from the old word processor thing of “select a group of letters and then press delete.” You can just do what you MEAN. That’s obviously why MS made its mouse selection snap to words by default: because they knew that this is usually what we want to do. But it’s annoying when it isn’t what you want.

Comparatively, vi does *exactly* what you want, almost as you think it.

6 – Lego Blocks Are Easy and Fun

Also, you take the elements humans already understand and they can use them to build complex tasks, just like a child playing with Lego. In a paint/drawing program like the GIMP or Inkscape, you have basic elements–brushes, type, boxes, circles, etc. But by keeping the elements simple and fine-grained, we can do all sorts of things with them. Ditto for Excel.

Another common thing is languages. The vi editor works based on a very simple atomic language. Want to move forward a word? “w”. End of line? “$”. Delete a word? “dw.” Delete to the end of the line? “d$”. Language is built into the human brain, so it’s part of how we think. Knowing what “$” means isn’t intuitive, but once you get the idea, the interface directly follows your thought patterns.

Google does this well with Gmail. It’s a little harder because it’s web-based, but they have “gi” to go back to the inbox, for example. The “g” is a verb meaning “go to” and of course “i” represents the inbox. Simple language.


  1. Be a tool. Mostly this means sticking to a set of functions that naturally go well together, and focusing on doing one function well rather than adding new functionality.
  2. Work the way we think. How do people think about the problem domain? What is the simplest, pen-and-paper, old-school approach? How can you work the same way, only better?