{"id":39353,"date":"2004-05-13T07:01:00","date_gmt":"2004-05-13T07:01:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/oldnewthing\/2004\/05\/13\/thinking-through-a-feature\/"},"modified":"2004-05-13T07:01:00","modified_gmt":"2004-05-13T07:01:00","slug":"thinking-through-a-feature","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20040513-00\/?p=39353","title":{"rendered":"Thinking through a feature"},"content":{"rendered":"<p>The commentary after  <a href=\"http:\/\/weblogs.asp.net\/oldnewthing\/archive\/2004\/04\/30\/123821.aspx\">  my entry on taskbar grouping<\/a>  drifted into people asking for still more features in taskbar  grouping.\n  Writing the code is the easy part.\n  Designing a feature is hard.\n  You have several audiences to consider.  It&#8217;s not just about the alpha geeks;  you have to worry about the grandmothers,  the office workers,  the IT departments.  They all have different needs.  Sometimes a feature that pleases one group  offends another.\n  So let&#8217;s look at some of the issues surrounding the  proposed feature of allowing users to selectively ungroup  items in the taskbar.\n  One issue with selective grouping is  deciding the scope of the feature.  Suppose the user ungroups Internet Explorer,  then closes all the IE windows,  then opens two new IE windows:  Do the new ones group?\n  If so, then you now have an invisible setting.  How do you configure grouping for programs that aren&#8217;t running?  (How do you configure something that you can&#8217;t see?)\n  Suppose you&#8217;ve figured that out.  That&#8217;s fine for the alpha geeks,  but what about grandma?\n  &#8220;The Internet is all disorganized.&#8221;\n  &#8220;What do you mean?&#8221;\n  &#8220;All my Internet windows are all disorganized.&#8221;\n  &#8220;Can you explain a little more?&#8221;\n  &#8220;My taskbar used to be nice and organized,  but now the Internet parts are disorganized and spread out all over the place.  It used to be nice and neat.  I don&#8217;t know how it happened.  I hate the Internet, it&#8217;s always messing up my computer.&#8221;\n  What is the UI for selective ungrouping?  Anything that is on a context menu will be executed  accidentally by tens of thousands of people due to mouse twitching.  Putting the regroup onto the context menu isn&#8217;t  necessarily good enough because those people don&#8217;t even  realize it was a context menu that did it. It was just a mouse twitch.\n  Mouse twitches cause all sorts of problems.  Some people  <a href=\"http:\/\/groups.google.com\/groups?selm=359398e0.970150%40news.shelby.net\">  accidentally dock their taskbar vertically<\/a>;  others  <a href=\"http:\/\/groups.google.com\/groups?selm=627701c3e5e1%244fb4ff10%24a501280a%40phx.gbl\">  accidentally resize their taskbar to half the size of the screen<\/a>.  Do not underestimate the havoc that can be caused by mouse twitching.\n  Soon people will want to do arbitrary grouping.  &#8220;I want to group this command prompt,  that notepad window, and this calc window together.&#8221;\n  What about selective ungrouping?  &#8220;I have this group of 10 windows,  but I want to ungroup just 2 of them,  leaving the other 8 grouped together.&#8221;\n  Once you have selective\/arbitrary grouping,  how do you handle new windows? What group do they go into?\n  Remember: Once you decide, &#8220;No, that&#8217;s too much,&#8221;  there will be thousands of people cursing you for not doing enough.  Where do you draw the line?  And also remember that each feature you add will cost you another  feature somewhere else.  Manpower isn&#8217;t free.\n  But wait, the job has just begin.  Next, you get to sit down and do the usability testing.\n  Soon you&#8217;ll discover that everything you assumed  to be true is completely wrong,  and you have to go back to the drawing board.  Eventually, you might conclude that you over-designed the feature  and you should go back to the simple on\/off switch.\n  Wait, you&#8217;re still not done.  Now you have to bounce this feature off corporate IT managers.  They will probably tear it to shreds too.  In particular, they&#8217;re going to demand things like  remote administration and the ability to force the  setting on or off across their entire company  from a central location.  (And woe unto you if you chose something more complicated  than an on\/off switch: Now you have to be able to deploy  that complex setting across tens of thousands of computers &#8211; some  of which may be connected to the corporate network via slow  modems!)\n  Those are just some of the issues involved in designing a feature.  Sometimes I think it&#8217;s a miracle that features happen at all!\n  (Disclaimer: I&#8217;m not saying this is how the grouping feature  actually came to be. I just used it as a starting point for  a rant.)<\/p>\n<p>  For another perspective, you can check out  <a href=\"http:\/\/weblogs.asp.net\/kclemson\/\">KC Lemson<\/a>&#8216;s discussion of the feature-design  process a few days ago under the topic  <a href=\"http:\/\/weblogs.asp.net\/kclemson\/archive\/2004\/05\/10\/129544.aspx\">  There&#8217;s no such thing as a simple feature<\/a>.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>The commentary after my entry on taskbar grouping drifted into people asking for still more features in taskbar grouping. Writing the code is the easy part. Designing a feature is hard. You have several audiences to consider. It&#8217;s not just about the alpha geeks; you have to worry about the grandmothers, the office workers, the [&hellip;]<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[26],"class_list":["post-39353","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-other"],"acf":[],"blog_post_summary":"<p>The commentary after my entry on taskbar grouping drifted into people asking for still more features in taskbar grouping. Writing the code is the easy part. Designing a feature is hard. You have several audiences to consider. It&#8217;s not just about the alpha geeks; you have to worry about the grandmothers, the office workers, the [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/39353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=39353"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/39353\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=39353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=39353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=39353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}