There are many good and bad books/guidelines about the design of graphical user interfaces. While we are not trying to compete with these books, we still want to give you a short overview about why designing an "advanced GUI" is not as simple as it sounds because the process is an act of balancing the different needs of different user requirements and leads to a complex interaction between science and art.
Good looking user interfaces can sell a product, which sometimes goes as far as that the technologically inferior product will sell better if it offers a prettier UI, since a buyer is often guided by emotions when he makes a decision. But the interface also needs to make the user feel good, comfortable and empowered when using the entire system, which in turn is just the sum of many independent products that have to integrate, interoperate and coexist.
The visual appearance of a system can be customized in a limited range to please a particular audience. For example Apple provided interface "themes" in Mac OS 8, which enabled users to choose how their system should "look" (window borders, colors, fonts), but usually you can not change how the system will "feel". If you want to change a systems "feel" you have to change every applications "feel"; and this is only possible in a very limited range or requires a lot of addition work ... which means that software companies are not likely to support it (here: support for multiple themes) unless it is considered crucial or comes for free (which it usually does not).
So a good "look" must define a common style which is pleasing and suites almost everybody (the novice, the professionals, the artist, the children, the color blind, ... ) while leaving enough freedom for software developers who need a slightly different appearance for their application, without forcing them to break too many rules, which would make the entire system look inconsistent. The "feel" has to be a mix of powerful, intuitive simplicity which also should scale with the users knowledge and experience level.
Since many goals can not be reach at the same time, being polarized extremes of one and the same problem, it is up to the designer to set priorities and to find the right balance for the "look" and the "feel".
It's a GUI world
The "design" of our brain and body has been refined and trained during the last million years, which means that there are certain things we just have to accept. Many aspects of psychology, physiology and culture have a huge impact on the design of user interfaces.
The arguments for command line interface (CLI) vs. graphical user interface (GUI) are well known. While an advanced and trained computer user can perform certain tasks faster with the CLI, the regular user is, by an order of magnitude, more productive with a GUI. Some people, however, draw the conclusion that CLIs have become obsolete in general, which is not true. Just like the telephone will never be able to fully replace a written postcard, even when both can be used to deliver a message.
GUIs can build on the human visual and cognitive capabilities and allow, with a certain level of abstraction, to leverage knowledge about real world things and their behavior for the interaction with a virtual environment or tool. They can provide visual clues about possible features and choices, can deal with more complex interfaces and provide a steeper learning curve.
While some issues affect CLI and GUI design, we will from now on focus entirely on GUI aspects. The following is not a complete list but gives a brief overview of the most important "checkpoints":
In most western cultures the reading direction is left-to-right, which is their usual "flow" of information. But there are cultures which read right-to-left or even top-to-bottom. So all decisions (e.g. scrollbar position) which are based on a left-to-right "flow" direction argument will be, by definition, bad for the other cultures.
The are more cultural issues (language, script system, etc.) which need to be considered and often result in the implementation of "selectable options" in order to please as many users as possible.
Most people are right-handed ... but not everybody is. Left-handedness should not be a handicap in using a computer. If the argument for a certain UI widget design is the users handedness, it is, by definition, contra-productive for the other group. Btw. handedness (and the writing technology) to some degree affected the text flow direction described above. People wanted to see what they already have written - so you start on the left side if you write with a pen in the right hand.
Colors can help to make an environment more pleasing, but they can also render an environment close to useless for a colorblind person if the information is only "encoded" with indistinguishable colors. The careful and proper use of color is not easy since it has to satisfy the "demands" of art and culture. Certain colors (e.g. red) have a different meaning in different cultures.
Even without being physically handicapped (e.g. by short sightedness, ...) there are limitations to our cognitive system which apply to almost everybody. They limit the number of item we can visualize or remember at a given time, define how quickly we detect changes, affect which impression a certain graphic or sound leave and many many other things.
"We're all individuals"
Specialized or powerful features which make the advanced user very productive can confuse a novice user. It is tricky to design an interface which can provide tons of advanced power features which do not interfere with the requirements of a novice.
Offering customizable preferences, where a user can specify his level of experience for a certain area, is a way to do the split, but still all features are a tradeoff between both extremes.
Since people do not only differ in their computer knowledge but also in so many other likes and dislikes, it is good to offer alternatives, allowing one task to be completed (and memorized) in different ways.
It is wrong to call computer interfaces "naturally intuitive" - there is no such thing today, since you still can not talk and interact with a computer in the same way like you can with real world objects. All a GUI can do is to reduce the number of new concepts and thereby lower the learning curve, which in turn will make us consider something "intuitive" the next time we are faced with a similar problem when using a computer.
GUIs are more intuitive then CLIs since our brain knows a lot better how to deal with visual objects and can memorize images and shapes a lot better then plain text. The process of memorizing images is a more fuzzy process and therefore easier for us; combining images with text is even more powerful. But even GUIs can run into the mistake of hiding information from the user which is important in order to make a decision or to perform a task.
Today's average computer users have become more computer-literate then people where 10 years ago. While the computer should adopt to the users way of working - and not the other way around - there are certain limitations in keyboard/mouse based computing. Luckily users generally have no problem to understand the idea behind windows, buttons and scrollers, and by now consider many GUI concepts "intuitive" (which is often referred to a "muscle memory").
Consistent vs. Specialized
Derived from the demand of being "intuitive" is the conclusion that UIs should be consistent in the first place. Keeping them simple by reusing the same concepts over and over again keeps them easy to learn and use (well ... intuitive if you like). This often needs to be balanced with demand for highly specialized (and more powerful) concepts which could be used for a special purpose.
Layout and appearance
The size and position of an UI element does matter. First we have to find it on the screen (nope ... that's not always as trivial as it sounds) and then we have to activate it. The longer the distance our mouse cursor has to travel and the more likely we are to overshoot past the items location, the harder it will be to activate it. The task of hand-eye coordination is harder with the mouse-cursor combination then with a pen based interface.
Having an interface which is visually pleasing is important (as we described earlier)
It is obvious that the kind of input devices (mouse, pen, ...) affect a user interface. But other limiting resources need to be considered as well: processing power limits the responsiveness, system and storage memory constrain the richness, size and number of displays dictate the graphical layout, ...
For example screens in 1997, even on laptops, are considerably larger then on most desktop machines back in 1984. In the future the number of screens and their resolution (total count as well as density) will increase further. The behavior and design of many UI elements need to balance all the factors (e.g. is one fixed menubar really the best solution for document centric computing on multiple screens ?).
But worst of all, the physical size of the device is crucial for the desired usage (handheld or portable or stationary), and this in turn limits the type of useful options (as you can not build a full size keyboard into a palm sized computer).
An operating system sets a number of preconditions too: how long are the filenames, does it support multiple users, can it handle full multitasking, ...
So if your system can perform a lot of tasks at once it has to provide proper feedback to the user about which task a certain action is related to and make sure that he does not get lost on his desktop with so many things going on.
All these aspects affect each other and make the design process a continuous search for balance and simplicity. For example you can display a number of choices using a popup list, a set of regular buttons or radio buttons or a scroll view containing icons. All will fulfill the same task (choosing one item) but each has its benefits (displaying all choices at the same time, combining icons with text, etc.). As there are always many alternatives to a solution, and each has its pros and cons, nothing will be perfect under all circumstances.
In order to innovate and move forward it sometimes might be necessary the break with some old (and now considered "intuitive") features in order to establish new paradigms and hopefully make the interface more consistent, easier to understand and use and perhaps even make it more powerful. Sometimes one enhancement will trigger many other changes, cascading all over the place unless one is willing to sacrifice consistency.
Users often don't see the complexity behind good interface design ... and that is good. After all, they should not have to worry about it. But users worry when they see things chancing and are likely to refuse too many chances happening at the same time ... so market psychology is added to an already complicated equation.
Sadly way too many developers are UI ignorants too. They often just don't understand what typical users need or have no (or a very strange) feeling for visually pleasing design. This is similar to the well known "desktop publishing fonto-mania" syndrome, which makes it easy to tell whether a document was design by an artist or not.
On the web you will find many resources on interface design. Nathan Shedroff has a very good collection of interface resources and the Isys Information Architects maintain a great hall of shame and hall of fame in GUI design.
It is good to keep this topic in mind while we take a closer look at Mac OS X again and its core interface concepts ...