K.

So in a previous post I bitched about not being able to group my online/offline contacts in MSN Messenger 7.  Thankfully J. Gregory doesn’t suffer from the same inability to find menu options as I.

However, after the relief of looking at a properly organized contact list kicked in, I started getting pretty pissed about the UI design of the new Messenger, and many, many other apps.  Honestly…I fucking write software and I couldn’t find this option (Contacts Menu|Sort Contacts By > Group Offline Contacts).  And I was pissed that a bit of UI design made me feel stupid especially after finding out where to find what I wanted.  And given that I am currently prototyping UI designs for some software I’m writing, I thought this would be a good time to analyze my thoughts on good and bad in that area.

First of all, when did it become more important to have an app that looks cool rather than functional?  My thought is that if you can’t make a good looking app that has an intuitive UI then you aren’t trying hard enough and have no skills.  My gold standard for hot UI design with functionality is Microsoft Money.  It gets better and better with each new version, and it is seriously one of the slickest apps I have on my computer at any given time, and it’s a fucking bean-counting program!  But not only is it one of the best designed UIs I have ever seen, it’s seriously functional.  I have never needed the Help menu or the Manual or anything else with Money because it is so intuitive to use, so customizeable to my needs, and so full-featured that it practically uses itself.

Let’s talk about design paradigms and expected standards.  Joel has talked about this as it relates to cross-platform development for Mac and Win, and I wish I could find it to link to it, but I can’t, so I’m moving on.  As a computer user I have certain expectations.  These expectations have been built up over a period of like..I don’t know say 20 years of using computers.  Probably more, but that’s unimportant.  What’s important is that my opinion of a piece of software is in a large part based on these expectations.  In the console/DOS days of my youth, I came to expect the “menu” to function with the Alt key and the underlined letter.  Or the first letter of the menu option.  Either one.  Any software that doesn’t have a keyboard shortcut to at least the top level menu options will not likely be used by me.  Even the most trivial windows apps I have ever written have keyboard shortcuts, the expected ones, mapped to menus and items on menus.  To illustrate this, let me show you a typical usage of notepad for me.  I have copied something, from say, the web, and want to save it.  The whole thing takes place with the following keystrokes:  1)ctrl+c, 2)windows key, 3)r(un), 4)notepad, 5)enter, 6)ctrl+v, 7)alt+f, 8)x, 9)space, 10)type filename, 11)enter.  It takes all of 5 seconds to do.  It relies on the following:

  1. That the application from which I’m copying text supports ctrl+c for copy.  This isn’t always the case, and makes me very angry when it’s not.
  2. That I have a keyboard with a windows key.  Thankfully ctrl+esc is also a key combo for bringing up the start menu.
  3. That hitting “r” will take me to “run”.  This is why I can’t use the XP themed start menu.  R, which I have been using for 10 years to get the “run” box, is not always “run” under the XP themed start menu.  And a lot of times I run into that at user’s workstations and it just makes me angry because now I have to go and find shit on the stupid-ass XP dual layer unorganized piece of shit start menu.
  4. That notepad.exe is in one of the search paths.  Usually not going to be an issue unless I’ve done something to break it.
  5. That enter is mapped to the default button, and that the default button is OK and not, say, Cancel.
  6. That notepad (or the target app..I have replaced notepad with Notepad2) supports ctrl+v for paste.
  7. That notepad (or the target app) opens the file menu with alt+f.
  8. That the target app has an Exit in the File menu that is hotkeyed to “x” and that exiting an unsaved document asks if you would like to save.
  9. That the save yes/no dialog has the “yes” button focussed so that space bar will “click” it.
  10. That the filename box is focussed in the save dialog.
  11. That “ok” or “save” is the default button and that it is hotkeyed to “enter”.

So, in the simple procedure of copying/pasting text from one app into notepad and saving it, there are 11+ potential breakpoints that will cause my 5 second process to double, triple, or increase even more in time.  I actually had to think about the keypresses to write that down, because after doing this for almost 10 years, this has become muscle memory.  Now I can’t tell you how many times a process like this has been derailed because some third-party developer has not thougth to include the things that I am used to as a Windows user (default buttons, ctrl+c+v+x, and so on).

Don’t even get me started on how shit looks out of the box in XP.  The very first thing I do when I boot to a new XP install is change everything back to Win2K style.  I can’t find a damn thing in the XP-style toolbar, or control panel.  The XP theme is more anti-productive to me than anything else.

