The most misused aspect of UserInterface.
GraphicDesign is visual communication. Like all communication, there is a "language", and effective GraphicDesign requires fluency in the language of visual communication. Any of the texts by EdwardTufte offer a great start.
As with many aspects of HumanInterface it is very easy to optimize the wrong parameters. Gorgeous, lush UserInterfaces that are unusable are so common that it's sick. Think of the number of Web pages out there that were designed in PhotoShop and looked fantastic as a comp on a salesman's laptop but are lacking in the key factors that guide people using the system in accomplishing what they wish to do.
Most common errors of GraphicDesign:
Graphic Design Tips for Programmers: (See also GuiGuidelines)
- Get a graphic designer to do it. I'm a programmer writing this. If you're doing a GUI for a commercial product involve a graphic designer, a good one.
O.K. so let's say for whatever reason you didn't follow the above tip.
- Treat design of icons with the same care with which you would choose variable names. The same principles apply. You are designing families of icons, not individual icons. Be aware of what 'component' of an icon varies between the icon - there may be a common theme to the icons and each icon makes a variation in one direction.
- Remember cultural differences. 'Busy' interfaces with loads of controls on one dialog go down well in Japan, but less well in Europe. Is your source code factored in away that support both styles?
- Remember the binkley-mousetrap-carburetta, an impressive device with five different controls on it which was impossible to tune properly as all five had to be set correctly. If your GUI controls some process, make sure the user controllable parameters are 'decoupled', so that you can tune each parameter in isolation. This may mean additional feedback to the user of intermediate steps in a multi stage process.
- Remember that your beautiful input forms may need to be bypassed entirely, so don't neglect basics like text-formatted input of data (e.g. CSV, tab-delimited), and cater for them from early on in your GUI design - i.e. proudly present this option in the right place of the GUI. Don't hide it behind some back door.
The discussions about job roles is an interesting one. Web sites are essentially software applications, traditionally built by software programmers. However the 'look and feel' of software applications was originally rarely done by 'creative' professionals. Of course, from the other side, the subject of whether graphic designers can, or should, also get their 'hands dirty' with the coding aspects of web design is an ongoing one. Who is best suited to design the human interaction aspects? There is an interesting thread that is related to this subject here; Should graphic designers learn to code? http://www.designtalkboard.com/designtalk/index.php/topic,38.0.html