{"id":337,"date":"2009-10-21T01:58:01","date_gmt":"2009-10-21T08:58:01","guid":{"rendered":"http:\/\/mattfife.net\/wordpress\/?p=337"},"modified":"2012-08-13T11:43:10","modified_gmt":"2012-08-13T18:43:10","slug":"would-you-get-on-this-elevator","status":"publish","type":"post","link":"https:\/\/mattfife.com\/?p=337","title":{"rendered":"Would you get on this elevator?"},"content":{"rendered":"<p>Went to visit a good friend that just had their first child at a local hospital.\u00a0 On the way out from the joyful visit, I was greeted by this wonderful elevator:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/mattfife.net\/special\/elevator\/IMG_0185.jpg\" target=\"_blank\"><img data-recalc-dims=\"1\" width=\"640\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/mattfife.net\/special\/elevator\/IMG_0185.jpg?fit=640%2C300\" height=\"300\" \/><\/a>\u00a0\u00a0\u00a0\u00a0 <a href=\"https:\/\/i0.wp.com\/mattfife.net\/special\/elevator\/IMG_0184.jpg\" target=\"_blank\"><img data-recalc-dims=\"1\" width=\"640\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/mattfife.net\/special\/elevator\/IMG_0184.jpg?fit=640%2C300\" height=\"300\" \/><\/a><\/p>\n<p>The display was locked-up mid-boot and never did recover during my short trip from the 4th to 1st floor.\u00a0 Everything went well, but wow.<\/p>\n<p>This brought up the importance of how it is often it&#8217;s the *subtle* clues software needs to be giving off that show that things are working ok and the software is built with enough quality to handle many eventualities to the level we  feel confident enough for our important data (or in the case of this elevator &#8211; our very lives).\u00a0 Interfaces that lock up after you hit a button, spinning disks that don&#8217;t give you any clue how long they&#8217;ll take to come back, or dialogs that have confusing wording are all things that make you start to feel un-trusting of the software and start thinking it is glitchy or low-quality.<\/p>\n<p>Brings me to a pretty decent book on UI design I read recently &#8220;UI Design for Programmers&#8221; by Joel Spolsky.\u00a0 Here were some of the notes I took while reading his book:<\/p>\n<ol>\n<li>People feel good about software\/something&#8217;s usability when they get a &#8220;chain of victories&#8221; &#8211; when a tiny chain of perfectly timed events\/accomplishments go off right.\u00a0 That&#8217;s what makes people <strong>enjoy <\/strong>using your software and perceive it has value and was well designed.<\/li>\n<li><u>Know the point of usability testing:<\/u> You only need about 2-5 people to test your usability.\u00a0 More people than that, and you&#8217;ll see same stuff again and again. \u00a0You <em>don&#8217;t<\/em> want numbers\/stats like &#8216;27.5% of the people found the save dialog box&#8217;.\u00a0 You want to know what users <em><strong>think <\/strong><\/em>should happen &#8211; so the thing you&#8217;re looking for are things like &#8220;Most of the users kept opening the file menu to find the save feature &#8211; but it wasn&#8217;t there&#8221;.\u00a0 The point is to <em>teach you <\/em>how people *think* the interface should work.\u00a0 If you just outsource this and get a stack of numbers back, it&#8217;s like paying someone to go to college for you.\u00a0 You are not learning how the average person approaches the visual clues on a computer.<\/li>\n<li><u>Use &#8216;affordances&#8217; to help users see\/learn what to do:<\/u><br \/>\nAffordances are visual clues.\u00a0 Use negative space to show where hand or finger goes like they do on camera bodies, put ridges on window edges to show it can be sized\/slid. \u00a0Make tabs act like real file folders so they click and show new panes, etc.<\/li>\n<li><u>Don&#8217;t break real world metaphors:<\/u><br \/>\nWindows briefcase was totally confusing since didn&#8217;t work like real briefcase.\u00a0 Do I put things in it then copy that to my pen drive to take it home?\u00a0\u00a0 Also, always obey the laws of physics &#8211; windows tabs dragging things should behave as on a real desk.\u00a0 Don&#8217;t rely on the user knowing about strange &#8216;hidden&#8217; panes or the like when switching between things (early versions of Mac Office did this).\u00a0 Don&#8217;t break people&#8217;s expectations of how something works if you use a visual metaphor.\u00a0 If you&#8217;re using it, it should be because it&#8217;s a GOOD metaphor.<\/li>\n<li><u>Consistency<\/u><br \/>\nCertain hot-key combos and other UI behaviors had better be the same as other apps or people will get frustrated. Even if you hate the way Microsoft\/Apple did it &#8211; different or &#8216;clever&#8217; new UI or key shortcuts for cut\/paste and other common features will just anger 99.999% of the people (yes &#8211; this means you Linux).\u00a0 If you&#8217;re going to do it differently, you better understand exactly why and that most people will probably TRY to do it the old way; so be ready for that.<\/li>\n<li><u>Designing for extremes often produces better designs for everyone<\/u><br \/>\nIf you design your product for difficult\/extreme cases &#8211; it should become even easier for normal use.\u00a0 Design for people who are colorblind, for low light, shaky hands, wearigng gloves, etc.\u00a0 RFID cards for hotels were designed for folks that had poor vision\/arthritis, but turned out way easier than standard house keys for buildings and are used all the time.\u00a0 People now just put coat pockets up to the the sensor when their hands are full &#8211; much easier.\u00a0 Designers started designing large handled kitchen tools for people with arthritis; and then it turned out everyone actually preferred them &#8211; now almost all modern utensils have large handholds with nice grips and large knobs.\u00a0 Your UI should never rely on color for functionality.\u00a0 A good number of people are partly colorblind &#8211; so if you design in B\/W, it will help you create affordances that will likely help everyone &#8211; i.e. pie charts that have labels that float over each slice instead of just in a color key to the side with many different colors that are very close in shade.<br \/>\nFor computers &#8211; design for people that can&#8217;t: read, use mouse well, or have memory so bad that can&#8217;t remember own name if it wasn&#8217;t on a card.\u00a0 This is the <em>right <\/em>way to design for usability that turns out good for everyone &#8211; and not condescending like the &#8216;clippy&#8217; assistant was.<\/li>\n<li><u>Mice are hard to control<\/u><br \/>\nAssume everyone is using your app with a crappy laptop trackpad or clip-on trackball attached to their laptop.<br \/>\nListboxes should expand to whole physical page or max elements &#8211; don&#8217;t make them scroll if at all possible. \u00a0Dropdowns should happen if you click ANYWHERE in dropdowns box &#8211; not just the down arrow.\u00a0 Always autoscroll down when near bottom of page.\u00a0 Use bold, fat fonts so characters are wide &amp; selectable like Macs that use Chicago font. \u00a0No characters should be 1 pix wide like if you use Arial.<\/li>\n<li><u>Not all happenings are equally likely<\/u><br \/>\nCoders think that if you allow something between the range of values, that any value in that range is equally likely.\u00a0 This is usually wrong and leads to inefficiency.\u00a0 i.e. If the range of 0 to 100 is allowed, 50 is probably more likely than someone choosing 47.\u00a0 If you allow window repositioning, odds are most of time folks will want windows in certain spots &#8211; like right against edge, not exactly 2px from edge. \u00a0Or if a window is inside another window &#8211; should you really allow sub windows to go past edge? \u00a0Snap too or have elements go to the most *likely* values\/positions.\u00a0 Photoshop has a snap to edge\/nearest &#8216;edge&#8217;-like feature of the picture ability.<\/li>\n<li><u>Don&#8217;t force remembering &#8211; give hints along the way<\/u><br \/>\nMenus give lists of commands so you don&#8217;t have to remember individual commands like the old Emacs days.\u00a0 Always try to allow folks to chose from lists of things instead of having to remember.\u00a0 Give other context hints: thumbnails show what the contents of a file is, autocomplete helps finish words. \u00a0All little helps are good &#8211; but don&#8217;t go overboard &#8211; allow easy outs or pass arounds for your &#8216;helping&#8217; or folks will get frustrated.\u00a0 If you fail to guess right 2-3 times, auto-disable the feature.\u00a0 Photoshop&#8217;s snap-to feature is easily disabled in the menu bar, or just hold down ALT to get rid of it for that operation.<\/li>\n<li><u>How to design a product<\/u><br \/>\nDon&#8217;t design by listing <em>features <\/em>you want &#8211; start with list of <em>activities <\/em>you want to accomplish. \u00a0What activities do you want to complete with your software?\u00a0 This is especially true for version 2.0 of your app. See what people ACTUALLY use it for and optimize for those activities.\u00a0 Turns out many people use Excel to make simple lists &#8211; which killed competitors when they optimized for other activities.<\/li>\n<li><u>Don&#8217;t fall prey to &#8220;design time warp&#8221; effects<\/u><br \/>\nYou take weeks to design the dialog boxes and flow &#8211; thinking long and hard about it &#8211; but the user sees it and needs to make a choice in 5 seconds.\u00a0 They see so many options &#8211; they don&#8217;t know what to do.\u00a0 i.e. a complex print dialog box that has so many options and parameters nobody knows WHAT to do with all the buttons\/options.\u00a0 Solution is to take a printout of the dialog to conference room and ask 3 people what they would do if they saw it.<br \/>\n<em>Over the course of the 6mo to 2 years you develop things, you come up with more and more ideas.<\/em> While you learned them over months and years, your user will experience them in just a minute or two. The best designs are the simplest &#8211; like a toaster.\u00a0 If a software design team built a toaster, it&#8217;d end up costing $1200, make toast, BLT&#8217;s, have lcd displays, and boot up and ask if you want to register for AOL before you could make a single slice of toast &#8211; and it probably wouldn&#8217;t even do that right the first go.\u00a0 VCR designers kept adding more features until they realized what people really needed was if you put a tape in, it should automatically switch to the VCR mode of the TV\/VCR setting, and actually start playing right away, then auto rewind when it hit the end of the tape.<br \/>\n<em>Seconds feel like hours<\/em> when you get no immediate response back.\u00a0 After about 2.7 sec, people get bored\/give up.\u00a0 So when you click on something &#8211; always do SOMETHING, never just sit there blankly while you work.\u00a0 Turn cursor to hourglass, progress bar immediately appears, etc. try to break up long operations when it makes sense.\u00a0 Instead of waiting for VB to compile all at once when you hit F7, do the parsing after each enter for a half-second, so compiling was fast.<br \/>\nWhen that fails, bunch all long operations TOGETHER so you ask all the questions up front, then tell them to go get a coffee and when they return &#8211; it will be done.\u00a0 NEVER pop up a dialog half-way through that pauses the long action so they&#8217;re stuck at the machine for the whole time.<br \/>\nBasic takeaway: Over the time you design a package, you should be <em>removing <\/em>complications, not adding them.<\/li>\n<li><u>Don&#8217;t confuse <em>usability <\/em>with <\/u><em><u>learnability<\/u> <\/em>&#8211; Figure out if you need learnability or usability in your app.\u00a0 If the user is going to use it once or twice (like a map kiosk) they need high learnability.\u00a0 If it&#8217;s something they use every day &#8211; it needs to be very usable.\u00a0 Hopefully a usable program is learnable so that the user can figure things out on their own.\u00a0 This means it might not necessarily be that it&#8217;s easiest on the first go &#8211; but should <em>act <\/em>the way the expect the first time.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Went to visit a good friend that just had their first child at a local hospital.\u00a0 On the way out from the joyful visit, I was greeted by this wonderful elevator: \u00a0\u00a0\u00a0\u00a0 The display was locked-up mid-boot and never did recover during my short trip from the 4th to 1st floor.\u00a0 Everything went well, but wow. This brought up the importance of how it is often it&#8217;s the *subtle* clues software needs to be giving off that show that things&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/mattfife.com\/?p=337\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[9],"tags":[],"class_list":["post-337","post","type-post","status-publish","format-standard","hentry","category-cool"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4WECr-5r","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=337"}],"version-history":[{"count":1,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/337\/revisions"}],"predecessor-version":[{"id":644,"href":"https:\/\/mattfife.com\/index.php?rest_route=\/wp\/v2\/posts\/337\/revisions\/644"}],"wp:attachment":[{"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mattfife.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}