I know I said I’d write about Google next, but I wanted to comment on the discussion in the comments to Luis’s post on open UIs. Here’s Bradley Kuhn, executive director of the Software Freedom Conservancy:
I think you may have missed on fundamental fact that Tim *completely* ignored: there are many amazingly excellent free software UIs. He can get to this fundamental misconception because of the idea that UIs are somehow monolithically “good” or “bad”. I actually switched to GNU/Linux, in 1992, because the UI was the best available. I’ve tried briefly other UIs, and none of them are better — for the type of user I am: a hacker-mindset who wants single key strokes fully programmable in every application I use. Free Software excels at this sort of user interface.
This is precisely because the majority of people in the communities are those types of users. The only logical conclusion one can make, therefore, is that clearly Free Software communities don’t have enough members from the general population who aren’t these types of users. There is no reason not to believe when Free Software communities become more diverse, UIs that are excellent for other types of users will emerge.
I know exactly what Bradley is talking about here. For more than a decade, I’ve been a religious user of vi, a text editor that’s been popular with geeks since the 1980s. It has many, many features, each of which is invoked using a sequence of esoteric keystrokes. An experienced vi user can edit text much more efficiently than he could using a graphical text editor like Notepad.
But the learning curve is steep; one has to invest hundreds of hours of practice before the investment pays off in higher productivity. And indeed, the learning curve never really flattens: even after ten years and thousands of hours as a vi user, there are still many vi features I haven’t learned because the only way to learn about them is to spend time reading through documentation like this.
So there are two competing theories of user interface quality here. Bradley’s theory says that the best user interface is the one that maximizes the productivity of its most proficient user. Mine says that the best user interface helps a new user become proficient as quickly as possible.
Obviously, there’s no point in saying one of these theories is right and the other is wrong. Bradley should use the tools he finds most useful. But I think it’s pretty obvious that my conception is more broadly applicable. For starters, the technically unsavvy vastly outnumber the technically savvy in the general human population. While power users like Bradley may enjoy learning about and configuring their software tools, most users view this sort of thing as a chore; they want software tools that work without having to think about them too much, just as they want cars that get them to their destination without having to open the hood.
Bradley speculates that free software will start to accommodate these users as more of them join the free software movement. But I think this fundamentally misunderstands the problem. By definition, the users who prefer to spend as little time as possible thinking about a given piece of software are not the kind of users who are going to become volunteer developers for it. The “scratch your own itch” model of software development simply can’t work if the “itch” is that the software demands too much from the user.
With that said, I think it’s a mistake to draw too sharp a distinction between “power users” and the general public. I’m pretty clearly a “power user” when I’m working on my own Mac-based laptop and Android-based phone, yet when I borrow my wife’s Windows laptop and Blackberry phone I spend a fair amount of time poking around trying to figure out how to do basic stuff. Even after I’ve used a product for a while, I still sometimes want to do stuff with it that I haven’t done before. Back when I used Microsoft Office on a regular basis, I frequently found myself wanting to use a new feature and wasting a lot of time trying to get it to work properly. And recent developments, like “Web 2.0” and the emergence of “app stores,” means that I’m trying out a lot more new software than I used to. A good user interface helps me to quickly figure out if the application does what I want it to.
I was willing to invest a lot of time in becoming a vi expert because editing text is a core part of the craft of programming. But I don’t want to invest a lot of time learning to operate my iPod more effectively. Even those of us who gain deep expertise with a few software products will and should be relative amateurs with respect to most of the software we use. And so a big part of good user interface design is making the software accessible to new users.
IME programmers love to divide the world between “computer people” (example: “myself and other programmers”) and “non-computer people” (example: “my mom”). There’s a huge class of users like musicians, animators, and illustrators who ride their computers very hard but care less about how they work. These are people who know a lot about using computers — perhaps more than most programmers.
The “learning curve” on UI like Final Cut’s or Photoshop’s is longer than vi’s; an animation app works in at least four dimensions. (I speak here from experience; I’ve been using both Vim and Photoshop for about 12 years.) Yet many programmers don’t even account for such users in their mental model. They equate every “non-programmer” with “my mom,” and engineer-designed UIs reflect that pretense. It’s telling that this class of power users love Macs.
“So there are two competing theories of user interface quality here. Bradley’s theory says that the best user interface is the one that maximizes the productivity of its most proficient user. Mine says that the best user interface helps a new user become proficient as quickly as possible.”
No, there are two dimensions to UI quality: “Easy to Use” and “Easy to Learn”. Your average point & click GUI application or OS is Easy to Learn, meaning you can pick it up and start using it easily. But it is not necessarily Easy to Use, as it may be inefficient and mouse-centric. A unix shell or vi or Blender can be considered Easy to Use, as they are all keyboard-centric and highly efficient, enabling trained users to work quickly and effectively, but they are the polar opposite of Easy to Learn. Some interfaces are both, for example scrolling and zooming in touchscreen browsers. Some interfaces are neither, being both inefficient and non-intuitive, e.g. Oracle Enterprise Manager.