The Product Is the User Interface

We technical types tend to think of a product in terms of the underlying technology – code, modules, and so forth.

The users of our products, however, don't care one bit about "what's under the hood". All they see, and all they care about, is the sliver that lies between them and your code: the UI (user interface). The UI is all that they see, all that they use, and all that will make them happy or unhappy.

One healthy way to look at product development is as follows:

  1. Design a UI that the user wants to use.
  2. Do a bunch of stuff that brings that UI to life.

Microsoft often uses the phrase "user experience" to refer to the total experience that the user has when using a product. The user experience includes more than simply the UI – it includes all other things in which a product plays a part, including purchase, installation, use, maintenance, and uninstallation.

How important is the user experience? It is true that Microsoft does use very aggressive business practices to help stay at top of the industry. However, in my opinion, the core reason for Microsoft's getting to the top, and maintaining its lead is its paying strict attention to the user experience. Let's take an example from the world of operating systems.

Unix has been "the next big thing" in desktop computers for more than 20 years. In the meantime, other operating systems, notably from Microsoft, have been eating Unix's lunch.

Many point to the technical superiority of the different flavors of Unix over Microsoft's offerings. In my opinion, Linux, a popular and freely-available version of Unix, offers these advantages over Microsoft Windows products:

  • Superior underlying technology
  • Faster and more reliable (depending on the window manager used).
  • Easily available source code – it's easy for a programmer to find out if a bug is in his code, or in the OS (operating system). If it's in the operating system, he can fix the OS himself, and submit the fix for future releases of the OS.
  • OS can be recompiled so that only the needed features are in a given computer's OS, thus decreasing memory use.
  • Elegant API (Applications Program Interface).
  • Configuration files are almost always stored as easily readable and easily editable text files, rather than Windows' (nasty!) registry.

So why is this faster, more reliable, and free (i.e., available at no cost) OS not taking the desktop by storm? Notice that the abovementioned advantages of Linux are all things that are great for software developers, not for end-users. Looking at the situation from the perspective of a typical end-user shows us a much different picture. Simply put, the Linux user experience for a typical end-user is appalling. Let's look at some areas that highlight the differences between Windows and Linux:

OS Selection

Due to its long and storied past, Unix comes in many, many versions, such as FreeBSD, Solaris, and HP/UX. The current "next big thing" version of Unix is Linux. Linux itself comes in many flavors, such as Red Hat, Fedora, Ubuntu, CentOS, Mandrake, SuSE, Corel, Slackware, Gentoo, and so forth – these are collections of the Linux OS itself along with various applications, user interfaces, utilities, and an installer that makes it easy to install the whole thing. To a first approximation, the CDs containing a given flavor of Linux, such as Fedora 6, are equivalent to the installation CD of the Windows operating system.

A would-be Unix user has to determine which type of Unix to use, and which flavor. Trying to differentiate between these is difficult for an expert user, and terrifying for the typical user.

By contrast, Windows has a simple differentiation based on whether the OS will be used for home computer, office desktop computer, or as a server.

Pretty simple choice.

Installation

Installing the Linux OS is roughly as easy as installing Windows, but the similarity ends here.

Installing new applications under Windows is (usually) a breeze, taking only a few minutes and a few mouse clicks and keystrokes. Even neophyte users can get the job done with a high likelihood of success and a low likelihood of causing trouble.

Installing new applications under Linux, by contrast, is better than it used to be, but it's often a several-hour ordeal fraught with frustration, searching for and replacing updated libraries and other dependencies, searches for good documentation, editing of multiple files, and a good bit of prayer. To my mind, it is virtually impossible for a typical end-user to reliably install new applications in Linux.

Printing

One of the important things that Microsoft did with Windows is to address printing. Setting up printing in an application is a bit of work for the developer of a Windows application, but once done, any application can easily print to any printer.

Printing under Linux is a big mess. Users often need to print to a file, and use a second application to prepare the material to be printed for their specific model of printer. Usually their specific model of printer is not supported, so they also need to know a type of supported printer that approximates their own printer. Prayer is useful, too.

Readability

Even with all of the aforementioned drawbacks of Linux, I'd really like to be able to use it as my day-to-day OS. It has all of the applications that I need, and I would like to get more experience with it. But there is one final thing, simple but critical, most flavors of Linux default to plug-ugly fonts - and how to switch to readable fonts is not always obvious or easy.

I, like most computer users, spend most of my time at the computer staring at words – words composed of characters rendered in various fonts. For years, Windows has concentrated on rendering these fonts in a pleasing fashion. By contrast, by default, Linux desktop environments typically render fonts, by default, in an ugly and blocky way that is distracting and ultimately irritating.

It is certainly possible to get Linux desktop environments to display nice-looking fonts, but it involves different - and sometimes arcane - installation sequence that differs depending on what “stuff” you already have installed – a non-trivial and unobvious effort. And an effort that may have to be re-researched and re-implemented every few months when the latest bugfix update of some part of your Linux system (e.g., Xfree86 or KDE) is released.

Summing Up

In all, Windows provides a pretty straightforward "user experience" from product selection through installation through day-to-day use. Linux provides generally better technology, along with a difficult user experience. The market has voted for Windows. Superior user experience beats superior technology.

The take-home message: a product is best defined by the "user experience". Technology is not the driver – rather, technology is a tool that is brought to bear on maximizing the user experience.