Rules to Better Interfaces (General Usability Practices) - 29 Rules
If you still need help, visit our User Interface & User Experience showcase and book in a consultant.
The corner stone of good user interface design is that if your users need instructions, you haven't done a good job. Of course with particularly complex applications there will be exceptions to this rule, but all developers should aim to make your interface as self-evident as possible.
- There are no surprises
- There is no need to use help
- No excuse for RTFM (read the freaking manual)
A good UI is:
- Intuitive
- Feels fast e.g. no white screen, threading code
- Consistent
- Minimal popups
- No clutter - not busy
- Good error handling
- Easy to customize + apps (aka a platform)
- Gamification e.g. badges
Suggested reading:
- The Design of Everyday Things: Revised and Expanded Edition (Nov 2013)
- Don’t Make Me Think, Revisited (3rd Edition)
- When we see a door, we immediately know that we can open it and go through it
- Links in blue and underlined has an affordance of clickability
- Buttons can be pressed
- Scrollbar moves the document in the window
The human brain:
- Never searches for OR compares all options
- Prefers smaller sets of options (4 or less)
- Picks the first option that looks good enough
- Prefers a shorter option to a longer one
- Makes a compromise between speed and accuracy
It's important to keep these in mind when making design decisions or presenting data.
Our visual short term memory has a capacity of 4 items. So options are easier for our brain to digest when presented in sets of 4.
Displaying the date and time of change as a tooltip when users hover over the time of change can be an effective approach for interfaces with limited space or when providing both pieces of information together could lead to confusion. Tooltips allow users to access additional information about the context of the date and time of change without cluttering the main interface.
People may not pay attention to some important words in your interface. Adding a simple and clear icon beside the words will make the difference.
For emails and web content, using an simple emoji is an easy and friendly way to achieve the same result 🙂.
Using icons
Using emojis
I join a lot of Sprint Reviews, and there is a consistent problem I see among Scrum teams. The PBIs have limited or missing information. Usually, this is due to unclear requirements...
Figure: Bad example - No emojis to enforce the meaning
I join a lot of Sprint Reviews, and there is a consistent problem I see among Scrum teams. The PBIs have limited or missing information 😥. Usually, this is due to unclear requirements...
Figure: Good example - The emoji gives extra focus on what is important
See this rule being used on different scenarios:
- Adding a green tick for successful messages or a red cross for error messages (before the text)
- Adding the type of file next to download links (before the text)
- Adding an icon to external links (after the text)
When there are key words that you want people to notice, you can add a spot of color on the important word for emphasis.
You should make parts of the text different colors just like you’d highlight or boldface parts of a sentence. The duo colored text will help emphasize your message. Whenever possible use the brand colors when you do this.
The tone of your application speaks volumes about how users view it. Read this Google documentation on the voice of Android.
Language tips and examples
Tips ❌ Bad examples ✅ Good examples Keep text as short as possible. Avoid wordy, stilted text. Consult the documentation that came with your phone for further instructions. Read the instructions that came with your phone Describe only what the user needs to know and don't provide unnecessary information. Your phone needs to communicate with Google servers to sign in to your account. This may take up to five minutes. Your phone is contacting Google. This can take up to 5 minutes. Focus on the user's concern, not technical details Manually control GPS to prevent other apps from using it. To save power, switch Location mode to Battery saving Put the most important thing first 77 other people +1’d this, including Larry Page Larry Page and 76 others +1’d this Put the user's goal first Touch Next to complete setup using a Wi-Fi connection To finish setup using Wi-Fi, touch Next Avoid being confusing or annoying Sorry! Activity MyAppActivity (in application MyApp) is not responding. MyApp isn’t responding. Do you want to close it? Words and terms examples
❌ Bad examples - Avoid ✅ Good examples - Use cannot, could not, do not, did not will not, you will Contractions: can’t, couldn’t, don’t, didn’t, won’t, you’ll, and so on okay, ok OK please, sorry, thank you Attempts at politeness can annoy the user, especially in messages that say something has gone wrong. Exception: In Japanese, “please” is mandatory and imperative verbs should be localized accordingly (turn on -> please turn on). fail, failed, negative language In general, use positive phrasing (for example, “do” rather than “don’t,” except in cases such as “Don’t show again,” “Can’t connect,” and so on.) me, I, my, mine you, your, yours Are you sure? Warning! Tell user the consequence instead, for example, "You’ll lose all photos and media" Remember to use dividers when referring to large sums or phone numbers.
- Total: $27216
- Phone: 14XXXXXXXXX
Figure: Bad example - These numbers are unwieldy and difficult to read
- Total: $2,721.65
- Phone: +1 XXX XXX XXXX
Figure: Good example - Symbols or some spaces make these large numbers easier to read
Note: For currency references, different countries use periods in place of commas and vice-versa.
E.g. In the United States and Australia: $2,367.48 / In France and Brazil: $2.367,48.
- Figure: In the first example, although the text is technically aligned, it does not 'look' it. In the second one, the "V" has been moved into the margin, but the optical alignment is now correct
Not only relevant in typography, optical alignment can also be used in forms and web.
The search direction of a list should be obvious. When it comes to a multicolumn list, you should always head down instead of across for legibility.
Vertical lists are much easier to scan than horizontal lists, because all items are aligned to left, when you're looking for an item, you don't need to read the entire word, you can quickly scan the first letters and get directly to the item you look for.
It's OK to use text because it's more natural, but use columns if you need:
- reordering
- side by side comparison
- totals
You should put all the useful and current information on the homepage and also make it easy to find your core functions there.
E.g. Top billing customers for the month and a button under it for adding an invoice.E.g. See the number of bugs counted by the most common.
Remember to make the "logged in" state clear enough to help the user know the current state.
When you're giving an update on progress on a task list or a schedule,
strike outthe items that have been completed. Not only does it visually explain where you are, it also gives you a great sense of satisfaction...If users want to share information or media, then make it easy for them!
Some common avenues for sharing are:
- Google Drive
- SMS / Messages
- Copy to clipboard
"Gamification" is a method of encouraging user participation. Usually, these are a set of incentives such as points or achievement badges that are linked to some other form of redeemable value.
It originated with Frequent Flyer programs and has crossed over into the software world with the success of Foursquare.
This concept is being utilized even inVisual Studio.
Encourage experimentation to increase comfort:
- Undo
- Remember your last state
- Live preview
While "OK" buttons were the standard convention with operating systems of the past, web applications should use a more user-friendly approach to dialog boxes. Instead of "OK" buttons to confirm an action the users want, it’s more efficient and effective to give them button that is labeled with that specific action.
The best apps predict what the user is trying to do from context and does it for them.
Figure: Good Example – “Use Last Photo Taken” is a simple example from Slack.
This is generally referred to as an “adaptive system.”
Smashing magazine has a much more detailed article regarding adaptive systems from 2012 along with advanced examples.
If your page requires permission to be accessed it should provide a button for the user to request it.
When a user looks at a search result, they expect to see a list of items to look into. If there are no results, don't give them noisy text because it can be taken as a search result. An icon also can be understood as a broken page. Your "no results" page should be clean.
Note: In case the message you're showing is a "pass" or "fail, it is recommended to use an icon as per Do you use icons to enforce the text meaning?
When implementing search on a website, do you know that it is best to highlight the search terms in the page body?
Search is a common feature in websites, and one you will most likely have to implement at some stage. When search returns a list of items, it is useful to highlight the search terms where they appear in the results.
Figure: Search for items with these tags
Figure: Search results have their relevant tags highlighted
When you embed a YouTube video it will increase your page size from 500kbs to 1.5Mb or more, depending on how many videos are embedded on the page.
<iframe width="560" height="315" src="https://www.youtube.com/embed/eu0qhzevEXQ" frameborder="0" allowfullscreen ></iframe>
Figure: Bad example – The evil HTML code
There is a clever, lightweight way to embed a YouTube video, which Google itself practices on their Google+ pages which reduce it to 15kbs.All you have to do is, whenever you need to embed a video to a page, add the below tag instead of the YouTube video embed code. (Remember to replace VIDEO_ID with actual ID of the YouTube video)
<div class="youtube-player" data-id="VIDEO_ID"></div>
Figure: Good example – The good HTML code
Note: This script needs to be added at the end of the document:
<script> /* Light YouTube Embeds by @labnol */ /* Web: http://labnol.org/?p=27941 */ document.addEventListener("DOMContentLoaded", function () { var div, n, v = document.getElementsByClassName("youtube-player"); for (n = 0; n < v.length; n++) { div = document.createElement("div"); div.setAttribute("data-id", v[n].dataset.id); div.innerHTML = labnolThumb(v[n].dataset.id); div.onclick = labnolIframe; v[n].appendChild(div); } }); function labnolThumb(id) { var thumb = '<img src="https://i.ytimg.com/vi/ID/hqdefault.jpg">', play = '<div class="play"></div>'; return thumb.replace("ID", id) + play; } function labnolIframe() { var iframe = document.createElement("iframe"); var embed = "https://www.youtube.com/embed/ID?autoplay=1"; iframe.setAttribute("src", embed.replace("ID", this.dataset.id)); iframe.setAttribute("frameborder", "0"); iframe.setAttribute("allowfullscreen", "1"); this.parentNode.replaceChild(iframe, this); } </script>
..and this needs to be added in the CSS:
<style> .youtube-player { position: relative; padding-bottom: 56.23%; /* Use 75% for 4:3 videos */ height: 0; overflow: hidden; max-width: 100%; background: #000; margin: 5px; } .youtube-player iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 100; background: transparent; } .youtube-player img { bottom: 0; display: block; left: 0; margin: auto; max-width: 100%; width: 100%; position: absolute; right: 0; top: 0; border: none; height: auto; cursor: pointer; -webkit-transition: 0.4s all; -moz-transition: 0.4s all; transition: 0.4s all; } .youtube-player img:hover { -webkit-filter: brightness(75%); } .youtube-player .play { height: 72px; width: 72px; left: 50%; top: 50%; margin-left: -36px; margin-top: -36px; position: absolute; background: url("//i.imgur.com/TxzC70f.png") no-repeat; cursor: pointer; } </style>
When the user is creating or editing data on a webpage, there are 2 buttons and one link you need to provide.
These three options are:
- Save (button) - Saves the data and allows the user to keep editing
- Save and Close (button) - Saves the data and returns to the previous screen
- Cancel (link) - returns to the previous screen
Figure: Bad example - only provided Savebutton and Cancellink
Figure: Good example - CRM 2013 provides a Save button a nd a Save and Close button
Figure: Better example - SugarLearning provides a Savebutton, a Save and Close button and a Cancellink
Further Reading:
To avoid users accidentally cancelling an operation when they thought they where clicking the save button you should always make your cancel button less obvious.
Which side should the cancel button be on?
It depends which operating platform your program runs on:
- Windows - On the right
- Apple, iOS and Android - On the left
- Web - Generally on the right
If you're designing a Web-based application, the decision is harder, but you should probably go with the platform preferred by most of your users. Your server logs will show you the percentage of Windows vs. Mac users for your specific website or intranet. Of course, Windows generally has many more users, so if you can't be bothered to check the logs, then the guideline that will apply to most situations is OK first, Cancel last.
What do you name your buttons?
It's often better to name a button to explain what it does, than to use a generic label like "OK". An explicit label serves as "just-in-time help," giving users more confidence in selecting the correct action.
Make the most commonly selected button the default and highlight it. Except if it's action is particularly dangerous; in those cases, you want users to explicitly select the button rather than accidentally activating it by hitting Enter.
Further Reading:
- Nielsen Norman - The usability guru talking about ok and cancel buttons
- SSW Rule - Do you know to use Save, Save and Close on a webpage?
Make it clear when something is inactive of disabled. Reducing the opacity is a great way to indicate that.