Tuesday, 15 March, 2005

The worst possible user interface?

Whatever Microsoft program manager signed off on the Commerce Server Business Desk user interface should be fired. Really. The interface is horrible--the worst I've seen in a very long time. I don't have the time or patience to critique the whole thing, so I'll give you a representative example: working with Site Terms.  Click here to see a screen shot of the interface in a separate window.

The idea here is simple. I'm adding a list of terms to a custom property. At first glance the interface looks reasonable with a hierarchy of custom properties on the left and an area on the right in which the user can edit an individual property's terms. It looks nice, that is, until you actually try to use it.

This is fundamentally a data entry form, which means that it should be easy to operate without using the mouse and I should be able to enter and edit terms with a minimum of keystrokes. That means shortcut keys for the buttons, a sensible tab order, a reasonable default action when the Enter key is pressed, and positioning of the focus to the New button after an item is saved. One out of three ain't bad, I guess. The tab order for the entry dialog is reasonable, just as long as you don't tab too far. One would expect the tab order to be restricted to the entry fields and the Accept/Cancel buttons when the user is entering or editing an item.

The list view that displays the terms shows only four items, and one of them is truncated at the bottom. Why, when there's all that empty space below the buttons? It's not like anybody's running this program on a 640 x 480 screen. My laptop's screen is 1200 pixels tall, which means that approximately 1/2 of the vertical screen space that could be used to good effect by this application is being wasted, and I have to scroll unnecessarily. But at least I can change the column width in the list view.

On a large screen, the Accept and Cancel buttons at the bottom of the window are so far away from the action so as to be invisible for all practical purposes. I actually had to go hunting for the Accept button the first time I used the program. Either the list view should be extended, or the Accept and Cancel buttons should be moved so that they're closer to where the user is working.

I wonder if the designer ever considered that people might want to change the order of terms. Far be it from me to suggest that I should be able to move a term up and down in the list so as to change its display order on the pages that use it. No, that'd make the interface too consistent. We can't allow the properties and the terms to be re-ordered. Yes, I understand that changing the order of terms would break code that uses the terms. Probably should have thought of that during the design phase and used an indirect lookup. Whoever designed this piece of crap should be fired right along with the program manager.

To make matters worse, the program gets the "prompt to save" convention wrong. If you edit a property's terms on the right and then select a different property before saving your changes, the program will prompt you with a confirmation message that says "You have made changes to the current selection. Do you wish to discard them?" This is, of course, in a box that has OK and Cancel buttons because some idiot years ago decided that it wasn't a good idea to give the user Yes and No options. That minor annoyance aside, the logic is backwards. User interfaces are supposed to understand that it's easier for people to say "Yes" (or "Okay") than it is for them to say "No." This is especially true of people who are using a program with which they're not very familiar. Here, the designer made it easy for the user to discard changes rather than making it easy for the user to save changes. As a final slap in the face, the OK button is the default, meaning that if the user doesn't read and think about the prompt very carefully , he's almost guaranteed to discard whatever changes he's made. The prompt should be "Do you want to save your changes?", and the default answer should be "Yes" (or "OK" if designers insist on butchering the language).

I'm thinking that the lazy programmer who implemented this interface should be fired too. If he didn't quit in disgust or get fired for raising a stink with his boss over the atrocious design, he should be fired for bringing this half baked abomination into the world. Any competent programmer would have snuck in a few minor improvements like extending the list view and adding keyboard shortcuts for the buttons.

Understand, this is only one screen in the much larger Business Desk program that is rife with these and other user interface atrocities. More than anything, Business Desk looks like the blue ribbon winner in the "Build a program that has the worst possible user interface" contest. I have every expectation that it will remain the champion for years to come.