We want powerful functionality, but a simple, clear interface. We want ease of use but also ease of learning. We strive for consistency across all aspects of the interface, but also to optimize individual operations. The interface designer finds him or herself constantly confronted with these kinds of conflicting goals. Everyone on the project team gets in a room, and a rather unstructured debate ensues.
Designers argue for their favorite design alternatives and counter arguments are put forth.
Individual, and often trivial and inconsequential design decisions, often take hours, days or even weeks to resolve, and usually the winning proposal is determined by the sheer persistence and stamina of its advocate, rather than its overall merit. Such meetings are, for the most part, an inexcusable waste of valuable time. However, prototyping and objective testing methods could easily be carried out in less time than is often spent in these endless design meetings. Software designers and developers need methods and techniques to help them effectively manage the design of the user interface, and make good design decisions for a given product with its particular set of end users. The purpose of this tutorial is to present and discuss such methods and techniques within the overall context of a typical modern software development life cycle.