October 31, 2016

Some Problems Are Hard

John Gruber correctly excoriates software designers who believe that users are stupid.

The fundamental problem with most designers of complex systems intended for mass market use is that they decide to hide complexity. They won’t admit it — they’ll deny it even — but it’s because they’re disdainful of their users. They think their users are stupid, so they need to present them with a design for stupid people. If they weren’t stupid they wouldn’t be confused, right?

Gruber is not wrong, but he misses three important phenomena.

Developers are not children. This should be obvious, but a generation of management gurus have insisted – often abetted by designers themselves – that developers are childlike naifs whose enthusiasms must be restrained. This addressed a perceived problem in UI design in the 1980s, one that has been settled for eons everywhere beyond the swamps of the EMACS/vi religious wars, but persists because it feeds the vanity and corporate ambitions of some managers. Developers don’t really believe that users are idiots.

Then again, it’s not unreasonable to believe that users really are stupid. Mass-market software designers can’t talk to all the users; if they did, they wouldn’t have time for design. So lots of experience is simply invisible to designers.

Good experiences are especially invisible. First, when things go right, people smile and get on with their work. If they ever do tell the company about the good experience, management is going to say “thank you” and pocket the credit. Nobody’s going to tell the designers.

Bad experiences sometimes penetrate. Two kinds of voices are especially likely to be heard. First, as we’ve seen in this election, trolls will be heard because being heard is what trolls do. Second, the lonesome and the desperate are likely to get through whatever obstacles the bureaucracy puts in their way. This is a constant that runs through all kinds of software; you can be working on scientific software used exclusively by quantum mechanicians, but even among brilliant physicists you’re going to find some lonely people and some people who've just had everything blow up in their face and intend to blame it on you. So, these are the voices that software designers tend to hear, and in time it’s easy to believe that The Audience is all like that.

A little later, Gruber does get carried away.

If people are confused with a design, the problem is with the design, not with the users.

Sometimes, the design is the problem. Sometimes, it really is the user.

Sometimes, the problem is the problem. Some problems are hard. Long division is, let’s face it, a mess. Quantum mechanics has some nifty moments, but it’s a lot to wrap your head around, too. Kinematics – figuring out how to move a robot arm from here to there – is really hard; it shouldn’t be, but just look how much trouble babies have figuring it out. We can make easy things easy and hard things as simple as we can make them, but that’s all.

Sometimes, software is confusing because the problem is confusing. It’s a mad world.