{"id":909,"date":"2009-08-21T09:44:44","date_gmt":"2009-08-21T13:44:44","guid":{"rendered":"http:\/\/www.red-sweater.com\/blog\/?p=909"},"modified":"2009-08-21T10:19:46","modified_gmt":"2009-08-21T14:19:46","slug":"user-friendly-heuristics","status":"publish","type":"post","link":"https:\/\/redsweater.com\/blog\/909\/user-friendly-heuristics","title":{"rendered":"User Friendly Heuristics"},"content":{"rendered":"<p>Wil Shipley writes <a href=\"http:\/\/wilshipley.com\/blog\/2009\/08\/pimp-my-code-part-16-heuristics-and.html\">about the compromised perfection<\/a> we must strive for in order to provide users an experience that meets their human expectations:<\/p>\n<blockquote><p>&#8220;Classic computer programming has largely failed, because it failed to copy nature. Nothing in nature works 100% of the time, but it sure works well MOST of the time \u2013 and when it fails, well, you die and get replaced. A human being, for instance, is an absolutely amazing machine, and is provably NOT provably correct.&#8221;<\/p><\/blockquote>\n<p>I particularly like the example in the second half, having to do with smartly interpreting a typed ISBN numbers for product search. How do you strip the meaningless dashes from a search term, except when they&#8217;re utterly meaningful? This kind of thinking is important to fine-tuning an application. Nobody will appreciate the hours you spent laboring over the question, but for some reason they&#8217;ll just think your product is particularly awesome.<\/p>\n<p>It&#8217;s interesting that the pursuit of perfection in an application has to involve the pursuit of compromise. By solving a problem in a way that degrades gracefully to unsolvable, you offer a happy, possibly even surprise solution to many people who would not otherwise expect one.<\/p>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wil Shipley writes about the compromised perfection we must strive for in order to provide users an experience that meets their human expectations: &#8220;Classic computer programming has largely failed, because it failed to copy nature. Nothing in nature works 100% of the time, but it sure works well MOST of the time \u2013 and when [&hellip;]<\/p>\n","protected":false},"author":10,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,44,34],"tags":[],"class_list":["post-909","post","type-post","status-publish","format-standard","hentry","category-cocoa","category-design","category-links"],"_links":{"self":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/909","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/comments?post=909"}],"version-history":[{"count":3,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/909\/revisions"}],"predecessor-version":[{"id":914,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/posts\/909\/revisions\/914"}],"wp:attachment":[{"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/media?parent=909"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/categories?post=909"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redsweater.com\/blog\/wp-json\/wp\/v2\/tags?post=909"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}