{"id":6,"date":"2010-12-02T15:32:10","date_gmt":"2010-12-02T23:32:10","guid":{"rendered":"http:\/\/blog.edwinevans.me\/?p=6"},"modified":"2010-12-15T09:55:16","modified_gmt":"2010-12-15T17:55:16","slug":"deeper-versus-wider","status":"publish","type":"post","link":"http:\/\/blog.edwinevans.me\/?p=6","title":{"rendered":"Software Trade-off: Deeper versus Wider"},"content":{"rendered":"<p>When creating software, you\u2019re often forced to choose between making existing functionality better or adding more functionality. A related dilemma is between making it what I call broader versus deeper, where breadth is the amount of user interface \u201cstuff\u201d (dialogs, controls, windows, etc) and depth is the value of each element. The most obvious way to add functionality is by adding UI stuff, but as Alan Cooper pointed out &#8220;No matter how beautiful, no matter how cool your interface, it would be better if there were less of it\u201d.<\/p>\n<p>Here are some characteristics of depth versus breadth:<\/p>\n<p><strong>Depth is often discovered by guessing, reading, or just using without thinking. <\/strong>It\u2019s easy to look at the Microsoft Calculator and know what it can do but you need to stumble upon the <a href=\"http:\/\/www.google.com\/intl\/en\/help\/features.html#calculator\" target=\"_blank\">Google calculator<\/a> to know it even exists. Do you use the Google toolbar? If so, do you know that you can press Alt+Enter to do an \u201cI Feel Lucky&#8221; search? I bet not since there doesn&#8217;t seem to be any UI stuff about this at all.<\/p>\n<p><strong>Making it faster is adding depth. <\/strong>If you make it fast enough that it appears instantaneous you can remove UI stuff such as progress bars or \u201cplease wait\u201d messages. Speed has the typical characteristic of depth that it\u2019s hard to do and requires a high threshold of brain power.<\/p>\n<p><strong>Depth is hard. <\/strong>In meetings, breadth is characterized by comments such as \u201cit could do this too\u201d or \u201csome customer requested this option also\u201d. Depth is characterized by someone saying \u201cbut is that possible?\u201d It\u2019s more straightforward to add breadth to an existing deep product than depth to an existing broad product since you&#8217;re always running out of room as the UI elements fill up the space available.<\/p>\n<p><strong>Adding subtle behavior is adding depth. <\/strong>Overlays, modeless feedback, or auto-completion algorithms are deep. They won\u2019t show up on a feature comparison chart on the back of a box and will largely go unnoticed by the user. Depth is hard to describe and market since you can\u2019t see it; you experience it, or more often the lack of it.<\/p>\n<p><strong>Insufficient depth causes many forms of frustration. <\/strong>Insufficient depth costs users time whereas adding depth costs developers time. Lack of depth causes many different forms of frustration: slow, buggy, intolerant of user errors, difficult to use. Lack of functionality causes only one form of frustration: \u201cit doesn\u2019t do what I need!\u201d<\/p>\n<p><strong>Breadth is good when going after vertical markets<\/strong>. Specific markets have specific needs and care more about meeting those needs than meeting them in the most optimal (expensive) way possible. Depth is good for universal problems. Businesses lean towards breadth because it\u2019s easier to calculate how it affects their potential market and requires less thinking. Depth leads to fandom. Breadth can lead to lock-in if you cover enough area at once.<\/p>\n<p><strong>Another Example <\/strong><\/p>\n<p>Here\u2019s some of the UI for finding text in Microsoft Word 2007:<\/p>\n<p><a href=\"http:\/\/blog.edwinevans.me\/wp-content\/uploads\/2010\/12\/WordFind3.png\"><img loading=\"lazy\" class=\"aligncenter size-full wp-image-25\" title=\"Microsoft Word Find Dialog\" src=\"http:\/\/blog.edwinevans.me\/wp-content\/uploads\/2010\/12\/WordFind3.png\" alt=\"\" width=\"553\" height=\"437\" srcset=\"http:\/\/blog.edwinevans.me\/wp-content\/uploads\/2010\/12\/WordFind3.png 553w, http:\/\/blog.edwinevans.me\/wp-content\/uploads\/2010\/12\/WordFind3-300x237.png 300w\" sizes=\"(max-width: 553px) 100vw, 553px\" \/><\/a><\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/blog.edwinevans.me\/wp-content\/uploads\/2010\/12\/dchg9swj_3fb8mj9gh.jpg\"><\/a><\/p>\n<p>It\u2019s wide and it also has some deep features such as \u201cFind all word forms\u201d and \u201cSounds like\u201d. I don\u2019t use any of these and you don\u2019t either but it doesn\u2019t bother me that they\u2019re there. Microsoft obviously spent an enormous amount of money developing this and presumably some of their customers find these options useful.<\/p>\n<p>But having this dialog doesn\u2019t substitute for a quick way to jump to some text with\u00a0<em>minimal<\/em> effort. Something like that would have the deep features of providing early-as-possible feedback, clear-as-possible results, and minimal user input. HandyFind is my attempt to do just that.\u00a0It has virtually no UI stuff but it has deep features such as animation,\u00a0interactivity, and\u00a0multiple application support.<strong> <\/strong><br \/>\n<strong> <\/strong><br \/>\n<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" width=\"480\" height=\"385\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,40,0\"><param name=\"allowFullScreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"src\" value=\"http:\/\/www.youtube.com\/v\/Zizoaped950?fs=1&amp;hl=en_US\" \/><param name=\"allowfullscreen\" value=\"true\" \/><embed type=\"application\/x-shockwave-flash\" width=\"480\" height=\"385\" src=\"http:\/\/www.youtube.com\/v\/Zizoaped950?fs=1&amp;hl=en_US\" allowscriptaccess=\"always\" allowfullscreen=\"true\"><\/embed><\/object><\/p>\n<p><strong>Conclusion <\/strong><\/p>\n<p>As a user and a sympathetic software developer I lean towards depth even if it means accepting that a particular version of software can\u2019t do everything I want.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depth is characterized by someone saying \u201cbut is that possible?\u201d  <a href=\"http:\/\/blog.edwinevans.me\/?p=6\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/posts\/6"}],"collection":[{"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6"}],"version-history":[{"count":24,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/posts\/6\/revisions"}],"predecessor-version":[{"id":73,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=\/wp\/v2\/posts\/6\/revisions\/73"}],"wp:attachment":[{"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.edwinevans.me\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}