Life, the Universe, and Software EngineeringLife, the Universe, and Software Engineering

The Lost Art of User Interface Design

Main Image

The art of user interface design has been around for as long as people have built and used tools.   User interface design principles were well understood prior to the “web revolution” and most well known computer applications can, and still do, attribute their popularity to the successful application of these principles.  When thin client interfaces exploded during the .com era, the tried and true princples of user interface design were left behind in the rush to build web presents and attract as many customers as possible.

Customers it turns out are a fickle group. Attracting a customer to a web site is only part of the problem.   Keeping customers and having them return to the site turns out to be the larger issue.  Aside from the products and services a web site may offer, if the user experience is not satisfying, the user may not return.  If they can get the same products and services elsewhere, they will not return.  First impressions are everything.  In most cases the site only gets one shot at pleasing a customer before loosing them forever.  

Enter the re-emergence of user interface design principles.  It turns out, not so supprisingly, that the application of well known user interface design principles are as applicable to web site design as they are to desktop application interface design, car dashboard design, or mobile device design, etc.

The design of a successful user interface is an iterative and highly interactive process.  A great deal of dedicated time from  system stakeholders and users is required for this effort to be successful.   If an existing system is being redesigned, Input from both new users of the system and experienced users of the system are considered important to acquire an accurate understanding of the design flaws that need to be corrected and the design successes that need to be preserved.  If a new system is being design a great deal of attention must be paid to identifing and categorizing the sites audience groups.  Senarios need to be developed, and potential new users need to be exposed to the user interface repeatedly for the design to take shape.

Although low tech prototypes such as wireframes or whiteboard drawings may facilitate initial communications between users and designers NOTHING can take the place of interacting with either a prototype or a fully working user interface.  The higher the fidelity used to elicit feedback from stakeholders and users, the better the quality of feedback received.  

Agile development techiques are particularly useful when user interfaces are being created.  The inherent iterative nature of agile development gives time for repeated user exposure to high fidelity interfaces.  Each iteration’s review and accepance meeting results in findings and suggested changes that can then be incorporated into requirements for future iterations.  Each iteration gives the opportunity to improve on the user interface shown in the previous iteration.   

With proper application of the user interface design principles outlined below, web sites developed with Agile techniques stand a very good chance of attracting return customers.   




The user interface should be user-centered and not system-centered.  Common tasks that the user performs on the system should be easily found and accomplished.  The interface should be easy to understand: simplicity over complexity; discoverability over concealment.  All of the user interface design principles discussed here contribute to the overall usability of the system. 


The system should be easy to learn.  Every effort should be made to reduce the learning curve required for new users of the system.  Usability and learnability are not mutually exclusive; both goals can be achieved by providing flexibility in the user interface (see below).


Understand that users of the system move though a continuum of competency during their interactions with the system:  From first exposure or novice, to competent user, to expert user.  This scale is not linear and users can move both forward and backward on the scale depending on how often they access a section of the system, their level of metal acuity, focus etc.   The system should accommodate all levels of user interactive by providing multiple ways of accomplishing the same goal.

Allowing the end-user to choose their own path through the system, rather than having the system be rigid and inflexible gives the user the feeling of “empowerment”, makes interactions with the system less stressful, and greatly aids in the adoption of the system.


Where possible, pattern the user interactions with the system after common place real world experiences.   Choose one or more metaphors that are familiar to the user population and were possible help tie the real-world job function to the virtual representation that the system represents.


The behavior of the system should be internally and externally consistent.  The system should be logically consistent and easy to follow.

State Visualization

Change in behavior of the system should be at all times reflected in the user interface.  Change of state, such as the concept of current selection should be visually obvious in the user interface.


Allow the system to provide a level of safety for the user.  Provide a ways to back-out changes and/or prompt when an operation is unrecoverable.  Providing a safety net for the user will allow then to quickly feel comfortable with the system.


Limit the user’s activity to a single well-defined context where ever possible.   The current system context should be highly visible and easily changed.  Limiting the users activity to a single context helps promote a consistent, less confusing mental image of the system.


Provide a number of different types of help to the user based on the type of questions the user may ask during their learning experience.   Most questions can be defined as goal-oriented, descriptive, procedural, Interpretive or navigational in nature.  Understanding of, and providing support for, these basic help categories will be critical to providing complete support for the users learning experience.


All Categories