Usability Could Use Some Usable Heuristics

I’d imagine that the world’s worst presentations are given by the developers of presentation software. (I certainly sat through a staggeringly poor presentation by SGI folks during SGI’s heyday.)

I can’t find a good set of usability heuristics to beat crappy software over the head with (you must fix Blender because Tog says so), so I thought I’d write my own and pretend I’m some kind of authority.

So here, in order of decreasing importance, are my simple rules of usability.

  1. Consistency. It’s the bugbear of small minds, but guess what, a lot of users have those small minds. Don’t just be consistent with yourself — be consistent with as many things as possible.
  2. Progressive Disclosure. Show the stuff they probably want/need to see and allow the rest to be disclosed if needed. Show the functionality they probably want/need to use and allow the rest to be disclosed if needed. Make the stuff you show as powerful and general as possible and you may not need to hide much at all.
  3. Forgiveness. Make it hard to screw up (try to detect and prevent errors before they’re made), make it easy not to screw up (give useful feedback), and give people a way out if they screw up anyway (undo).
  4. Visibility. If you can’t see it, it might as well not be there. More advanced users will look in more places, so make the stuff idiots need to see bleeding obvious.
  5. Beauty & Simplicity. Ugliness is distracting. We don’t like ugly things for a reason, often “ugly” is shorthand for real problems — disease in organisms and inconsistency and carelessness in software. A consistent program is generally a tidy program and untidiness is the easiest form of ugliness to eradicate.
  6. Maximise Generality, Minimise Steps. These (often conflicting) goals are powerful tools for rethinking and improving an interface. If you can do more with less you’re almost certainly improving your UI. Improving generality (e.g. providing a dialog that does more things) is only good if it doesn’t increase steps and vice versa — that’s the key. (Imagine you could easily put all the Photoshop filters into a single dialog, but it would have a menu of all the filters in it … so you’ve created a very general dialog, but you haven’t saved any steps.
  7. Smart Defaults. When something needs to have a default value, try to pick that default intelligently (but make it easy to change). Defaulting to the user’s last choice is often a simple, effective option.
  8. User Errors are Crashes. If a user makes a mistake it’s equivalent to (and often more damaging than) a crash. Treat it like one.
  9. Avoid Preferences. Configuration choices are often a design failure. Is there a way to make this not an option?
  10. Wizards. These are generally a sign of design failure. Why isn’t it obvious how to do what it is the Wizard helps you do?
  11. Online Help. It ought to be good and largely unnecessary.

There you are, it goes up to 11 and Blender violates every single one. Perfect.

  • Chris

    I like it. I’m glad consistency is 1st. I think you meant to say that consistency is the bugbear of Java and Linux GUI apps.

  • Kernon Dillon

    The “standard” keys for Copy, Paste, Undo, and Redo work like expected in Blender. I don’t know you’re doing or not doing for them to not work but they’ve always worked for me in Blender. I’ve been using Blender for a few years, now. It sounds like you tried to use Blender without referencing any learning materials, not a good idea.

  • Tonio

    “It sounds like you tried to use Blender without referencing any learning materials, not a good idea.”

    Actually I’d have gotten nowhere without the learning materials and tutorals. This is in fact my main point (it’s the whole point of the 11th law).

    You are correct though — the standard keys do work, they just aren’t reflected in the menus, and since they don’t work consistently, I guess I was fooled. (Not exactly an endorsement for Blender’s usability in itself.)

    It’s not like I couldn’t find equally bad examples elsewhere — e.g. Blender uses a custom, horrible file requester.