Skip to content

Instantly share code, notes, and snippets.

@jancborchardt
Last active December 19, 2015 14:09
Show Gist options
  • Save jancborchardt/5967457 to your computer and use it in GitHub Desktop.
Save jancborchardt/5967457 to your computer and use it in GitHub Desktop.
Basics of Unobtrusive Interface & Interaction Design

General Design Guidelines

Make decisions, minimize settings

People should not need to fiddle with settings. When there is a decision to take, most of the time it’s better to go with one (on grounds which one is better) than to offload this decision to users as a setting.

Save often

People should not be required to press a »Save« button to have their data saved. The app should always save everything that is typed. This can be achieved by a combination of several save mechanisms:

  • every 300ms after the person stopped typing something
  • when the app is exited or switched
  • as soon as the field in question loses focus

Specific Design Patterns

Show password toggle

Sign up forms have traditionally had an extra »confirm password« field – which is useless since the password is obfuscated both times, maximizing the potential for frustration. Modern mobile operating systems show the last typed letter for a short time so people can verify what they type. Even better is a means of verifying the full password, especially for long passwords. That’s what a »show password« toggle in the form of an eye icon on the right of an input field is used for. (Wifi connection dialogs have done this for a long time in the form of a »Show password« checkbox, and Windows does this as well natively.)

@jancborchardt
Copy link
Author

  • scrolling down into the past with lazy loading
  • scrolling up into the future with pull to refresh / automatic loading of new items
  • automatically check web addresses for secure connection and prepend protocol if not given

@jancborchardt
Copy link
Author

Loading feedback spinners!

@jancborchardt
Copy link
Author

Animation to support interaction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment