Usability - The Opportunities Everyone Has Missed

For the last 30 years the desktop computer has been available to the home user. Over this period, we have watched as the user interfaces have slowly transformed to become increasingly easy to use. As this has happened, us software engineers have adopted standard ways to build user interfaces in order to ensure the applications we build adopt these better practices and are familiar to users because they work a lot like the other programs they use.

I have, however, seen a number of things persist in user interfaces and would like to appeal to usability experts out there that there are still some big improvements they can adopt.

Useless Help

Probably the biggest issue I have with any software package is that most of the help simply states the obvious. When you have a label that reads "Notes" and the help says "This is your notes", I have to wonder why even bother? How about having something more like:
"This is a free form field allowing you to enter whatever you want for future reference. It is not used by the application for any specific reporting or decision purposes and is strictly to help you recall details when you need to review this record in the future."
Notice I did not use the term I was defining within the definition. After all, we have all been told in school "do not define the term with the term itself." If you cannot do this much, don't bother even writing anything. It doesn't help and it is a waste of time for everyone.

Disabling / Hiding Buttons, Menus and Menu Items

Somewhere along the way, someone decided that it would be helpful to disable or hide things we can click on when we are not allowed to use them. While I do agree this does provide immediate feedback about what a user can and cannot use, it does not help us understand why. Quite often I go to a menu or try to hit a button and I cannot. I sit there and scratch my head. Why is it disabled? I want to use it.

Worse are the interfaces that have bugs and they disable a menu and neglect to reenable it even though I am allowed to use it again. As a software engineer I can say these bugs are very easy to introduce into the application and it is a royal pain to make sure buttons and menu items are reenabled when then need to be. When this happens, most of the time you have to just shut down and start the program back up hoping it doesn't take too long to get back to where you were and hoping it doesn't leave the button disabled again.

Why can't we allow users to click on whatever buttons or menus they want. Then pop up a nice little dialog that says "Sorry, you cannot use this function until / because ..." This gives the user feedback about what they need to do in order to be allowed to use that feature. It quickly educates them about the proper use of the application or reminds them of a prerequisite without forcing them to scratch their heads and wonder what the heck is wrong.

It would be great if we got rid of the whole disabled button / menu item. Perhaps we could have a "You cannot perform this function but click anyway to find out why" state for the button.

Hiding buttons and menu items is not quite as bad if done for the right reasons. Hiding a button / menu item for security reasons can be very good. You don't want users who are not allowed to do certain things to even worry about (or know about) functions they are not allowed to perform. But hiding / showing buttons and menu items just because it cannot use it under certain circumstances is sometimes more annoying than disabling them. "Where did the button go?!?! I need it!"

Some people might argue that they just have too many buttons / menu items and have to hide them to avoid overwhelming the user. These context sensitive menus are sometimes necessary. However, I find they are used too often.

Mouse Over Pop Ups

Ever go to a web site where, when you move your mouse around the screen menus and sub-menus start flying all over covering the text you want to read? I use the mouse to help guide my eye as I read. when people put these mouse over menus on their site, they constantly open as I move the mouse around and cover the information I am trying to read. They are highly annoying. On top of that, when you navigate these menus, if they have sub-menus and, even worse, sub-sub-menus, it gets really hard to slowly move your mouse to the right menu item. Oops! You moved your mouse off the menu slightly and it closed. Try again.

With desktop applications we do not see this behavior. It is just in web sites. Hmmm, maybe the desktop applications know better, after all they have been around longer. Why can't we stick with the click to open / close menus and sub-menus just like with the desktop applications? There are libraries out there that work this way.

Poorly Managed Plug Ins

This is a tough one. Software quite often needs to allow outside developers add to an existing application to enhance its functionality. This is a great thing. The problem is that when a person adds a plug in and that plug in is poorly written and causes problems (is slow, crashes, etc.), the user tends to blame the main program, not the plug in.

The solution to this is often very difficult to implement. However, it is very important to the perception of quality of the software package.

