Goal Oriented Design Design

Portfolio for Jonathan Reid

 

Of each particular thing ask: what is it in itself? In its own constitution, what is its causal nature?
-- Marcus Aurelius

Almost all of the problems with modern software user interface design originates from well-intentioned, intelligent and capable people focusing on the wrong things.
-- Alan Cooper

What does it take to successfully design a user interface? Clearly there is no One Right Answer to that question (or if there is we haven't found it yet) because if there were, we'd all be doing it that way.

I tend to believe that of all the different ways to design software, user-based design is the best. Most often these users are people, though sometimes the users can be other software. I'm going to stick with human users in this case; specifically English-speaking Western people. This is an important distinction, because some of the things I will be talking about cannot be generalized to other cultures, and many of the things which can be generalized to other cultures can only do so with caveats.

It's the users who will determine whether or not a piece of software is "good" or "bad" or "just kind of okay, I guess." But how do they make that determination? If you ask users that question you'll get either vague answers ("it's just not easy to use") or specific but unhelpful answers ("that screen is confusing").

User-centered design sounds good, but it's not so easy to actually do. There are several paradigms that you can apply to get started, and I think which one is best can depend on the project at hand. But in the end, they all seek to determine what it is about user interaction with software that can be quantified and therefore worked with.

Since I'm concentrating on the redesign of a business application, I've chosen goal-oriented design as my guiding paradigm. Goal-oriented design presumes that users interact with software to achieve a set of goals. This is a good choice for business software because it is pretty accurate: people fire up a piece of business software when they need to achieve some goal or function in their work.

That's a pretty good start: focusing on user goals will give us insight into how to make the software perform better. Okay, great. But what actually are user goals?

Turns out there are two different kinds of user goals: primary goals and secondary goals. Primary goals are the goals that users have set for themselves. Secondary goals are the goals that users adopt (usually in response to environmental influences) to help them achieve their primary goals.

The problem here is that when you ask just about anyone for an example of a primary goal, most everyone--including users themselves--will start listing off secondary goals. "A user will want to process invoices efficiently," they'll say. Or, "A user will want to be able to record lots of calls in the database quickly." Those are all secondary goals, goals that users have adopted in response to environmental influences. I can guarantee that there is not one person who said to themselves when they woke up this morning, "my goal today is to enter invoices."

And yet, these secondary goals are important. Software has to support secondary goals or it's no good; it makes no sense to have invoicing software that doesn't support entering invoices.

So what are primary goals? Primary goals are the goals that users set for themselves. They are typically very personal and only peripherally related to tasks. Examples of primary goals are:

Even users that are more ambitious will still have very personal goals as their primary goals:

Primary goals are the driving force behind human interaction with software. They are the overriding goals that users have. Secondary goals are just that: secondary.

Here is where an important distinction becomes obvious, the distinction between functionality and usability. Primary goals inform the usability of the software. Secondary goals inform the functionality of the software. You must concentrate on both or your software will not succeed. There is, for example, plenty of software out there that is nearly perfect when it comes to functionality, and yet nobody likes to use these programs because they make the users feel stupid or they're tedious to use or they otherwise violate any of a number of other primary goals.

This is the synergy to strive for: software that is designed to achieve secondary goals while enabling users to achieve their primary goals. So how do we do this? Here is where we start getting into context. User interfaces are tools, and just like there is no one tool that does everything, there is no one user interface that is perfect. You must design user interfaces based on their context: how will the software be used, who will use it, how frequently, for how long, and so forth.

All of these questions, including their context, can be boiled down into one simple characteristic of a good user interface. A good user interface makes the user more effective. There it is, in all its glorious simplistic complexity: a good user interface helps the user achieve goals effectively. Now, what constitutes "effective" is where all the context comes in, but that's a good guiding principle to start from.

This is what constitutes "goal oriented design." Goal-oriented design provides a useful (if occasionally elusive) touchstone that you can always go back to when you are looking for answers to the questions that typically pop up during application design and development:

In addition to providing a useful and necessary touchstone in the development process, goal-oriented design can be compelling. Consider, for example, you went to your local library to find a book to read. You don't have a particular title in mind, or a particular author, so you're going to be browsing the stacks and searching the catalog. Right now libraries have some sort of computerized search system that is based mostly on the old card catalogs they used to maintain. But consider if, instead, you were presented with this catalog search tool when you went to browse for fiction:

Screen shot of fiction filter

Then the catalog would present you with a list of books matching your criteria, with the most relevant at the top. You wouldn't have to worry about authors or titles or editors or anything, you would just indicate how much each content interests you and the system would take care of the rest.

Now consider if Netflix had such a search tool.

This is a purposefully overstated example, of course. The implementation for such a tool would probably be difficult, to say the least. But it gives you an idea of just how compelling an interface can be when it is designed with user goals in mind.

Goal-oriented design provides a useful touchstone, a frame of mind, for managing the product creation process. You can use it to formulate usability surveys and research, you can use it to guide the application design process, you can even use it when it comes time to do QA on the end product. Since it keeps the user foremost in mind when making design decisions, it provides a basis for successful user interfaces.