Useful Design

‘Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.’ – Principle 1, The Agile Manifesto

Mission First
Be Logical yet Flexible
Be Navigable

Useful: Able to be used for a practical purpose or in several ways.


Be useful, flexible and navigable.

An application should improve business performance and knowledge, it must add value.

It should enhance communication, productivity and creativity.

Design should enhance the usefulness.

Consider the design that suits the format that the user is expecting or would most like to see the data presented in.

Design should complement the use not distract from it.

Make the most useful functions the easiest to find and use. Design should be based on usefulness not on the database entity-relationship structure.

These principles are all interrelated. Efficient design helps clarity.

The also require value-based optimisation trade-offs. Balancing frequent users desire for efficiency and rare users need for stepping things out. Clarity vs minimising navigation or clutter.

Mission First

1. Design for the users
2. Achieve the mission
3. Start well

Who are the users?
What are the users trying to achieve?
What are the best ways to welcome and orientate a new user?

Before you judge someone walk a mile in their shoes.

Useful design is functionally appropriate to the user’s mission.

Achieve the mission

Mission: A specific task with which a person or a group is charged


1. Design for users

Who are the users?

Software should be design for users to use. Before you can make a design useful you must understand the users and the business processes involved in the system, this is driven by deep collaboration. Value comes from users achieving their objective of using the system.

‘Business people and developers must work together daily throughout the project.’ AMP #4

The designer must know:

  • the users and their abilities,
  • the functions they want to perform
  • the expected frequency of use of each function.

The best way to learn is to experience. Sit with the users, do their work for them under their superversion. If other systems exist, then try them out too, take screenshots, make notes. Document everything.


Writing user stories can be more useful than simply trying to isolate use cases. Giving users personas helps keep things in mind during design and development that may be relevant. They often spur good ideas, they give a richness that a use case might not document as use cases tend to be process descriptions. The documenting of design for users and developers (and business rep sign-off) should be in narrative format, not the sparse pseudo code that was favoured in the early days of software engineering.

User story want to document the situation and the motivations, the location and time of day, the other responsibilities or distractions facing the user.

Put key points up on the wall. Decentralising command, flexing empowerment means everyone is a designer, we want good ideas from everyone. If things are on the wall, they are broadcast to everyone and they becoming an open invitation to contribute.

2. Achieve the mission

What are the users trying to achieve?

Less is more but sometimes more is more; the art is to make complex things clear and efficient but not simplistic and tedious.

Is it data entry?

Is it finding information?

Is it making a comparison?

Is it browsing?

How do the missions overlap and interact?

Know your users, keep this in mind when translating the user stories into use case narratives.

Combine multiple use cases into single documents. Are there patterns?

Defining the workflow, usually with decision points and states is imperative.


Design to consider future business uses.

3. Start well

What would be the best way to welcome a user?

Ease users in, know your users!!

Be friendly to new and infrequent users but do not waste the time of frequent users by nerfing for sake of new or infrequent users.

Direct training is the best way to ease users into to business systems.

1. Welcome notifications

3. Offer extended guidance

2. Respect standards

Be Logical yet Flexible

1. Present information logically
2. Be flexible
3. Be helpful

What does the user expect next and where do they expect it to be?
What else might the user want to do?
What help would be useful?

Useful design provides the most logically pleasing way of performing a task so that the user is driven to use it to perform the task.

Useful design is flexible; well-designed software can often cater for two or more business uses on a single screen.

There is nothing wrong with having a menu ribbon button and a drop down menu item that does the same thing. There is nothing wrong with have a save button at the top and at the bottom of a data entry page.

‘That’s the thing about common sense; it isn’t.’

Logical: Characterized by clear, sound reasoning./ˈlɒdʒɪk(ə)l/

Flexible: Able to respond to altered circumstances./ˈflɛksɪb(ə)l/

Present information logically

What does the user expect next?

Information should be presented in the most useful way, so designs should typically present Information logically from the user’s expected usage point of view.

Information presentation, and the way tasks are performed should flow in a natural and logical order from the user’s point of view.

The user should not have to stop and think about how to start or complete a task.

Be flexible

What else might the user want to do?

Consider alternate paths, user stories and exceptions.

Be helpful

What help would be useful?

If possible always offer help and tips and ideally make it context sensitive. Topics on offer should explain what is happening, what is required of the user, or how to perform the current available tasks. Any such information should be easy to search, focused on the user’s task, list concrete steps to be carried out, and not be too large.

Be Navigable

1. You are here: keep the user informed
2. Provide a useful search function
3. Always provide escape paths

How does the user know where they are?
What will the user search for to find what they want?
How does the user cancel, or undo, an action, and go back?

Usefulness design is easy enough to understand so that the user enjoys using it.
The design should ensure you:

  1. Know where you are.
  2. Know how to get where you want to go.
  3. Know how to start, know where you are along the way.
  4. Get help easily if you are lost.
  5. Find other things easily.
  6. Escape or return if you decide you have gone the wrong.
  7. Finish in the expected place.

If you don’t know where you are, how can you get where you want to go?

Navigable: Easily plan and travel a desired course.


You are here: always keep the user informed

How does the user know where they are?

At all times the system should provide clear evidence to users about where they are, what is happening, what their options are, and what the consequences of their actions will be.

Make it blindingly obvious at all times, what every item’s type is and what its current state is.

Always provide a useful search function

What will the user want to find?

Applications typically require search and select functionality as part of navigation. This should be built in to ever page that needs it, not just on a starting page. Advanced search should be no more than one click away.

Always provide escape paths

How do I cancel and go back?

It should be a single action to back out when a user finds themselves where they don’t want to be, or when they want to take back their actions if they change their mind. Help users prevent, recognise, diagnose, and recover from errors with messages in plain language (no codes) that precisely indicate the problem, and constructively suggest a solution. Remember also not to oblige the user to remember details of the message if possible.