Every Monday morning I hop on a plane, arrive at my destination city, pick up a rental car, and drive to my client’s site. The car rental company gives me a different make and model car every week. And yet, somehow, I am successfully able to open the car, adjust the seat and mirrors, start the car, shift gears, and drive. I can also operate the radio, air conditioning, heat, windshield wipers, and headlights.
Now, put me behind a keyboard in front of a computer application which I have never seen before. My user experience is all over the map – somewhere in the continuum between most excellent and very poor. Some application user interfaces are extremely intuitive, well-designed and easy to navigate, logically follow the business process flow, and provide real meaningful help when needed. Other application user interfaces are extremely difficult to navigate, are not intuitive, do not follow a logical business process flow, and offer little or no meaningful help. And sometimes in these difficult user interfaces, not only has the location of the steering wheel been moved to a totally unsuspecting location, but its appearance has been changed so that, even when I see it, I do not even recognize it as being the application’s steering wheel.
A well-engineered user interface is no accident. It doesn’t just magically happen. It must be woven into the fabric of the design and the code; and it should never be shoe-horned into the application as an after-thought. It takes a lot of up front planning, designing, testing, functional effort and technical effort to produce a really good application user interface. And yes, designing, building, testing, and implementing a good user interface for your application will extend the delivery time of whatever it is that you are building.
Why is a well-designed and ergonomic user interface so important? You could have built the best application ever developed. But if it is unusable, it will never get very far. Countless hours are lost every day as thousands of frustrated users spend extra time and effort wrestling with poorly designed user interfaces, rather than focusing on their jobs. And when the frustration levels reach a certain trigger point, the users will seek out and find alternative ways to perform their duties.
Here are a few examples of some very interesting user interface experiences that I have personally encountered.
Let’s Punish the User
I thought we had gotten over this one a long time ago, but I was bitten by it recently while I was completing a web form. Here is the scenario:
I am completing a screen form containing several fields, and I make an entry error in one of the fields. When I try to submit the data, the application rejects the submission, and sends me a message indicating where the error field is, and then clears all of the fields on the screen and makes me re-enter all of the data again.
Bad User! And, because you made a mistake, you get to start the entire form all over again … and again … and again … and again …
When Help is not Help
I am especially fond of this one. I need help, so I look for the HELP ICON. I find the HELP ICON (because it looks like a help icon should look, and it is located where a help icon is typically located … well, sometimes it is) and I press it. The anticipation of actually getting the help I need is overwhelming. And the help information finally appears on my screen and reads something like this:
The exact details of what you want to know are located somewhere in our behemoth website. Now, we could tell you exactly where and actually help you to solve your problem very quickly, but we’re not going to, because then you won’t have spent hours wandering aimlessly through our website’s colossal labyrinth. And while you are in there, don’t let the Minotaur get you! Please go to www.needleinthehay.com.
Well, at least they said “please”.
The Errant Error Message
I can’t tell you how many times I have made a data entry mistake, only to be “helped” by this not-so-helpful error message:
This is irritating. If I don’t know why it is incorrect, I can’t fix it! If the application is intelligent enough to determine that the entry is incorrect, it certainly is intelligent enough to tell me which of its check rules were violated (in plain user-oriented language please).
I really like this one:
Program Error 1776
This truly tells me everything I need to know!!! Maybe the developer knows what error 1776 is, but I don’t. Maybe I can find the meaning of error 1776 at www.needleinthehay.com. (I hope the answer is not too close to the Minotaur’s lair.)
Hey developer – can I have your phone number so I can call you every time I see one of these messages? Maybe then you will get the hint and stop the madness!
I’ve fallen in and I can’t get out
Sometimes, I manage to navigate to a screen that has no obvious means of escape. So I’m trapped until I can figure out the top-secret mouse click or keystroke combination. Should I place the blue orb on the green pedestal? I guess I really should have left a breadcrumb trail. Or maybe the developer was a ZORK player! Let’s try XYZZY!!!
Just Give me a Good Example
Like pictures, a good example is worth a thousand words. Good examples are worth their weight in gold. A really good example can get me to where I want to be – understanding what I need to know – much more quickly than an entire chapter of words. Good examples are hard to come by. They require lots of thought and planning.
Here is an example of a bad example:
2 @ 2 = 4 where ‘@’ is some arithmetic operation.
OK – did we add or multiply here? Who knows? This is totally ambiguous, and a bad example.
Here is an example of a better example:
2 @ 3 = 5 where ‘@’ is some arithmetic operation.
It is obvious here that the “arithmetic operation” was addition.
The Cluttered Screen
One of my favorite games as a child was the type of puzzle where a group of objects is hidden somewhere in a very busy picture. The names of the hidden objects are listed on the side of the page, and the object of this type of puzzle is to “find the hidden objects” that are on the list.
Some user interface designers and builders are very adept at hiding items on their incredibly busy user interface screens. Perhaps in their youth, like me, they liked to play with “find the hidden objects” puzzles also. The problem here is that they are designing “find the hidden objects” puzzles into their user interfaces! Is it really necessary to squeeze in every data field and push button onto a single screen? Is the perception here that a single screen, no matter how extremely busy, is somehow easier to use?
My end-user work instructions tell me that if I push the “show details” button, I will then know the meaning of life, the universe, and everything. But where is the “show details” button? I am really good at playing “Where’s Waldo”! Just give me an hour or two and I will find it!
The Plethora of Scattered Screens
The opposite of the tightly packing everything onto a single cluttered screen is the scattering of the user interface among way too many screens. It becomes a memory exercise to remember the user interface elements that I have already touched, and a scavenger hunt to locate the interface elements that I haven’t found yet. Let’s see … what was that part number that I entered on screen 152? Or was it on screen 376? And where do I go from here to get the order number? Does anyone have a roadmap that I can follow?
Maybe if we could consolidate the enormous number of screens down to a few that represented logical work flow groupings, I could spend less time screen hopping and be more productive.
Let’s Get Colorful and Fontsy
I suppose that’s OK, isn’t it? It really wasn’t too difficult to read the sentence above, was it?
Consistency is Key
Let’s examine the rental car scenario that I posed at the beginning of this blog. The reason that I am able to quickly enter the car and drive away is because a recognized user interface standard has been established and consistently applied to all automobile makes and models. Among the various cars that I am faced with, the gas pedal always looks like a gas pedal, and is always located on the driver’s side floor to the right. Likewise for the steering wheel, the brake pedal, and most other major user interface elements found in a car – they all adhere to standards of look and feel and placement.
It should not be too surprising then, that the not-so-ergonomic user interfaces that I have encountered do not even recognize that a standard might even exist. The really difficult user interfaces mix things up, and change the appearance, behavior, and location of controls from screen to screen.
The ergonomic user interface – the one that is intuitive, provides real help when needed, follows an organized logical workflow, and is easy to use are important components of a really great application that end users will want to use because it actually will be the best way to do their job.
Here are a few guidelines that I use whenever I build a user interface:
1) Totally and completely understand what the business requirements are, and what the user needs to accomplish. This is the first and most important step to building a good user interface.
2) Design the user interface to follow the workflow.
Organize and logically group functions together.
3) Determine if standards exist and consistently use them everywhere.
Position controls in expected and predictable locations.
4) Give feedback to the user in a timely manner.
Don’t wait until screen 3 to inform the user that there is a problem back on screen 1.
5) Craft meaningful error messages in user-oriented language.
Temper the messages appropriately – if everything is hot, then nothing is hot.
6) Make sure that the “help” you provide really helps.
Ask the user to confirm before deleting anything.
Use list of values help whenever possible.
7) Use default values whenever possible.
This avoids potential data entry errors and makes the user interface more efficient.
For example, if I work in warehouse 2, I should not have to enter that information every time I ship an item.
Display default values in pre-populated, grayed-out fields; but add a pushbutton to allow for the rare occasion when the user must override the default value.
8) Keep training documents current.
As a developer, you may not own the training documents – but someone does.
There is nothing more frustrating than a training document that does not match the actual program behavior screen for screen and mouse click for mouse click.
I hope that this blog can provide some useful hints for building effective and efficient user interfaces. Please reply to this blog if you have any most interesting user interface stories that you would like to share with our readers.