by Jason Tyro - GUI Computing
'Human Computer Interaction', What the hell is that?
Graphical user interface design, the bane of every developer in the land. You slog over a hot computer for hours on end ensuring all the functionality explicitly specified on the specification is integrated, only for the client to complain that your creation is too difficult to understand, there's too many options, text boxes, buttons, the thing is just too damn complicated.
Your product may contain the greatest coding ever seen in the developed world, but if the user interface sucks people will be scared to use it, you've just created your very own Frankenstein's monster. This is the first in a series of articles that will highlight and attempt to tackle the problem.
Through the lifecycle of a project it becomes increasingly difficult to distance yourself from your work in order to get an independent perspective i.e. a users perspective. As the creator of the system you will, hopefully, have an intimate knowledge of its 'workings' and therefore the user interface you have supplied is consistent with this. However, your in depth understanding of the system is most likely to be totally different to that of the users and it is this difference that is usually the cause of the problem.
Within the subject of 'Human Computer Interaction', the user's perception of a process or system is called a 'Mental Model'. This personal view maybe totally incorrect or incomplete to the actual systems structure, but the user's understanding or perception is enough to allow them to operate successfully.
Confronted with a 'difficult' user interface, the user will not take 'well this is a one-to-many relationship and the referential integrity must BLAH BLAH BLAH…..' as an answer. It is up to us as developers, to 'intelligently' design the user interface in such a way so the users have their very own 'mental models' intact.
So how should we go about developing a user interface? This is a difficult question to answer (no surprises there!), but basically the users should be the focus of the developers attention. How many times have we developed systems in conjunction with management only to find that they have incomplete or incorrect knowledge of how the users actually work.
The fundamental questions that should be asked include:
Answers to the above questions can lead to deductions about how the user interface should 'look and feel'. In the same way a criminal psychologist builds a profile of a serial killer based on available information, you too can build up a profile of your systems users and tailor the user interface to meet their requirements. Should listboxes or datasheets be employed? What about a 'Wizard' style solution? Should it be mouse or keyboard controlled? Etc. etc.
Intelligent use of frames, dividing lines and colour to separate or highlight sections of a form can greatly increase the general understanding of the functions contained within.
Placing lots of pretty bitmaps on your forms may look nice but is probably not a good idea where low specification machines are in use, pity the poor user who has to wait for them to load!
Don't fall into the trap of thinking that good user interface design is just about the aesthetics of a form. A good developer should also think about enabling/disabling controls at the appropriate time, meaningful error and message boxes and system status messages for long processes, there's nothing like watching a static screen for 3 minutes while processing is taking place, watching paint dry perhaps?
What if your potential users have differing perceptions of the system, and abilities, and hardware specification? What if some users love your initial interface while others loath it? Hey, nobody said this was going to be easy…………..