3

I presented a prototype piece of software to the "customer" of a product I've been working on. The program's requirements were extremely vague because the customer had doubts as to what can be accomplished through software (he normally deals with hardware and parts).

The customer was very impressed with the functionality of the program and really the biggest desire was to have a more user friendly GUI -- whatever that is supposed to mean. This lead me to think exactly what makes for a user-friendly GUI.

I feel like its a hard question to answer as someone who writes a program due to the fact I know all the inner workings of the GUI. I know getting some friends/coworkers/etc to play around with it for a little bit and getting feedback is a great way to test the intuitiveness of a GUI, but that doesn't mean its a user-friendly, it just means the user can eventually 'figure it out'.

I don't want this question to be specific to my project, I just wanted to let you know where I'm coming from. What do you think makes for a user-friendly GUI?

Anthony
  • 9,451
  • 9
  • 45
  • 72
  • 1
    Whatever you do, stay _away_ from the talking paper clip. – Larry Lustig Jan 24 '11 at 23:20
  • Just found a similar question to my own, posting it here for others: http://stackoverflow.com/questions/1405778/what-are-some-basic-tenets-of-interface-design – Anthony Jan 25 '11 at 13:29

6 Answers6

3

You might enjoy "About Face: The essentials of interaction design," by Alan Cooper et al.

I personally am partial to Paul Heckle's "The elements of friendly software design." Parts are out-of-date, but some axioms are timeless, like:

  • Don't frustrate the user.
  • Give the user control.
  • Respond to the user's actions.

There are more, but you'll have to buy the book.

Andy Thomas
  • 84,978
  • 11
  • 107
  • 151
  • 1
    +10 for About Face. That is an excellent book on creating friendly user interfaces. – Bryan Oakley Jan 24 '11 at 22:06
  • Excellent advice. I did some research about both books, Amazon even had a preview for "About Face" which seemed very interesting -- enough so that I went ahead and ordered it. Nothing like adding to my growing software book-library. – Anthony Jan 24 '11 at 22:36
  • "Putting *might* before *will* " is probably the most succinct descriptor of bad UI design ever. I use this expression a lot, and I find that most programmers don't get it even *after* I explain what it means. – MusiGenesis Jan 24 '11 at 23:06
2

Here's a few concrete things to pay attention to:

  • avoid the use of dialogs. They interrupt "flow"
  • pay attention to tab order (ie: make sure user can use tab to navigate between items)
  • be consistent with the platform (windows-like buttons on windows, mac-like buttons on mac, use standard shortcuts)
  • use standard fonts, colors and icons. Don't think you know more than your user what looks good.
  • tailor the interface so that the most common actions are the easiest to do
  • do things that give your user confidence (like automatically saving backups or having proper undo, so they don't feel like they can accidentally lose data)
  • make sure all windows have proper resize behavior. Give the user the ability to make input areas bigger and/or make sure they work with big fonts.

And finally,

  • create prototypes (paper works fine) and ask your actual users.
Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
  • I like the fact that you mention to ask the users. I am very for end-user testing when it comes to GUI design, but such feedback can be valuable before the GUI is even officially designed (or at the very least implemented). – Anthony Jan 24 '11 at 22:16
  • +1 - and paper doesn't just work fine, it usually works better than a "real" GUI prototype, too. – peterchen Jan 24 '11 at 22:51
0

In General:

  1. I like adding an "Easy Button": It could do all the default stuff automatically.
  2. Wizards are always nice for those who want to go through step by step.
  3. Drag and Drop capabilities
  4. Tool Tips and descriptive ICONS.
capdragon
  • 14,565
  • 24
  • 107
  • 153
  • A Wizard was the first thing that popped into my head when this came to me. Honestly, I feel that the same though comes to me for a lot of projects... – Anthony Jan 24 '11 at 21:58
0

I'd say the biggest thing is labels for inputs. I've seen too many forms that have either no labels or ambiguous labels. Also spacing, if there is a mass of white space between elements they might appear disjointed, or if they are squished together it might become difficult to distinguish between them. If there are two buttons can I easily click on the one I intend to click on?

Font choices also make for a user-friendly GUI. Sure, they are mostly aesthetic, but if I can't read what is on the screen because it is too small or in a poor font the GUI becomes more difficult to use.

Artsy items like music or images can detract from a GUI being user-friendly. Listening to the same sound on a loop can be annoying, or being slowed down when loading the application to load images can detract from being user-friendly. Imagine that the end-user will be staring at this GUI for an 8 hour day, 5 days a week. Is the GUI useful or annoying?

Use options to make the user's life easier. Let them feel like they are in control of the software rather than being dominated by it. The user should feel the software is a tool, not a necessary evil.

Small things like being able to hit "Enter" to submit a form or "Tab" to jump between elements. Make the user work as little as possible, use computers to automate their life.

Do not downplay intuitiveness, being able to figure out the GUI is a portion of being user-friendly, if the design is not intuitive or easily able to be figured out it does not invite itself for being user-friendly.

awestover89
  • 1,713
  • 4
  • 21
  • 37
  • I probably relayed the intuitiveness aspect wrong. An intuitive GUI is great! However, there is a difference between a user figuring it out within seconds and within a minute or two. – Anthony Jan 24 '11 at 22:00
0

One principle that is easy to grasp is this: don't make the user do anything the computer can do for them.

Bryan Oakley
  • 370,779
  • 53
  • 539
  • 685
0

Task-focused: Offer tasks and use terminology that your users know (e.g. "Find street" instead of "Search 'street' column"). When the user has selected a task, stick to that task. Do not mix significantly different tasks even if the implementation is very similar. Focus on necessary functionality, don't clutter common functionality with controls for infrequent tasks.

Explorative: Users don't expect they need to read a manual anymore, and they trust you their data is safe, even if they play around a bit. Be obvious, and be forgiving: give clear indications what will happen, and tolerate mis-clicks without adverse effect to your user (e.g. an undo function, or at least clear confirmations that data will now be deleted).

Consistent and Specific: Controls and features that look the same should work the same. Features that are different should look different. The principle of least surprise work here as well.

peterchen
  • 40,917
  • 20
  • 104
  • 186