<p>I'm not a usability specialist, and I really don't care to be one.</p>

<p>I just want a small set of rules of thumb that I can follow while coding my user interfaces so that my product has decent usability.</p>

<p>At first I thought that this question would be easy to answer "Use your common sense", but if it's so common among us developers we wouldn't, as a group, have a reputation for our horrible interfaces.</p>

<p>Any suggestions?</p>

[{'answer_id': 51051, 'author': 'Mike Stone', 'author_id': 122, 'author_profile': 'https://Stackoverflow.com/users/122', 'pm_score': 4, 'selected': False, 'text': '<p>Read <a href="https://rads.stackoverflow.com/amzn/click/com/0321344758" rel="noreferrer" rel="nofollow noreferrer">Don\'t Make Me Think by Steve Krug</a>.  It is a great starting point, and an easy short read.</p>\n\n<p>EDIT: This is mainly for web usability though, but it would still be a good read even if you are doing rich clients.</p>\n'}, {'answer_id': 51053, 'author': 'Rob Allen', 'author_id': 149, 'author_profile': 'https://Stackoverflow.com/users/149', 'pm_score': 3, 'selected': False, 'text': '<ul>\n<li>Don\'t make things work in a different way than your users are expecting (i.e. breaking the "back" button when using Ajax in web forms</li>\n<li>Follow the K.I.S.S principal</li>\n</ul>\n\n<p>Really, any rules someone posts will be a variation on the theme:\n<strong>Don\'t Make Your Users Think</strong></p>\n\n<p>"Don\'t Make Me Think" has already been posted, see also\n<a href="https://rads.stackoverflow.com/amzn/click/com/0465067107" rel="noreferrer" rel="nofollow noreferrer">Design of Everyday Things</a> and <a href="https://rads.stackoverflow.com/amzn/click/com/0321385551" rel="noreferrer" rel="nofollow noreferrer">Designing with Web Standards</a> which are also great for light usability reading.</p>\n'}, {'answer_id': 51059, 'author': 'Jordi Bunster', 'author_id': 4272, 'author_profile': 'https://Stackoverflow.com/users/4272', 'pm_score': 2, 'selected': False, 'text': '<p>The single most important piece of advice I\'d give someone is to work on the UI first. Pen and paper and all. That way, you won\'t subconsciously couple buttons to functions, input fields to variables, etc.</p>\n\n<p>The best UI might be a pain to code, and if your backend code is mostly written, it will sabotage your thinking.</p>\n\n<p>Other than that, I\'d point to <a href="http://developer.apple.com/documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/chapter_1_section_1.html" rel="nofollow noreferrer">Apple\'s Human Interface Guidelines</a>. Of course, if your platform is not OS&nbsp;X, take the OS&nbsp;X sections with a lot of salt. What works in OS&nbsp;X might not work on Windows. You should embrace your platform\'s idioms.</p>\n\n<p>OS&nbsp;X stuff aside, that document has some pretty good starting points on the fundamentals.</p>\n'}, {'answer_id': 51065, 'author': 'Marcio Aguiar', 'author_id': 4213, 'author_profile': 'https://Stackoverflow.com/users/4213', 'pm_score': 5, 'selected': False, 'text': '<p><img src="https://i.stack.imgur.com/G5Xcl.png" alt="simplicity"/></p>\n\n<p>Source: <a href="http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png" rel="nofollow noreferrer">http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity.png</a></p>\n'}, {'answer_id': 51127, 'author': 'Patrick McElhaney', 'author_id': 437, 'author_profile': 'https://Stackoverflow.com/users/437', 'pm_score': 2, 'selected': False, 'text': '<p>Avoid <a href="http://www.osnews.com/story/18904/Common_Usability_Terms_pt_V_Modes" rel="nofollow noreferrer">modes</a>. It\'s frustrating to a user when input works sometimes but not others, or does different things at different times. </p>\n'}, {'answer_id': 80843, 'author': 'mbesso', 'author_id': 9510, 'author_profile': 'https://Stackoverflow.com/users/9510', 'pm_score': 1, 'selected': False, 'text': "<p>Think about the users that will use your app. Why are they using it and in which context?</p>\n\n<ul>\n<li>Will the majority be pro users that know the domain in which the application is used and use the app a lot? Then don't be afraid of adding a lot of data to the screens as long as it arranged logically for users (normally that is not in alphabetical order :-). Think trade screens for stock borkers or airplane cockpits.</li>\n<li>Are users occassional users? Keep it simple. Avoid context switches (keep all/as much as possible of necessary data for a task on the screen at each time). Don't break expectations of how gui widgets normally work. Design for failures.</li>\n<li>Anything in between? Allow users to grow in the UI. Track usage so you can later determine where users seem to spend the most time so you can improve the most used areas of your app.</li>\n<li>Test your app on friends and colleagues (the corridor test) to see if they are able to use it efficiently.</li>\n</ul>\n\n<p>That's a start.</p>\n"}, {'answer_id': 85466, 'author': 'Mal Ross', 'author_id': 8705, 'author_profile': 'https://Stackoverflow.com/users/8705', 'pm_score': 3, 'selected': False, 'text': '<p>Just two things, really:</p>\n\n<ol>\n<li>"A user interface is well-designed when the program behaves exactly how the user thought it would" - <a href="http://www.joelonsoftware.com/uibook/fog0000000249.html" rel="nofollow noreferrer">quoted</a> from Joel Spolsky\'s <a href="http://www.joelonsoftware.com/BuytheBooks.html" rel="nofollow noreferrer">User Interface Design For Programmers</a></li>\n<li>Put your designs in front of a user. A real end-user is best, but for lightweight, rapid feedback, you can\'t beat hallway usability testing i.e. grab a co-worker.</li>\n</ol>\n\n<p>If you remember Joel\'s advice and make sure you get feedback on whatever you do <strong>and act on it</strong> i.e. iterate, you\'ll not go too far wrong. And I would echo the recommendation for Steve Krug\'s <a href="http://www.sensible.com/buythebook.html" rel="nofollow noreferrer">Don\'t Make Me Think</a> - it\'s probably the best work-related book I\'ve read, bar none, and is just as applicable to desktop software as websites.</p>\n\n<p>Hope this helps.</p>\n'}, {'answer_id': 86956, 'author': 'a. brooks hollar', 'author_id': 16346, 'author_profile': 'https://Stackoverflow.com/users/16346', 'pm_score': 2, 'selected': False, 'text': '<p>Here are some simple rules:</p>\n\n<ul>\n<li>Fewer clicks are better.</li>\n<li>Frequently used features should be easier to find.</li>\n<li>Features for "advanced" users can be harder to find than the ones above.</li>\n</ul>\n\n<p>Think about the number of mouse/keyboard clicks it takes a user to get to something.</p>\n\n<p>PS - please don\'t tell the Microsoft Office 2008 people about this; the poor little guys would cry themselves to sleep tonight! :)</p>\n'}, {'answer_id': 1543519, 'author': 'Nick Dandoulakis', 'author_id': 108130, 'author_profile': 'https://Stackoverflow.com/users/108130', 'pm_score': 1, 'selected': False, 'text': '<p>I suggest to read these <a href="http://humanized.com/weblog/" rel="nofollow noreferrer">blog posts</a> from the <a href="http://humanized.com/" rel="nofollow noreferrer">Enso</a> creators.</p>\n\n<p>Of course they repeat guides/ideas/advices from books such as<br>\n <a href="https://rads.stackoverflow.com/amzn/click/com/0465067107" rel="nofollow noreferrer" rel="nofollow noreferrer">The Design of Everyday Things</a>  and <a href="https://rads.stackoverflow.com/amzn/click/com/0470084111" rel="nofollow noreferrer" rel="nofollow noreferrer">About Face</a>, but nevertheless,  the posts contain quite a few insights and (IMO) they are a good read.</p>\n'}, {'answer_id': 1546849, 'author': 'Nicholas Jordan', 'author_id': 177505, 'author_profile': 'https://Stackoverflow.com/users/177505', 'pm_score': 0, 'selected': False, 'text': '<p>What information does your user need, put that on the screen and nothing else. If you cannot define what the user needs - get another user.</p>\n'}, {'answer_id': 1546885, 'author': 'Dour High Arch', 'author_id': 22437, 'author_profile': 'https://Stackoverflow.com/users/22437', 'pm_score': 0, 'selected': False, 'text': "<p>Remember that your application will be one of many the user will have to deal with. Don't do things just to be different or kewl. Don't come up with unusual graphics, behaviors, terminology, or interactions. Use the standard OS controls, conventions, utilities, and behaviors.</p>\n\n<p>Let your app interoperate with other apps; allow cutting and pasting of data, save your data in formats other apps can read, and allow importing data from other apps instead of using your UI.</p>\n\n<p>If you are making a desktop app, do not try to take over the user's computer. Leave the user's Documents folder, task bar, and application preferences alone. Don't change anything already installed on the computer. Allow scripted or command-line interactions.</p>\n\n<p>If you're making a web app, do not try to take over the browser. Do not try to subvert the standard menu bars, history, layout, or fonts. Allow the user to change the page using Javascript.</p>\n"}, {'answer_id': 2431557, 'author': 'Dimitri C.', 'author_id': 74612, 'author_profile': 'https://Stackoverflow.com/users/74612', 'pm_score': 0, 'selected': False, 'text': "<p><b>(1)</b> <b>Common actions should require as little effort as possible and should be obvious</b>; on the other hand, actions that are rarely needed can be require a lot of steps and can be hidden behind menus and dialogs. To be able to do so, you should always describe what the user will want to do with the application by listing <b>use cases</b>.</p>\n\n<p><b>(2)</b> A UI <b>should be selfdocumenting</b>. The manual should be integrated in the application's dialogs and menu's, as users don't read separate manuals. For example, the keyboard shortcut should be shown in the menu item representing the action it is associated with.</p>\n"}, {'answer_id': 2431600, 'author': 'Jamie', 'author_id': 67436, 'author_profile': 'https://Stackoverflow.com/users/67436', 'pm_score': 0, 'selected': False, 'text': '<p>Provide keyboard shortcuts for power users (even if it is as simple as "hit enter to search")</p>\n\n<p>Don\'t put too much on screen at once.</p>\n\n<p>If you pop up a messagebox, your users generally won\'t ever read it.</p>\n'}, {'answer_id': 2431748, 'author': 'takeshin', 'author_id': 234780, 'author_profile': 'https://Stackoverflow.com/users/234780', 'pm_score': 0, 'selected': False, 'text': "<ul>\n<li><strong>Simple</strong> is better than complex</li>\n<li>Complex is better than complicated (eliminate 'nested ifs')</li>\n<li><strong>Intuitive</strong> (good elements needs no explanation)</li>\n<li><strong>Follow the convention</strong> (for example, underlined means link, red means error, tab goes to next field, etc.)</li>\n<li>Use semantics to apply the logic (header reads first, paragraphs next)</li>\n<li>whitespace is important</li>\n</ul>\n"}, {'answer_id': 2432014, 'author': 'Matt Lacey', 'author_id': 1755, 'author_profile': 'https://Stackoverflow.com/users/1755', 'pm_score': 0, 'selected': False, 'text': '<p>In addition to the other recommendations here, I\'d recommend <a href="http://oreilly.com/catalog/9780596008031" rel="nofollow noreferrer">Designing Interfaces by Jenifer Tidwell</a> as a good way of becoming familiar with UI conventions.<br>\nAlso, <a href="http://books.google.com/books?id=04cFCVXC_AUC&amp;dq=inmates+are+running+the+asylum&amp;printsec=frontcover&amp;source=bn&amp;hl=en&amp;ei=BxeaS7uCL8yNjAersPmjDA&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=4&amp;ved=0CBsQ6AEwAw#v=onepage&amp;q=&amp;f=false" rel="nofollow noreferrer">The inmates are running the asylum By Alan Cooper</a> is excellent for providing an insight into how to approach interaction design.</p>\n'}, {'answer_id': 2432059, 'author': 'roryf', 'author_id': 270, 'author_profile': 'https://Stackoverflow.com/users/270', 'pm_score': 0, 'selected': False, 'text': '<p>A good follow on to Don\'t Make Me Think is <a href="http://www.rhjr.net/" rel="nofollow noreferrer">Robert Hoekman</a>\'s <a href="https://rads.stackoverflow.com/amzn/click/com/032145345X" rel="nofollow noreferrer" rel="nofollow noreferrer">Designing the Obvious</a>. It\'s more focused on web applications, as opposed to web sites like in Krug\'s.</p>\n'}]
['https://Stackoverflow.com/questions/51050', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2443/']