User Interfaces Design Principles

Modeled after OperatingSystemsDesignPrinciples.

The first thing to note is that almost all OS design principles are also UI design principles. For example, a UI should be

but quite a few of these principles have their own particular twists for UIs. For instance,

And then there are principles unique to the design of UIs. Well, good UIs at any rate since every principle of good design that can be formulated has been violated at least once by some hack.

Parsimony Ideas:


Its interesting (to me at least) that almost all of these principles apply equally when your "user" is another piece of code -- I.e. when you're designing a programmers interface. Its amazing how many APIs are difficult to use because they violate these principles (e.g. modelessness, expressivness, directness, expectedness, etc.)

That actually doesn't surprise me since I'm designing my OS and UI to respond in the exact same way to both users and programmers. It's a straightfoward application of ProgressiveDisclosure; people start off as ignorant users and the system progressively discloses itself to make them into programmers.

That's mighty rude to force (however gently) the user to become a programmer.

Would you say the same thing about reading and writing? That a system which gently forces the user to become a reader and writer is rude? Or how about typing? I'm not the first to speculate that programming is or will be deprofessionalizing. If I can help such a trend then that's a GoodThing.

Note also that the system doesn't force users to become programmers. That's not what progressive disclosure is about. Progressive disclosure is about showing the user the level after whatever level they're at, so that they're able to move to the next level.

"the system progressively discloses itself to make them into programmers." -- Note how there is nothing in that sentence to signify that this is an optional process. If you can't manage to write English clearly, perhaps you should seek someone who can.

That's because it isn't an optional process. Idiot. And I'm not going to bother trying to explain again. You can't understand, fine, why should I give a damn?

It isn't optional, but it isn't forcing the user to change. If what is displayed on my terminal changes over time, it is forcing me to change to interpret it. Or are you using NewSpeak when you write here?


two commonly violated principles

two principles that even most games violate: direct/simple mappings - don't penalize touch typists, don't force mouse-keyboard switching

most games DO use these for camera controls. Evil Islands uses it for most controls; it doesn't exploit modifier keys appropriately

flash the screen if you need to get the user's attention. If it's not worth flashing the screen for then it's not worth a notification at all.

Either LOGARITHMIC or ZOOMABLE controls. The little position marker in winamp and media player are completely evil. They don't allow large leaps to skip a bunch of crap you don't want, nor fine-grained control. Even having two levels (middle 10% is per-second, the rest is normal) would've been sufficient.

constant feedback and constant relevant feedback (if you show basic build menu, and ALT accesses advanced build menu then show the advanced menu when ALT is pressed)


Not sure how to classify this problem, but I hate it when notices or warnings pop up with vague descriptions, such as "this process was blocked". What fucking process? Don't use "this", tell me the name, location, EXE path etc. of the offending process or program and/or window title, or at least give a button that gives more details.


CategoryInteractionDesign CategoryUserInterface


EditText of this page (last edited November 3, 2014) or FindPage with title or text search