When any program that allows plug ins delegates control over to that plug in, it should monitor, in a separate thread, the API call. If the call is taking a long time, it should prompt the user asking if they want to stop the operation and also tell them what plug in is causing the problem.

Another thing the application should do is monitor what parts of the application are using how much memory and eating up how much CPU. This is a challenging task to be sure but you can also provide feedback to users that the plug in may be causing problems and they might want to disable it.

This is a common problem on Windows. I hear, and perhaps participate a bit, people complain about Windows and how it is crappy, slow and buggy. To be sure, it like all software does have its issues. However, most of the time people come to me with complaints about how their computer used to be good but is slow and buggy, it has nothing to do with Windows but is instead some other application that is running on their computer. Why doesn't Windows monitor this and when the CPU, hard drive or memory is overly taxed, pop up a warning telling me who the culprit is and giving me some options to fix the issue? No, I have to go hunting. To be fair, I don't know of any OS that assists me in this manner.

In short, applications should monitor themselves and help the user understand where the real source of the problem is so they don't receive a bad wrap for someone else's bad programming.

Poor Placement of Widgets

When consulting an expert on efficiency, one of the things you will probably be told is to place things you use often within arms reach and things you use rarely tucked away in storage. While it may be annoying to have to go out and find that one thing you rarely if ever use, you almost never do it. While your highly repetitive tasks will be quick because what you need it right there ready to be used.

For the most part I think this is actually adhered to in software. However, sometimes people forget this concept. What comes to mind recently is how, in Firefox 4, they moved the tabs up above the address bar and buttons. If you use tabbed browsing in Firefox I bet this was a step back in efficiency for you. I see most people use the address field only once per tab on the average. And we rarely use the buttons (Microsoft caught onto this when they hid the menus in IE 7 - that had other usability issues). Most people who use tabs, toggle between tabs quite a bit. If they didn't, multiple windows would have sufficed. The tab was created to allow quicker switching between web pages without loosing your place.

Drag and drop

And now I will state something that I am sure many people with vehemently disagree with me on: in all but some rare cases, drag and drop is more trouble than it is worth and should be eliminated from applications.

There, I said it.

How can I say such a thing? Drag and drop is great you say?

Have you ever been in Explorer in Windows and found a file or folder is gone? I have watched countless times as people accidentally tap their mouse button as they move their mouse across the explorer window. Instantly some random file or folder was moved and they don't know where. Worse, they didn't even see it happen. Days or weeks later they groan in frustration: "Where did my file(s) go?!?!" (On the Mac I have not had had this problem using Finder and honestly the only reason I can think of is that I have become quite practiced as being very careful. I do still have this issue on Windows on occasion though.)

I used to believe drag and drop is great in text editors. I now know better. One day I started using an application where drag and drop was turned off by default. I thought it just didn't have that feature. I liked the program so I got used to using it that way. Then one day I found a way to turn DnD (drag and drop) on and did so. It was quite a revelation when I found that this slowed me down. It also caused problems when I would inadvertently click on highlighted text and dragged only to watch my content move around. Oops, gotta hit undo. Now, with the combination of shift-arrow and short cut keys I get the move capability without my hands ever leaving the keyboard. If you are an efficiency junkie like me, you should know that the less you move your hand between mouse and keyboard the better.

It is true that sometimes DnD is nice. Being able to drag something off the desktop onto an application to open it is handy. I don't think it should be eliminated completely. But I do suggest we have fallen on it as a cool crutch and that if you were to turn DnD off you might actually see your work speed up, not slow down, once you get used to it.

If you must use DnD, at the very least make sure you consider what could happen with the accidental click as a mouse is moved across the screen. Should you prompt the user before finalizing the action you think they are trying to perform? In the case of Windows Explorer, no file or folder should be moved without prompting the user first. Perhaps there could be an option to turn the alerts off but the user should be alerted to do so at their own risk.

Summary

I am sure I will come up with some more items. Usability has come a long way but nothing is perfect. Hopefully the items above will at least give people something to think about as they make the next generation of software.

-Aaron