I’m used to menus at the top of the main window that pertain to global functions and data operations (Help, File>Open, File>Save, Edit>Copy, Tools>Options, etc).  My problem with the MSN thing earlier stemmed from the fact that, I guess because it’s not cool-looking, the menu bar and title bar of the MSN Messenger window are hidden.  And there is no intuitive way to access it.  Upon closer inspection, I found that the little up/down arrow thingie in the top left of the contact window will show hide the menu, but it’s not labeled.  Also hitting Alt+F will bring up the file menu, even when hidden (and now that I know that I think it’s a nice bit of coding to include that), but not having the visual cue of menus even existing , I didn’t think to try the old faithful keyboard shortcut.  And while on the topic of menus, maybe I’m old-school, but when did it become acceptable to have an option to hide the underscores on the hot letter of a menu?  Why is that even a feature that people wanted?  That’s been a no-sale point on many a menu component for me.  If there is no option to “always show the underscore”, then I don’t want it.  It isn’t always the first letter of the menu text that gets you home when you are accessing with Alt keys.  For example, I’m looking at mIRC on my other monitor and the “Commands” menu doesn’t have an underscored letter, whereas all of the rest of the menus have the first letter of the text underscored.  Thinking the way I do, that means that the “Commands” menu is not in fact accessible with an alt key, and running a quick test proves me right.  There’s both a design flaw and a good design feature there.  The flaw is that there shouldn’t be just one menu different than the rest, with no hotkey at all let alone not the first letter.  The feature is that because of the underscores I have a visual cue telling me “hey man…no keyboard shortcut for this one.  Sorry.”

I expect context menus to pop up when I right-click something.  If it doesn’t, no huge deal, but I expect that if an interface element is actionable in any way that there should be something in a context menu relating to it.  I also expect context menus to be contextual to what the cursor is pointing to, which is not necessarily the case.  Take the MSN Messenger contacts window again.  If I right-click a contact, I get expected contact-specific operation options.  Similarly, if I right-click a group, I get group-centric options.  If I right-click the whitespace of the contact window, I expect to get “contact list options”, such as my precious “group offline contacts” option.  This has been the case in many an Instant Messaging program in the past…right-clicking whitespace in the main window gives you more “global” options.  However, in MSN Messenger 7, I get the context menu of whatever the cursor is closest to, either a group or a contact.  This behavior was unexpected and VERY disturbing, leading me to right-click all over the damn thing tring to find a spot that would bring up the context menu that lets me set my preferences.

I expect option configuration screens to be all-inclusive.  Meaning that they either have tabs, or selectable items (a-la the Visual Studio settings pages) that allow you to basically get to all of the UI-Configurable options of the software.  However, the “group offline contacts” stuff is not avialable in the MSN Messenger 7 options configuration dialog.  It is only available via the Contacts menu that doesn’t show up unless you unhide the uncool menu bar.  This was the larger source of my frustration because I could find the options dialog and it didn’t have the option I wanted.  Would it have been that hard to include a contact list options node on that dialog?

I have the same problem with the fake DOS that runs in the console window.  I used to be the king of DOS.  I still like to “automate” things with batch files and commandline goodness.  But every version of Windows that comes out further breaks the DOS that I have been used to forever.  Missing commands, changed switches, it all screws up my usability mojo.  Granted I may be in a small subset of users that cares about this, but they continue to include the emulated DOS environment for some reason, so why not keep the commands the same?

I’m all for modern, corners-rounded, alpha-transparent, 32 bit color icon, curvy, sexy UI design in place of the old Windows Grey Box design.  But not at the expense of functionality and expected usage paradigms.  So I say to all of you who develop software, take the time to look into the processes that your users are accustomed to, something as simple as copying/pasting to notepad can have multiple usability breakpoints that you might not be consciously aware of becuase those actions are so automatic.  But you become painfully aware of them when the expected functionality is not implemented.

Software should never make you feel stupid.  And it’s good that programmers get a dose of this once in a while I guess, because it got me really thinking about the things that should go into UI design for my users, and it made me feel like one of them for a time, and that’s not a bad thing.  I’m not a usability expert, a design expert, an artist, or anything else.  Like you, I write software that people use.  And I use software that people write.  And because of both of those things, I should be expected to have a reasonable grasp on what is user-friendly UI design, and how not to design painful software.

 


Tags: