I am terrible at carpentry. Hand me a hammer—one of the simplest tools mankind uses—and I'll probably crush my thumb or mangle the nail. I'll get the nail in eventually, but it's certainly not an elegant process. I could use a nail gun instead; nail guns are more likely to drive the nail cleanly, with little effort on my part, and they take less time per nail. So nail guns are better than hammers, and I should trade in my hammer, right? Unfortunately, nail guns are complicated. I don't know what kind to buy or how to avoid putting a nail through my leg. The hammer represents simple software and the nail gun represents complex software.
I will now proceed to overuse this analogy.
1. Easy is for amateurs.
The average Joe (hereinafter simply "Joe") who needs a nail driven probably isn't doing anything complex. Perhaps Joe just needs a nail in the wall to hang a picture on. Joe doesn't care if he bends the nail or dents the wall. He'll just cover it with the picture when he's done. Precision, efficiency, and experience are unnecessary. Joe could still to hurt himself or screw things up pretty badly, but he probably won't. Conversely, Joe could use some professional experience. For example, he could use a stud finder or nail up a picture hanger. Will he? Probably not.
User interfaces for inexperienced consumers should work in much the same way. If you expect Joe to use your software, it should be simple. If it's a hammer, it doesn't need to also have the option to be a screwdriver. Joe doesn't care about extra or multipurpose functionality. Likewise it doesn't need to be particularly efficient, merely obvious. Joe doesn't care if your hammer has carefully balanced pivoting weights inside the head that impart 10% more force to the nail. He won't even notice. Most importantly, it doesn't need to be very customizable, because that'll just annoy Joe. Say you have a set of ingenious, variously-shaped detachable heads available to supplement the one the hammer comes with. Joe will probably just get angry when the original head falls off.
So give Joe a plain old hammer. It doesn't do much, but he doesn't expect or need much. He needs something obvious and easy.
2. Hard is for professionals.
On the other hand, look at Jane. She's adding a big porch on to her house, and she's going to need a lot of nails driven. She's not getting paid—after all, she's doing it for fun—but depending on how well she does it, she could easily make money doing similar work for others. She already knows how to use a hammer pretty well, since her house has lots of pictures. A nail gun would probably do her a lot of good, though, if she takes the time to learn how to use it properly.
Jane can do two things at this point. She can go out and buy a ton of wood and a nail gun and really screw things up. Or she can do her homework and select her tools based on good information. She might find a shiny nail gun that claims to be easy to use. It'll at least be better than just a hammer. Or she could take the time to learn one of the old, crusty, really powerful tools of the trade. Regardless of what she actually chooses to use, Jane faces a lot of research and a lot of learning before she actually starts to blast nails.
Nail guns are not designed to be simple and obvious, or at least certainly not primarily so. They have two primary purposes, those being to drive nails really well and to save time. Note that the former requires skill and the latter requires expertise, and both of these require a bit of dedicated personal investment. Nail guns are not necessarily easy because comfortable ease is irrelevant to their function.
3. There is no panacea.
Discarding the analogy at this point, I hope I've made clear that there is no one piece of software in a given class that is always the "best", and that the suitability of a given piece of software depends both on the needs of the user and the task at hand. In my experience (and very much in my opinion), this quality of difference between amateur and professional software is present in almost all types of software:
- plaintext editors (Microsoft® Notepad vs. Emacs)
- graphics editors (Microsoft® Photo Editor vs. Adobe Photoshop)
- audio recorders (Microsoft® Sound Recorder vs. Digidesign® Pro Tools)
- operating systems (Microsoft® Windows® vs. Linux)
- and even games (Tetris vs. EverQuest)
I am not categorizing the quality or merit of these pieces of software at all; just the suitability of one or another for complicated or simple tasks. I'm not trying to pick on Microsoft® in particular. In the above software, each program on the left is designed for beginning users—amateurs—who don't require powerful features, extensive customizability, or the ability to do complex tasks. Each program on the right is designed to allow professionals to do complex tasks efficiently and skillfully. The social difference between amateurs and professionals is the willingness and need to take the time to climb the learning curve imposed by complex tools. The various tools—any tools, whether they're computer programs or chunks of wood and steel—will necessarily reflect these differing expectations and requirements.
In many types of software, the separate goals of amateur and professional users are well-reflected in the available applications. For example, take Microsoft® Notepad and GNU Emacs. Notepad is extremely easy to use, has few features, and works very well at simple editing of plain text. Emacs is bloody hard to learn, fantastically complex, and provides reams of functions for structured texts. Both do exactly the same thing, but their user interfaces are appropriately miles apart.
On the other hand, the Windows® and Linux platforms both have adherents who would attempt to convince you that their platform is best for all tasks. Both platforms have detractors claiming that the platform in question is generally poor. Meanwhile, other operating system software is clearly aimed at simpler computing tasks (MacOS 9) or complex computing tasks (Solaris). My carpentry analogy and its insights fall short here, because computers are inherently far more versatile than nails and wood. My own experience leads me to consider Windows® an amateur operating system and Linux a professional operating system. I believe that many of the problems that people have with each stem from Microsoft® adding on professional features and Linux adding on amateur features. It may well be possible to design an operating system that addresses the needs of both amateurs and professionals; Apple's OSX is a great attempt. But perhaps Windows® and Linux could benefit from increased specialization, as opposed to increased generalization.
4. So shut up and be nice to each other.
The moral of this article is that amateurs need amateur tools and professionals need professional tools. There is a great deal of conflict among computer users, and I propose that much of it stems from misunderstanding this difference.
Myself, I used to make fun of Emacs. Now I make fun of Notepad and Pico, but I'm still a jerk. Amateurs think they need professional software, and end up denigrating it for being unnecessarily complex or poorly designed, when in fact they don't understand it completely because they have no need for it. Meanwhile, we professionals mock amateur software for being simplistic, inefficient, and weak, when in fact it's simply the best tool for the job.