These things I believe about software development and user-interface design.

1. Why write code?

Software is for humans, not for computers.

Software is only as good as the improvement it makes to a human being’s life.

Are we making someone’s job easier? Letting them have more fun? Helping them learn? Helping them keep in touch with friends and family?

Are we making the world a better place?

2. What do people want?

Most people do not want a computer.

They don’t even want software.

For us software developers, this is a painful truth.

If people don’t want a computer, why do they use one?

Email — for writing to other people.

Instant messaging — for talking to other people.

The web browser — for reading what other people have written.

Word processing — for writing something you’re going to print out and show to other people.

Graphics — for creating artwork. To show to other people.

Presentation — for communicating your brilliant plan. To other people.

Games — especially games that you can play online. With other people.

Social networking websites — Enough said.

The computer is merely an intermediary. A poor and frustrating one. It is a necessary evil that people put up with in order to get what they want.

What they want is a better way to talk to each other.

3. Why does software succeed or fail?

We software developers, being not exactly social creatures by nature, must work extra hard to understand the social impact our software will have. If the social effect is not what people want, the software goes unused.

We software developers, being not exactly average users, must work extra hard to understand how average users will relate to our software. We see the trees, they see the forest.

We software developers have often been confused and frustrated when a clearly superior technology fails, while a clearly inferior technology spreads like wildfire and takes over the world.

We were surprised because we want each technology to be judged only by its cleverness, its raw power, the cleanliness of its architecture, the purity of its ideas. We were blind to the user experience, to what each technology meant in the bigger picture of a person’s life.

To the people buying and using the “clearly inferior” technology, exactly the opposite was true.

To the user, the interface is the product.

4. Why is there not more Linux on the desktop?

For open source software to take over the world, we’re going to have to do a lot better at user interfaces than we have been doing.

How do I know?

Open source has already taken over the invisible parts of the world: the servers, the infrastructure, the things users need not touch directly.

Mozilla, the most user-experience-focused of open-source companies, has the most adoption by end-users.

People say things to me like, “Linux is only free if the value of my time is zero.”

These are not coincidences.

At one time, the way of open-source software development was thought impossible. But the techniques were invented. The way became possible; then it became successful. Now the techniques are becoming widely known.

The way to make open-source UI design successful is still unclear. We must invent the techniques.

5. Are users dumb?

User interface design is not about dumbing things down for the poor stupid user.

We software developers, understanding the software as we do, find it easy to look down upon those who lack our understanding.

This is wrong.

Users aren’t dumb. They just have better things to do with their lives than memorizing the internal data model of our screwy software.

When software is hard to use, don’t make excuses for it. Improve it.

When a user makes a mistake, don’t blame the user. Ask how the software misled them. Then fix it.

The user’s time is more valuable than ours. Respect it.

Good UI design is humble.

6. Is UI design marketing?

User interface design is not marketing.

Software developers loathe marketing, so if they think that UI design is marketing, then they will loathe UI design.

The qualities of software that make for a good advertisement or computer-store demo are not the same qualities that make software usable and pleasant to work with long-term, day-in day-out. Often these qualities are opposites.

A shopper may choose the microwave with more buttons, because it seems “more powerful”. However, the shopper will soon find out that it does the same thing as any other microwave, you just have to spend longer figuring out which button to push.

It is easy to fool people into buying something that is against their own best interest.

Don’t do that.

7. What is the task of the UI designer?

Let us talk about that microwave some more.

The microwave with the most buttons may be most popular, but it is not the best microwave.

The best microwave has no buttons at all.

It doesn’t need any buttons because it already knows how long you want your food cooked and how hot. You never need to set the clock, either: it’s just always right.

The no-button microwave may not be reachable, but like a guiding star it shows us the direction we should travel.

Users do not know what interface they want. Users do not know what features they want.

Users know the tasks they want to do, and the problems they have.

We learn more by watching the user work than by asking the user.

The job of the UI designer is to provide what the users need, not what the users say they need.

It is to make tasks easier, not to provide features.

8. Where is the science?

User interface design can be approached scientifically. But usually isn’t.

Until we observe people using our software for real, our design is guesswork and superstition.

These things can be measured and given numbers:

What program features are being used most frequently, and least.

The number of mouse/keyboard interactions required to perform a task.

The time it takes a user to figure out how to do a task.

Rates of error.

How quickly task-completion-time and error-frequency decrease as a user gains experience.

An interface’s efficiency and learnability are empirically determinable quantities.

They are not matters of opinion.

Every user is different, but that’s why we have statistical methods.

The science of design can tell us that interface foo is X% more efficient than interface bar, but bar is Y% more learnable than foo.

Choosing between foo and bar — that’s where the science ends and the art begins.

9. Is change good or bad?

Sometimes the new UI is so much better than the old one that the change is worth the cost.

Sometimes it isn’t.

The trick is knowing when change is worth it.

10. What is the evil of the bad interface?

It is a sin to waste the user’s time, break the user’s train of thought, or lose the user’s work.

Bad user interfaces do all three. Frequently.

Most interfaces are bad.

I do not use the word “sin” lightly.

Because of bad user interfaces, an action taken based on a reasonable assumption or out of habit often results in broken trains of thought, wasted time, and lost work. This is called “user error”, but it isn’t. It is programmer or designer error.

When we blame the user, we teach them that technology is perfect and that the errors are their own. Because technology is hard to use, we are teaching a generation to be afraid of technology. We are teaching a generation to believe in their own stupidity. This is a sin, too.

If everyone thought as you do, I might have to rethink my philosophy of computer glitches:

Computer glitches are gifts from God to help us not worship technology. So, when you get the blue screen of death, just say, “Thank you, Lord. I will not be worshiping this PC today. Blessing it out, maybe, but not worshiping it.”

ALSO: Why does your Ubi 0.5 text say “Jono Xia (née DiCarlo)”? I thought that was for maiden names (i.e. married females). Are you not male?

Hello,
I am an honor student at Troy High School in Fullerton, California, and I have been interested in computer science. As a result, I have chosen a topic within the realm of computer science for my extended essay, which is required for the International Baccalaureate diploma.
More specifically, I have selected the topic of adaptable user interfaces. I have been trying to find some materials applicable to my research; however, I have been having difficulties trying to narrow down the topic, as the paper needs to be in the limit of 4000 words, guided by a specific research question.
I have formed a tentative research question: “Is adaptable user interface a better alternative to managing the interface complexity than adaptive user interface?” However, I’m not quite sure as to how broad of a topic it is, considering that I have a word limit. If I do go with this research question, in what aspects can I compare the two?
Any assistance would be greatly appreciated.

Here’s a user interface issue I’m curious about: A few versions back, Firefox users lost the ability to hand-edit entries in file upload form fields. Clicking in the field to delete an unneeded entry or modify the entry to specify a file with nearly the same full pathname is the same as clicking the Browse… button. If the full pathname is long, you can’t even check to confirm if you’re about to upload the correct file.

There may be a security vulnerability that has been closed by making this change, but why not give users a choice about this feature? Couldn’t there at least be something in about:config that would allow disabling/reenabling this feature as needed?

Thank you very much.
For two reasons:
1. for your inspiring thoughts.
2. for formulating them in a simple and frugal way (saving my time; valuable the more to know that this on the expense of your time).

I would like for you to take the time to convert your site design to be more phone-respOnsive. The edges of the text go outside the boundaries of the screen when I make the type big enough to read by pinch zooming. This kind of attention to detail speaks more loudly and more persuasively than your heartfelt manifesto although of course there is a place in the world for both.🙂