Radio buttons are for presenting one-from-N choices. They are best suited when two conditions hold:
The number of options is fixed and small: between two and eight.
Enough space is available on the panel to display all of the options.
Radio buttons always occur in sets of at least two; a single radio button is not a valid control.
avoid
Dropdown menus are best suited when space is limited and the number of options either is greater than eight or changes at runtime.
Scrolling list boxes is also a replacement, but consume significant space.
Spin boxes and Cycle buttons are suited to presenting choices in limited space with few options.
Radio buttons are always auto-sized. In localization leave enough space at the end of one radio button. Vertical radio button list is better than horizontal radio button list.
Checkboxes
Refuse to turn options ON when that would exceed the group maximum. Notify users by beeping, displaying an error message, or both.
Allow users to turn any number of items ON, and inform them later that the number of selected options exceeds the maximum.
avoid
Treat checkboxes and radio buttons as distinct control types;
Treat a group of radio buttons representing a choice as a single control;
Treat radio button sets, dropdown menus, and scrolling lists as different presentations of a single one-from-N choice control type
Using a checkbox for a non-ON/OFF setting
Using command buttons as toggles
Using tabs as radio buttons
Tabs are purely navigation controls.
progressive disclosure (for example: use radio buttons or dropdown menus to dynamic show/hide details)
Too many tabs
Wrong
One false solution is to widen the panel to allow more tabs.
A second false solution is to put tabs on more than one edge
Short labels (It also cause hard to localize.)
Break their labels into two lines
Dancing tabs (people do not like multiple rows of tabs.)
Right
Keep the number of tabs small
Use another control instead of tabs
Widen panel slightly
Never use dancing tabs
Using input controls for display-only data
Noneditable data should never be displayed in a control that looks editable or operable.
Checkboxes, radio buttons, menus, sliders, and the like should never be used for noneditable data because they look operable.
A necessary evil: scrolling text boxes for long noneditable texts
received e-mail messages displayed by e-mail software;
software license agreements displayed during installation of desktop software;
usage policies, user agreements, contracts, and other legal documents displayed by membership and e-commerce Web sites.
Overusing text fields for constrained input
Use text fields sparingly
Use validator to validate text
Alternatives to text fields
Another approach is to use multiple text fields and pay attention to the details (for example the Tab key and Backspace key)
Using a control incorrectly
Dynamic menus
Dynamic activate and deactivate menu items
Dynamic add and remove menus, not menu items
Intolerant data fields
Match field length to data
long enough to hold data
not a lot longer than that
Accept common formats and your own formats
Beware of rejecting legitimate data
Make letter case irrelevant
Provide a pattern
Structure text fields
Input fields and controls with no default
Text and number fields
Radio buttons with no initial value should be avoided. Use only if you have strong justification. Radio buttons in survey with unbiased default value.
Dropdown menus
When no default can be assumed, menus are better than radio buttons
Poor defaults
Common sense
Business logic
Experience and site data
Individual users’ data
Negative checkboxes
2. Navigation Bloopers
3. Textual Bloopers
4. Graphic Design and Layout Bloopers
5. Interaction Bloopers
6. Responsiveness Bloopers
7. Management Bloopers
8. Color Bloopers
First Principles
1. Focus on the users and their tasks, not on the technology
What does “focus on users and their tasks” mean?
For whom is this software being designed? Who are the intended users? Who are the intended customers (not necessarily the users)?
What is the software for? What activity is it intended to support? What problems will it help users solve? What value will it provide?
What problems do the intended users have now? What do they like and dislike about the way they work now?
What are the skills and knowledge of the intended users? Are they motivated to learn? How? Are there different classes of users, with different skills, knowledge, and motivation?
How do users conceptualize the data that the software will manage?
What are the intended users’ preferred ways of working? How will the software fit into those ways? How will it change them?
Understand the users
Decide who the intended users are
Investigate characteristics of the intended users
Users: Not Just novice vs. experienced
General computer savvy
Task knowledge
Knowledge of the system
Collaborate with the intended users to learn about them
Bringing it all together
Understand the tasks
Decide what set of tasks to support
Investigate the intended tasks
Collaborate with users to learn about the tasks
Bringing it all together
Consider the context in which the software will function
2. Consider function first, presentation later
What it does mean?
What concepts will be visible to users?
What data will users create, view, or manipulate with the software?
What options, choices, settings, and controls will the application provide?
Develop a conceptual model
Task focused
Perform an objects/actions analysis
Example objects/actions analyses
Object relationships
Develop a lexicon
Write task scenarios
Base UI design on the conceptual model
Objects/actions analysis can kick-start development
Conceptual model focuses design process
3. Conform to the users’ view of the task
Strive for naturalness
Don’t make users commit unnatural acts
Imposing arbitrary restrictions
Use users’ vocabulary, not your own
Keep program internals inside the program
Find the correct point on the power/complexity trade-off
Sensible defaults
Templates or canned solutions
Guided paths–wizards
Progressive disclosure
Generic commands
Create
Open
Move
Copy
Save
Delete
Print
Edit
Update
Find
Show/Edit Properties
Follow Link
and so on...
Task-specific design
Customizability
4. Design for the common case
Make common results easy to achieve
Two types of “common”: “how many users?” vs. “how often?”
How many users will need the feature?
How often will users need the feature?
The more frequently a feature will be used, the fewer clicks it should require
The more users will use a feature, the more visible it should be
Combinations: frequent by many, frequent by few, infrequent by many, infrequent by few
Design for core cases; don’t sweat “edge” cases
It takes development time and resources away from designing good UIs for the common cases.
It burdens the entire UI with having to cover “edge” cases as well as common ones.
5. Don’t complicate the users’ task
Don’t give users extra problems
Don’t make users reason by elimination
The functions of controls, commands, and settings in a user interface should be clear and obvious.
6. Facilitate learning
Think “outside-in,” not “inside-out”
Consistency, consistency, consistency
Consistency avoids “gotchas”
Dangers of naive consistency
Difficult to define
Multidimensional
Subject to interpretation
Consistency is good anyway
Making consistency user-centered
Provide a low-risk environment
7. Deliver information, not just data
Design displays carefully; get professional help
Visual order and user focus
Scannability
Match the medium
Attention to detail
The screen belongs to the user
jump or “warp” the mouse pointer to new positions,
move controls to the pointer,
reposition, stretch, or shrink windows.
Preserve display inertia
foster users’ perception and comprehension of the changes
minimize disruption to users’ ability to continue working
8. Design for responsiveness
What is responsiveness?
poor responsiveness
Delayed feedback for button-presses, scrollbar movement, or object manipulations
Time-consuming operations that block other activity and cannot be aborted
Providing no clue as to how long lengthy operations will take
Jerky, hard-to-follow animations
Ignoring user input while performing “housekeeping” tasks users did not request
Responsiveness on the Web: Poor but improving
Designing for responsiveness
acknowledge user actions instantly, even if returning the answer will take time;
let users know when it is busy and when it isn’t;
free users to do other things while waiting for a function to finish;
animate movement smoothly and clearly;
allow users to abort lengthy operations they don’t want;
allow users to judge how much time operations will take;
do its best to let users set their own work pace.
9. Try it out on users, then fix it!
Test results can surprise even experienced designers