This article started out as a rant. It had an exasperated, angry tone, and plenty of profanity. Now, however, most of the anger has dissipated, and the profanity is gone. Well, almost gone, anyway: there's still one instance in which I resorted to profanity, because there's this one thing that is just so fucking stupid that there's no way to not swear.
So... OK, there are actually two instances of profanity.
In broad terms, this is an article about interface design. In specific terms, it's an article about what Microsoft is doing wrong, and why their newer interfaces are in many ways inferior to older ones.
Bad design is frustrating, and it's hard not to get angry when you're confronted with it repeatedly. Bad design reduces clarity, and clarity is critical. It's good to understand. An adequate technician knows which buttons to click. A better technician knows how the buttons work. The best technician knows how the buttons work, and why they work the way they do.
In a classic article on interface design, Joel Spolsky summarizes the "cardinal axiom":
"A user interface is well-designed when the program behaves exactly how the user thought it would."
Moreover, Spolsky notes, users approach a program with existing expectations of how the program should work, because they've used similar programs in the past.
How does this affect Microsoft? Every time they introduce a new version of a program, they're forced to contend with the expectations set by the previous version of the program.
So what drives the impetus for change? Certainly there is an incentive to improve stability and add new functions. But is there a reason to repeatedly modify the interface?
To many experienced users, Microsoft's latest interface changes have been an exercise in frustration. When Vista was released, my first reaction was that the problems stemmed from a very basic cause: Microsoft was determined to give us eye candy, regardless of how that might impede our ability to work. It was trendy, let's-hop-on-the-Apple-bandwagon interface design.
The more I thought about the interface, however, the more I realized that it wasn't simply a case of a few bad designers who had been given too much leeway. There are in fact two different dynamics at work, each degrading usability in its own way. The first dynamic comes from Microsoft's belief that continual change is essential in the computer industry. The second dynamic comes from the belief that computing model is about to change drastically. The first dynamic is vividly illustrated in changes to the Office suite; the second, in changes to Microsoft's operating systems.
I. Out With The Old, In With The New
To understand interface design, it's helpful to think about design more broadly. The fact that software design is a relatively new discipline is less important than the fact that there are certain principles of good design that have been venerated on the basis of centuries of experience. Good functional design is intuitive; a talented designer anticipates what a user expects, and creates devices that an inexperienced user can operate with ease.
Think about tools. A modern cordless drill doesn't precisely resemble the heavy, corded steel drills of the 1950s, but a carpenter from that year would immediately recognize it for what it is, and would know how to operate it. The design is essentially the same, because there has been no compelling reason to change it. To date, no one has introduced a better design.
It's reasonable to argue that modern software is still searching for truly intuitive interfaces; after all, we wouldn't want every program to be perpetually beholden to whatever design decisions were made in Version 1.0. Certainly Microsoft needs to innovate, and needs to be willing to implement change.
In recent years, Microsoft's approach has been to hide complexity behind layers of abstraction. There is nothing inherently wrong with that; much of what we do with computers would be almost impossible if we had to deal directly with all the complexity. We're quite happy with the idea of saving a file to a particular folder, even though the "folder" is just an abstraction intended to simplify the way we interact with storage devices. The abstraction helps us. Simplification is good.
Oversimplification, however, isn't. Microsoft's recent interfaces apply levels of abstraction that obscure that functions we need. The simplification that was supposed to make tasks easier, winds up making them harder.
The default setting for the redesigned control panel is a perfect example. Microsoft has "simplified" things by grouping various controls into a handful of broad categories. It's annoying that this extra grouping forces us to click through another window before we can get to the control that we want to adjust. The real problem, however, is that it's difficult to determine how certain things are categorized. Want to take a look at your Java runtime settings? Good luck figuring out which group it's been shoved into. Mercifully, there's a way to fix this: switching to icon view allows you to see all the controls.
Server 2008's new management tools exhibit a similar problem. Administrators are presented with lists of features and roles. But what constitutes a feature, and what constitutes a role? There seems to be no sensible criteria to determine which is which. Is IIS a feature? DHCP? What about a file server? Is file serving a feature that I've enabled on my server, or is it a role that I've assigned to the server? The distinction is pointless, and the arbitrary separation means you have to find what you're looking for by trial-and-error.
Many aspects of the new interface are annoying, but it's at least possible to understand their rationale. Other changes, however, are simply inexplicable. Why, for example, was "Run..." removed from the Windows 7 menu? You're apparently expected to access it by typing "Run" into the search bar. How about this, Microsoft: instead of forcing me to search for it, why don't you put it back where it was, before you moved it? I expect to have to search for things that I lost. I don't know why I should have to search for things that you lost.
It's difficult to believe that users asked for these modifications. Presumably, it's a marketing decision. Redmond seems to believe that users will only perceive software as better if it is visibly different from its predecessor. If the controls in Office 2007 were laid out in the same manner as the controls in Office 2003, would anyone want to upgrade?
If you want an example of the dumb decisions that result from this mindset, consider the "Fluent User Interface" that was introduced with Office 2007.
Let's be clear: it's not as if Microsoft had achieved Perfect Design Zen in Office 2003. Office 2007, however, is a god-awful mess. It's a pain in the ass for people who already knew how to use Office, and brings no tangible benefits for inexperienced users. The so-called Fluent User Interface (or, as it's more commonly called, the "Ribbon") isn't better, it's just different. For users with familiar with Office 2003, it's simply frustrating. The problem is not that users hate to learn something new. The problem is that users hate having to re-learn something that they already knew how to do.
As with the control panel, the root cause seems to be a misguided attempt to simplify the interface. The manner in which elements are grouped within the ribbon makes little sense.
Excel is a case in point. Think about working with a spreadsheet. What are the most common tasks? We sort lists, we add numbers... and we insert new data. Often, we'll need to insert new columns and new rows. That's why older versions of Excel had an "Insert" menu.
Ah, but who wants old-fashioned menus, when they could have ribbons?!? The Ribbon interface includes a number of different tabs, with controls clustered into various groups. And, although the "Insert" menu is gone, there is an "Insert" tab. There's just one little problem: the Insert tab does not give us an option for inserting rows or columns. We can insert pictures, or shapes, or a signature line, or WordArt, or a host of other items and objects... but not rows or columns.
Pardon my French, but I believe that every experienced Excel user, encountering this for the first time, has exactly the same reaction:
You are fucking kidding me.
The new "Office" button is equally absurd. Many of the standard operations (Open, Print, Save As...) have been hidden beneath this garish, bulbous button. Good idea, Microsoft: conceal the functions we use most often.
While most of the changes to the Office suite appear to be driven by change for the sake of change, there is one decision that hints at a broader agenda... and that broader agenda is at the root of the most nagging problems in Microsoft's newer products. When users launch Office for the first time, they're given a choice of how the program's Help function should work. The default setting is "Search Microsoft Office Online for Help content when I'm connected to the Internet."
Searching for program help online is like saying: "When I'm cooking, search for all my ingredients at the supermarket if the car is in the driveway." Wouldn't it make some sense to check the kitchen first?
Part of the rationale for searching online, presumably, is that there's more stuff there. More doesn't necessarily mean better, but no matter. Microsoft is looking toward the future, and the future is out there. The future -- or the present version of the future, at any rate -- is in the cloud. One giant network, accessible from anywhere.
II. Clouding Things Up
Over the past 15 years, the prevailing idea of a computer's role has changed. In the past, a computer was perceived as a device for manipulating and storing an organization's data. Now, it's regarded as a device for accessing data... any data, and not just your own. It's a gateway.
Older Microsoft operating systems were designed to present a highly flexible way to organize the data on a computer. When the way we store data changes, perhaps it's reasonable that the manner in which we organize that data should also change. So where do we store data now? Where will we store it in the future?
Non-technical users don't care. And Microsoft doesn't want them to care. Your data? It's in the cloud. It's out there somewhere. Trust us... your data is safe.
For casual users, that's fine. Those users are interested in what the computer does; they're not interested in how it does it. Technical users, however, are in a different category. Programmers, systems analysts, server administrators... we need to know what's going on.
Therein lies the problem: Microsoft is determined to implement the same GUI on their various operating systems, and an interface designed for casual users is poorly suited to advanced users.
Certainly, there are arguments in favor of a consistent interface. For novice sysadmins, for example, a familiar GUI makes server administration less intimidating. And from Microsoft's perspective, it simplifies development. Common elements between the operating systems means common code.
For technical users, however, the disadvantages outweigh the benefits. A systems administrator's tasks are not the same as a home user's tasks. Why should the controls be the same? Honda makes both cars and motorcycles, but they don't put handlebars in the Accord. Perhaps Microsoft has lost its ability to determine when basic and advanced interfaces should be the same, and when they should be different.
However, there might be a different explanation. Perhaps Microsoft has decided that users no longer need to know what we think we need to know. And perhaps they've decided that they need to break us of that nasty habit of trying to know.
If you get the same answer every time you ask a question, do you keep asking? Where's my hammer? In the garage. Where's my battery charger? In the garage. Where's the shovel, the old pieces of plywood, the lawn mower? In the garage. Eventually you stop asking, because, hell, everything is in the garage.
But if there's that much stuff in the garage, how are we supposed to find what we want? Exactly where in the garage are each of those items? Microsoft's answer is: Don't worry about it. We'll keep track of everything in the garage. Tell us what you need, and we'll get it for you.
Welcome to Microsoft's vision of the future. Where's my data? It's in the cloud.
Changing paradigms requires changing mindsets. If you don't want your users to think about where their data is stored, there's an easy solution: Hide it from them. Make it obscure. There is a point at which users will stop trying to understand, and they will blindly trust the machine.
But is it wise to trust the machine? Or, more precisely: Is it wise to trust Microsoft?
Historically, Microsoft has been good to advanced users. Perhaps because Bill Gates was himself a hardcore techie, the company made it a priority to simplify tasks for developers and sysadmins.
That rule held true until the release of Vista. Vista was reviled almost universally, primarily because of poor performance and compatibility. Oddly enough, those flaws focused attention away from another problem: for advanced users, the new interface was less convenient than its predecessor.
When Windows 7 was released, it was deemed a success. Popular perception suggested that it performed better than Vista, and the most widely disliked feature -- the User Access Control -- was scaled back. The interface, however, was virtually identical to Vista, and several other changes ushered in with Vista remained. Several of those changes provide clues to Microsoft's aims for the future. Three things in particular deserve discussion: The disappearance of Explorer's "Up" button, the proliferation of "Favorites" and "Libraries," and the replacement of NTBackup.
Up, Up, and Away
Until Vista, all versions of Windows Explorer included an "Up" button in the toolbar. If you wanted to go up one level in the file system hierarchy, it was easy: you clicked the Up button.
And now it's gone.
Why? Even at low screen resolutions, there is unused space on the right side of the toolbar.
But do we really need an "Up" button, when Microsoft gives us a "Back" button? Yes: "Up" and "Back" are not the same thing. In instances when we've drilled down through the file system, folder by folder, "up" and "back" will behave the same way. But what if we've gone to a particular folder by typing a path in the address bar? Now, "Up" and Back" are not the same.
Microsoft fanboys will point to the address bar as the answer. "You don't need the 'Up' button anymore, because if you click in the address bar, it changes back and forth between a path, and between the drop-down style controls, and you can click on a specific point in the path to go to that directory."
Yes, you can... but the design of this control again violates fundamental design principles. First, it's concealed part of the time, depending on which mode the control is currently in; and second, the precise spot that the user must click changes, depending on the length of the path. The "Up" button was magnificently consistent: It always performed the same function, regardless of your location in the file system, and it was always in the same place in the Explorer window. The new control, by contrast, is bizarrely inconsistent: if the address bar is in its "drop-down" mode, clicking in the blank portion of the address bar switches it to the path mode; but once you're in path mode, clicking in the blank area again doesn't switch it back. Even after months of using Windows 7, I still can't remember how the hell you get it back to the other mode.
The usability flaws introduced by the absence of the "Up" button, however, pale in comparison to a less obvious problem: "Up" and "Back" reflect radically different design philosophies.
"Up" is a concept of structure; "Back" is a concept of behavior. "Up" reflects the way that one set of files relates to another set of files. "Back" reflects the way that I arrived at those files. "Up" conveys something about the way that my data is organized. "Back" conveys something about the way I've approached a task. "Back" reinforces rote learning: It's about what I do. Do this, then that, then this. A "back" button conveys nothing at all about the structure of my data. Technical users want to understand. They need to understand.
These Are A Few Of Our Favorite Things
If we're not supposed to navigate the file system via its traditional hierarchy, how are we supposed to navigate?
Microsoft's answer seems to be: Libraries and Favorites. And what's more, they're going to shove those in your face, and if you don't want to use them, they're gonna make you work to find how to get them out of the damn way.
Windows Explorer has always had the option to show a navigation pane on the left side of the window, and by default it would show the folder hierarchy. If you didn't want it taking up space on your screen, no problem: there was a close box in the corner of the pane.
In Windows 7, "Favorites" are at the top of the navigation pane, along with "Downloads," and "Recent Places." And below that is "Desktop," which has a subset labeled "Libraries," which in turn has subsets for Documents, Music, Pictures, and Videos.
It's bad enough that Microsoft has decided that I need to see these "friendly" collections at the very top of the pane, and it's bad enough that they're organized in a hierarchy that does not reflect the actual structure on disk. What is even more frustrating is that fact that the shortcuts are the same on Server 2008 as they are on Windows 7.
Think about that for a minute. No matter what role is assigned to the server, by default, those same stupid shortcuts will be there. Who loads all their MP3 on their domain controller? Who keeps their vacation photos on their database server?
Moreover, there doesn't seem to be a way to remove these idiotic shortcuts. You can, however, get rid of the entire navigation pane... if you can find the control for it. The close box that was in the corner of the pane in Windows XP? It's gone.
When I first began using 2008 Server, I spent many months cursing the pane, because there was no obvious way to remove it. It turns out that there is a way to get rid of it... but the option is buried in the "Organize" menu. For Christ's sake, Microsoft, showing or hiding a navigation pane is not "organizing." The option to show or hide the pane was under the "View" menu before. Why the hell is it in a different place now??
It's not only the interface which suggests that Microsoft intends to wean us from our traditional approach to the file system. The drive toward greater abstraction is also apparent in Server 2008's elimination of NTBackup. NTBackup was a rudimentary tool, to be sure, but it worked reasonably well. If you wanted a tool capable of bare-metal restores, NTBackup wasn't a very good choice. If you just wanted something to back up data files every night, however, it was adequate.
The Windows Backup utility that replaces NTBackup is precisely the opposite: it's adequate for performing a complete system restore, but it's a lousy choice for regular data backups. Windows Backup can create a backup of an entire volume, but it can't back up specific files or folders. Again, we're left to wonder why. And again, it's a decision that makes perfect sense if we assume that Microsoft wants us to stop thinking about where we're storing our data.
III. Searching for Mr. Toolbar
The classic dichotomy in design is: form and function. We can forgive ugliness in form if the function is exceptional: Our hearts don't begin to flutter when we see a Toyota Corolla on the showroom floor, but we buy it anyway, because it'll run forever.
Which brings us back to our garage: somewhere out there with our Corolla, there's a shovel and a hammer and a lawn mower, and Microsoft wants us to rely on them to find them.
That might be OK, if only Microsoft weren't so horrible at searching for things.
Microsoft has never been any good at searches. Bing has been around for years now, and it still feels like a not-ready-for-prime-time beta. Even finding things on Microsoft's own site is easier with Google.
Back in the days of Windows NT 4.0, the search utility wasn't anything earth-shattering, but at least it worked. It was lean and simple.
Then Microsoft decided that the straightforward, simple design should be discarded in favor of a oversized two-pane window featuring a whimsical dog. The goal, presumably, was to present non-technical users with a simpler interface. But what about technical users? I don't think technical users want their search interface to include an animated dog. They do, however, want to be able to access all their search options without having to expand multiple branches of a poorly-laid-out control tree. And why on earth does Search default to not showing hidden files and system files? Didn't see your .nk2 file when you opened the directory where you thought it was stored? Well, you won't see it with a search, either, unless you've expanded the control and checked the option to show hidden files and system files... and the option to show those files is, you guessed it, hidden until you've expanded the control tree.
Those changes were implemented in Windows 2000, and carried over through XP and 2003 Server. Could they really find a way to make it worse? You bet. In older operating systems, you could right-click a folder in Explorer, and "Search" was one of the options from the pop-up context menu. But guess what? You can't do that in Win7 or Server 2008. Now, you need to select the folder in the Explorer window, then go to the top bar in the right-hand corner of the window and enter your search term.
Still worse is the fact that searches are simply not reliable. Recently, I needed to find a particular file in a directory containing a few thousand PDFs. I didn't know the file name, but I knew that a particular person's name would be inside the file. After struggling to find the option to search inside the files, I searched... and Windows found nothing. So I dug deeper, and found that I needed to check the option to include non-indexed items and system files in my search. I searched again. Nothing. I tried limiting the scope of filenames, I tried to find some magical syntax... nothing. No matches. Exasperated, I opened a command prompt and executed the old-fashioned DOS command: find "John Doe" *.pdf. Moments later, I had my file.
When an operating system makes you thankful that you remember DOS, something has gone really, really wrong. (Incidentally, if you want to be able to actually find things in Windows, get a copy of the free Agent Ransack utility from Mythicsoft.)
Meanwhile, sharing space with Microsoft's earch tools in the "I can't even believe how lousy this is" department: Windows Explorer's exasperating columns. Before, if you were in "Details" view, it was easy to resize the width of the columns by dragging the separator bar between the headings. In Windows 7, grabbing the separator is absurdly difficult. The width of the control seems to be barely one pixel wide. You have to get your cursor exactly on the tiny spot, or you can't drag the columns. I've talked to users who mistakenly believed that the feature was removed entirely, just because they'd never managed to position the cursor over the magic spot long enough to see that the control is still there.
So where does this leave us?
The amount of effort Microsoft invested in eye candy makes it all the more frustrating when important functions don't work correctly. Seriously, Microsoft: you could pour money into making the window borders translucent, but you couldn't make Explorer's "Select All" command work right? (Want to see it fail? Do this: On Windows 7, open a directory in Windows Explorer. Now click a button in the toolbar to change the view. Now hit Ctrl+A. The files will not be selected, because the window has lost its focus. This, by the way, is not the only time Ctrl+A fails; it's just one that I know to be easily repeatable.)
It's tempting to list a few more of Windows 7's annoying bugs, but that would be a mistake. The point is not that Windows 7 and Server 2008 are bad; in some areas, they've improved over their predecessors. Security is better. Installations are faster. Hyper-V, Server Core... those are things that provide real, tangible benefits.
The questions we should be asking are: did Microsoft change the interface for our benefit? Or for theirs? And what do those changes tell us about the future? How will our roles and responsibilities change?
There's no question that we will be surrendering some control, but that's not necessarily a bad thing. Remember when we had to manually set IRQs and base addresses? Do you miss that?)
Sysadmins and programmers are like mechanics. The cars we maintain are changing, and the skills we need will also change. Microsoft wants us to get used to idea that some of our components will be black boxes. Set it and forget it... and if it fails, just plug in a new black box. You won't understand how it works, but no matter... if you want to understand, you can use open-source software, and the source code will lay bare all of the byzantine underpinnings that make an operating system work.
This is a transition period. Microsoft wants to move forward. It's fine to want us to learn to use new tools, designed for new tasks. But it's frustrating when Microsoft takes away our old tools, when we still have to maintain a fleet of old cars.
What can we expect next? Microsoft recently released a demo of Windows 8, and sure enough, the same trends are again apparent. In an excellent article, Tech Republic's Jason Hiner gives voice to our fears:
Now, Microsoft has decided to take the full version of Windows and make sweeping UI changes so that it's much more tablet-friendly and then apply all of those changes to the standard desktop/laptop version of Windows as well. Say what?
That leads me to the second big issue with Windows 8 - it just might ruin the core Windows product that powers most of today's laptops and desktops. A touch-based UI focuses on large icons and images and imprecise actions (to accomodate different sized fingers). Meanwhile, a traditional UI for a standard mouse and keyboard has much smaller, more complex, and more precise actions and navigational elements. By forcing the tablet-focused Windows 8 UI on traditional Windows, Microsoft could end up removing much of the power and precision that most users rely on to do their daily work.
Eventually, we'll get used to the new interface. We'll learn to tolerate it. But every time something fails, we'll mutter under our breath about the good old days, when you could pop the hood and fix it right on the side of the road.