So what makes the best GUI? It depends on the task at hand, or more importantly, the qualities that are most important to the task: speed, accuracy, simplicity, etc.
There are 3 general types of users: the customer, the worker, and the techie.
The Customer
The customer is your average person that comes to your system (usually a website now days) and wants to accomplish a specific task, such as to place an order or look up some piece of information. The thing that distinguish customers from other types of users is that you have no control over them. You can't force them to go through training before using your system, nor would it be a good idea if you could.
Consider when you go to the DMV. Do you know which documents are required for every type of license? How would you feel if the clerks at the counter expected you to know every detail of how to renew your license with little instructions? If your anything like me you just want them to tell you what documents they need and how to obtain them, so you can get them and get your license as easily as possible. Customers feel the same way when they use your system.
This requires the GUI to be as simple as possible. Simple for the user that is, which means it needs to be complicated for you. The GUI should guide the user through the task in a simple way and completed with as little thought as possible. Any unnecessary details should be removed. The GUI should make liberal use of wizards to help break the task into small steps. Each field should clearly explain what it is, what values are valid, and how to go about getting the information (if it isn’t obvious). There should be no abbreviations. The GUI should validate everything as much and as soon as possible. You should consider removing some functionality in order to keep the GUI simple, or at the very least isolating the more complicated rarely used functionality from the rest of the interface.
Worker
The worker is someone that uses the system on a regular basis in order to achieve a repetitive task. Think data entry clerks, customer service representatives, or many other types of office personnel. Workers have 2 advantages over customers when in comes to system interaction. First they have access to training and support, and second they use the system on a daily basis. Both mean they will be capable of learning the details of the GUI, which allows it to be much more complicated.
The best example of interfaces for workers is game GUIs. Good games have a depth that makes it very complicated. Any player will appreciate being exposed to the details of the game play. It may make the learning curve high initially, but to get good at the game, it is required. Still, it isn’t the goal of the player to learn the intricate workings of the game. The goal or task is to beat his/her opponent. Good game GUIs will allow the user to concentrate on winning the game. It will expose details that help with that goal and hide those that do not. It is the same as good GUIs for all workers.
The most important qualities for GUIs for these types of users are speed and accuracy. The GUI should allow the user to enter all the data needed as quickly as possible, while maintaining the integrity of the data and the system. It should also allow users to quickly correct mistakes. The screens can contain a lot more information then GUIs for customers. To make room, the fields should contain less help and context information. Usually a (possibly abbreviated) label will be enough.
Another important aspect of good worker GUIs is performance. The screens should not only allow the user to enter information quickly, but also to store and retrieve it quickly. If you create a GUI that allows customer service personnel to place orders twice as quickly as before, then you just doubled the capacity of your company (and possibly got half of your users fired, but try not to think too heavily on that).
When designing a GUI for workers its important to remember that they are experts at their jobs, not at the system. The GUI (and the system) should be designed to empower them to do their job better, faster, and more accurately. It should not distract them from their job by forcing them to learn non-relevant details. Just like a game should not force you to know how it stores its information, or how it displays its graphics in order to be good at it.
Techie
The last type of user is the techie. The hallmark of the techie is his/her intimate knowledge of the system. Examples are system admins working with operating systems, or developers writing a GUI to manipulate the system he/she helped develop or maintain.
The most important qualities for these GUIs are simplicity and power. Things that would be an error for other users should be allowed with a warning at most. In this situation, the user knows more about the effect of what he/she is doing then the GUI. An excessive amount of validation will prevent users from manipulating the system in a way that may be needed as a result of bugs or other problems. It will also most likley be a waste of time to code. I’m not saying the GUI should allow anything bad to happen to the system, just that the definition of bad is relative to the user.
The first thing you should consider when developing a GUI for a techie is if it is really required. There are numerous tools available that may suffice. I would even consider using SQL directly to the database (with limited permissions of course) instead of developing a GUI on top of a table that effectively does the same thing. For java developers JMX is another way of avoiding developing your own GUI.
Conclusion
Keep in mind that these are general types of users. Rarely will users and systems be that simple. Think of it as a line. On the left, with the democrats, we have the customers that need as much guidance as possible. On the right, hanging with the republicans, we have the techies, who require all the power and none of the simplicity. And the independents in the middle are the workers, with some knowledge of the system, but no details.
Where your users fall on this line depends on the system, your users, and the context. For example, your GUI could be for a job that has a high churn rate. In which case, your users would be workers, but fall further towards the customer end of the spectrum. Or you could have a GUI designed for the help desk. In which case they would clearly be on the right, but fall further towards the worker end. It’s also possible to have systems that doesn’t fall cleanly at any point on the line, and have to take aspects of all 3.
What do you think? Are there any other types of users that i'm missing? Do you have any other advice for GUI design? Should we start to rewrite all the GUIs in the world, or was this a waste of your time? Feel free to leave your opinion in the comments by rating the article a +1 brilliant or +1 stupid!

No comments:
Post a Comment