Here's a collection of some of the most frequently violated guidelines in UX Guide. You can use this as a checklist to make sure your program user interface gets these important items right.
Windows
* Support the minimum Windows effective resolution of 800x600 pixels. For critical user interfaces (UIs) that must work in safe mode, support an effective resolution of 640x480 pixels. Be sure to account for the space used by the taskbar by reserving 48 vertical relative pixels for windows displayed with the taskbar.
* Optimize resizable window layouts for an effective resolution of 1024x768 pixels. Automatically resize these windows for lower screen resolutions in a way that is still functional.
* Be sure to test your windows in 96 dots per inch (dpi) (at 800x600 pixels), 120 dpi (at 1024x768 pixels), and 144 dpi (at 1200x900 pixels) modes. Check for layout problems, such as clipping of controls, text, and windows, and stretching of icons and bitmaps.
* For programs with touch and mobile use scenarios, optimize for 120 dpi. High-dpi screens are currently prevalent on touch and mobile PCs.
* If a window is an owned window, initially display it "centered" on top of the owner window. Never underneath. For subsequent display, consider displaying it in its last location (relative to the owner window) if doing so is likely to be more convenient.
* If a window is contextual, always display it near the object that it was launched from. However, place it out of the way (preferably offset down and to the right) so that the object isn't covered by the window.
Layout
* Size controls and panes within a window to match their typical content. Avoid truncated text and their associated ellipses. Users should never have to interact with a window to view its typical content—reserve resizing and scrolling for unusually large content. Specifically check:
o Control sizes. Size controls to their typical content, making controls wider, taller, or multi-line if necessary. Size controls to eliminate or reduce scrolling in windows that have plenty of available space. Also, there should never be truncated labels, or truncated text within windows that have plenty of available space. However, to make text easier to read, consider limiting line widths to 65 characters.
o Column widths. Make sure list view columns have suitable default, minimum, and maximum sizing. Choose list views default column widths that don't result in truncated text, especially if there is space available within the list view.
o Layout balance. The layout of a window should feel roughly balanced. If the layout feels left-heavy, consider making controls wider and moving some controls more to the right.
o Layout resize. When a window is resizable and data is truncated, make sure larger window sizes show more data. When data is truncated, users expect resizing windows to show more information.
* Set a minimum window size if there is a size below which the content is no longer usable. For resizable controls, set minimum resizable element sizes to their smallest functional sizes, such as minimum functional column widths in list views.
Text
* Use ordinary, conversational terms when you can. Focus on the user goals, not technology. This is especially effective if you are explaining a complex technical concept or action. Imagine yourself looking over the user's shoulder and explaining how to accomplish the task.
* Be polite, supportive, and encouraging. The user should never feel condescended to, blamed, or intimidated.
* Remove redundant text. Look for redundant text in window titles, main instructions, supplemental instructions, content areas, command links, and commit buttons. Generally, leave full text in main instructions and interactive controls, and remove any redundancy from the other places.
* Use title-style capitalization for titles, and sentence-style capitalization for all other UI elements. Doing so is more appropriate for the Windows® tone.
o Exception: For legacy applications, you may use title-style capitalization for command buttons, menus, and column headings if necessary to avoid mixing capitalization styles.
* For feature and technology names, be conservative in capitalizing. Typically, only major components should be capitalized (using title-style capitalization).
* For feature and technology names, be consistent in capitalizing. If the name appears more than once on a UI screen, it should always appear the same way. Likewise, across all UI screens in the program, the name should be consistently presented.
* Don't capitalize the names of generic user interface elements, such as toolbar, menu, scroll bar, button, and icon.
o Exceptions: Address bar, Links bar, ribbon.
* Don't use all capital letters for keyboard keys. Instead, follow the capitalization used by standard keyboards, or lowercase if the key is not labeled on the keyboard.
* Ellipses mean incompleteness. Use ellipses in UI text as follows:
o Commands. Indicate that a command needs additional information. Don't use an ellipsis whenever an action displays another window—only when additional information is required. Commands whose implicit verb is to show another window don't take an ellipsis, such as Advanced, Help, Options, Properties, or Settings.
o Data. Indicate that text is truncated.
o Labels. Indicate that a task is in progress (for example, "Searching...").
Tip: Truncated text in a window or page with unused space indicates poor layout or a default window size that is too small. Strive for layouts and default window sizes that eliminate or reduce the amount of truncated text. For more information, see Layout.
* Don't use blue text that isn't a link, because users may assume that it is a link. Use bold or a shade of gray where you'd otherwise use colored text.
* Use bold sparingly to draw attention to text users must read.
* Use the main instruction to explain concisely what users should do in a given window or page. Good main instructions communicate the user's objective rather than focusing just on manipulating the UI.
* Express the main instruction in the form of an imperative direction or specific question.
* Don't place periods at the end of control labels or main instructions.
* Use one space between sentences. Not two.
Controls
* General
o Label every control or group of controls. Exceptions:
+ Text boxes and drop-down lists can be labeled using prompts.
+ Subordinate controls use the label of their associated control. Spin controls are always subordinate controls.
o For all controls, select the safest (to prevent loss of data or system access), most secure value by default. If safety and security aren't factors, select the most likely or convenient value.
o Prefer constrained controls. Use constrained controls like lists and sliders whenever possible, instead of unconstrained controls like text boxes, to reduce the need for text input.
o Reconsider disabled controls. Disabled controls can be hard to use because users literally have to deduce why they are disabled. Disable a control when users expect it to apply and they can easily deduce why the control is disabled. Remove the control when there is no way for users to enable it or they don't expect it to apply, or leave it enabled, but provide an error message when it is used incorrectly.
+ Tip: If you aren't sure whether you should disable a control or provide an error message, start by composing the error message that you might provide. If the error message contains helpful information that target users aren't likely to quickly deduce, leave the control enabled and provide the error. Otherwise, disable the control.
* Command buttons
o Prefer specific labels over generic ones. Ideally users shouldn't have to read anything else to understand the label. Users are far more likely to read command button labels than static text.
+ Exception: Don't rename the Cancel button if the meaning of cancel is unambiguous. Users shouldn't have to read all the buttons to determine which button cancels an action. However, rename Cancel if it is unclear what action is being canceled, such as when there are several pending actions.
o When asking a question, use labels that match the question. For example, provide Yes and No responses to a yes or no question.
o Don't use Apply buttons in dialog boxes that aren't property sheets or control panel items. The Apply button means apply the pending changes, but leave the window open. Doing so allows users to evaluate the changes before closing the window. However, only property sheets and control panel items have this need.
o Label a button Cancel if canceling returns the environment to its previous state (leaving no side effect); otherwise, label the button Close (if the operation is complete), or Stop (if the operation is in progress) to indicate that it leaves the current changed state intact.
* Command links
o Always present command links in a set of two or more. Logically, there is no reason to ask a question that has only one answer.
o Provide an explicit Cancel button. Don't use a command link for this purpose. Quite often, users realize that they don't want to perform a task. Using a command link to cancel would require users to read all the command links carefully to determine which one means to cancel. Having an explicit Cancel button allows users to cancel a task efficiently.
o If providing an explicit Cancel button leaves a single command link, provide both a command link to cancel and a Cancel button. Doing so makes it clear that users have a choice. Phrase this command link in terms of how it differs from the first response, instead of just "Cancel" or some variation.
* "Don't show this again" check boxes
o Consider using a "Don't show this again" option to allow users to suppress a recurring dialog box, only if there isn't a better alternative. It is better always to show the dialog if users really need it, or simply eliminate it if they don't.
o Replace with the specific item. For example, Don't show this reminder again. When referring to a dialog box in general, use Don't show this message again.
o Clearly indicate when user input will be used for future default values by adding the following sentence under the option: Your selections will be used by default in the future.
o Don't select the option by default. If the dialog box really should be displayed only once, do so without asking. Don't use this option as an excuse to annoy users—make sure the default behavior isn't annoying.
o If users select the option and click Cancel, this option does take effect. This setting is a meta-option, so it doesn't follow the standard Cancel behavior of leaving no side effect. Note that if users don't want to see the dialog in the future, most likely they want to cancel it as well.
* Links
o Don't assign an access key. Links are accessed using the Tab key.
o Don't add "Click" or "Click here" to the link text. It isn't necessary because a link implies clicking.
* Tooltips
o Use tooltips to provide labels for unlabeled controls. You don't have to give labeled controls tooltips simply for the sake of consistency.
o Tooltips may also provide more detail for labeled toolbar buttons if doing so is helpful. Don't just repeat or give a wordy restatement of what is already in the label.
o Avoid covering the object the user is about to view or interact with. Always place the tip on the side of the object, even if that requires separation between the pointer and the tip. Some separation isn't a problem as long as the relationship between the object and its tip is clear.
+ Exception: Full name tooltips used in lists and trees.
o For collections of items, avoid covering the next object that the user is likely to view or interact with. For horizontally arranged items, avoid placing tips to the right; for vertically arranged items, avoid placing tips below.
* Progressive disclosure
o Use More/Fewer progressive disclosure buttons to hide advanced or rarely used options, commands, and details that users typically don't need. Don't hide commonly used items, because users might not find them. But make sure whatever is hidden has value.
o If the surface always displays some options, commands, or details, use the following label pairs:
+ More/Fewer options. Use for options or a mixture of options, commands, and details.
+ More/Fewer commands. Use for commands only.
+ More/Fewer details. Use for information only.
+ More/Fewer
Have you introduced a new concept? Why? Is it necessary?
Can you get rid of unneeded concepts?
Are you making meaningful distinctions?
Does the UX continue the same concept?
Small things matter, good and bad
What are the important "small things" seen often or by many?
What small problems are you solving?
Do less better.
Don't cut the small things in your experiences.
Plan for the thoughtful details.
Fix the small bugs.
Be great at "look" and "do"
What is your UX great at? Does its look reflect what it is great at?
Does the first thing users see reflect what the UX is great at?
Does the UX match expectations?
Is it obvious what users can do?
Are you providing only the necessary steps?
Solve distractions, not discoverability
Reduce distractions.
Don't let features compete with themselves.
Commit to new functionality.
These are not solutions to poor discoverability:
Pinning an icon in the Start menu.
Putting an icon on the desktop.
Putting an icon in the notification area.
Using a notification.
Having a first run experience.
Having a tour.
UX before knobs and questions
Turn down the volume of questions.
Ask once.
Don't require configuration to get value.
Was the question asked already?
Look for opportunities to consolidate.
Personalization, not customization
Does the feature allow users to express an element of themselves?
Have you made the distinction between personalization and customization?
Does the personalization have to be a new feature, or can it make use of existing features and information (such as the user's location, background picture, or tile)?
Value the life cycle of the experience
Consider the user experience at all stages:
Installation and creation.
First use and customization.
Regular use.
Management and maintenance.
Uninstall or upgrade.
Walk through the experience as if it has been used for 12 months. Does it have:
Realistic content.
Realistic volume.
Time matters, so build for people on the go
All UX principles apply equally at 12-inch and 20-inch screen sizes.
Be interruptible.
Account for starting and stopping (fast return, and do not get in the way of other UX).
SixthSense:- integrating information with the real world
ABOUT
'SixthSense' is a wearable gestural interface that augments the physical world around us with digital information and lets us use natural hand gestures to interact with that information.
We've evolved over millions of years to sense the world around us. When we encounter something, someone or some place, we use our five natural senses to perceive information about it; that information helps us make decisions and chose the right actions to take. But arguably the most useful information that can help us make the right decision is not naturally perceivable with our five senses, namely the data, information and knowledge that mankind has accumulated about everything and which is increasingly all available online. Although the miniaturization of computing devices allows us to carry computers in our pockets, keeping us continually connected to the digital world, there is no link between our digital devices and our interactions with the physical world. Information is confined traditionally on paper or digitally on a screen. SixthSense bridges this gap, bringing intangible, digital information out into the tangible world, and allowing us to interact with this information via natural hand gestures. ‘SixthSense’ frees information from its confines by seamlessly integrating it with reality, and thus making the entire world your computer.
The SixthSense prototype is comprised of a pocket projector, a mirror and a camera. The hardware components are coupled in a pendant like mobile wearable device. Both the projector and the camera are connected to the mobile computing device in the user’s pocket. The projector projects visual information enabling surfaces, walls and physical objects around us to be used as interfaces; while the camera recognizes and tracks user's hand gestures and physical objects using computer-vision based techniques. The software program processes the video stream data captured by the camera and tracks the locations of the colored markers (visual tracking fiducials) at the tip of the user’s fingers using simple computer-vision techniques. The movements and arrangements of these fiducials are interpreted into gestures that act as interaction instructions for the projected application interfaces. The maximum number of tracked fingers is only constrained by the number of unique fiducials, thus SixthSense also supports multi-touch and multi-user interaction.
The SixthSense prototype implements several applications that demonstrate the usefulness, viability and flexibility of the system. The map application lets the user navigate a map displayed on a nearby surface using hand gestures, similar to gestures supported by Multi-Touch based systems, letting the user zoom in, zoom out or pan using intuitive hand movements. The drawing application lets the user draw on any surface by tracking the fingertip movements of the user’s index finger. SixthSense also recognizes user’s freehand gestures (postures). For example, the SixthSense system implements a gestural camera that takes photos of the scene the user is looking at by detecting the ‘framing’ gesture. The user can stop by any surface or wall and flick through the photos he/she has taken. SixthSense also lets the user draw icons or symbols in the air using the movement of the index finger and recognizes those symbols as interaction instructions. For example, drawing a magnifying glass symbol takes the user to the map application or drawing an ‘@’ symbol lets the user check his mail. The SixthSense system also augments physical objects the user is interacting with by projecting more information about these objects projected on them. For example, a newspaper can show live video news or dynamic information can be provided on a regular piece of paper. The gesture of drawing a circle on the user’s wrist projects an analog watch.