The answer to this question is pretty simple, actually. We already have a list of what makes designs obvious and effective. To define a plan of action for how to create obvious designs, we simply need to turn that list into a list of goals. It'll take the rest of this book to fully illustrate the following goals and how to accomplish them, but this section should give you a solid glimpse into what needs to be done, along with some details about where in this book we'll discuss each point.
Turn qualities into goals
The key to creating great Web-based software is to turn the list of qualities from the preceding section into a list of goals. In other words, our new mission should be to create software that does the following:
Conforms to the way users interact with the Web, but focuses on the activity instead of a specific audience. Understanding users is key to understanding how to approach application design, but as long as we have this understanding, it's best to ignore the demands of users and focus on the activity itself so we can create a feature set that makes sense for the product. In Chapter 2, we'll talk about how to understand users and why it's necessary to ignore their whims.
Has only those features that are absolutely necessary for users to complete the activity the application is meant to support. Moving the "nice to have" features out of the "things to build right now" column is never easy, but it must be done. In Chapter 3, we'll talk about how to divide up the feature list and when to reevaluate nice-to-haves.
Supports the user's mental model of what it does. Allowing an application interface to reflect the inner workings of the program itself is a classic no-no in application design. We'll talk about the differences between implementation models and mental models in Chapter 4 and discuss ways to twist and contort and mold your application into shape before you ever write a single line of code.
Helps users get started quickly so they can become intermediate users as soon as possible. Once users understand how to work with it, the newbie stuff goes away so they can perform their regular operations with ease. Then it eases them into the advanced features. We'll talk about this in Chapter 5.
Makes it easy for users to recover from mistakes and difficult to make them in the first place. Applications should avoid demeaning or interfering with the work of users in any way, instead offering polite interactions that keep things moving forward. Users have enough software issues to deal withthey don't need our modal dialog boxes interrupting their workflow, or error messages popping up to tell them they've screwed something up or that an application has failed in some way. This kind of negative feedback is just plain rude, and reduces a user's ability to explore an application. Software can become more polite, however, through the creation of poka-yoke devices. Poka-yoke is the great idea with the funny name. Roughly translated from its Japanese origins, it means "error-proofing." And you'd be surprised how easy it is to create such devices in Web software. We'll talk about this in Chapter 6.
Has uniformly designed interface elements, but leverages irregularity to create meaning and importance. Uniformity is core to good design, but knowing how to leverage irregularity is a little trickier. We'll explore this in Chapter 7.
Reduces clutter to a minimum. Finally, in Chapter 8, we'll examine the concepts of clarity and simplicity in Web design, look at how to eliminate waste in the design process and in our interfaces, and put Just in Time design to work to iteratively create software that does its job well.
With this list of goals spelled out before you, the task of designing the obvious might seem much simpler than it did before. But, as you'd expect, it's much easier to believe you know how to do all these things than it is to actually do them. So the rest of this book is all about the things we need to know and do to make these goals a reality.
To get started, let me introduce you to what I affectionately call "The Framework for Obvious Design."