{"id":463,"date":"2010-03-02T11:51:48","date_gmt":"2010-03-02T18:51:48","guid":{"rendered":"https:\/\/simpleprogrammer.com\/?p=463"},"modified":"2018-04-13T17:09:04","modified_gmt":"2018-04-13T21:09:04","slug":"how-to-hang-a-picture-agile-user-stories","status":"publish","type":"post","link":"https:\/\/simpleprogrammer.com\/how-to-hang-a-picture-agile-user-stories\/","title":{"rendered":"How to Hang a Picture: Agile User Stories"},"content":{"rendered":"<p>How many times do we complete an agile user story or backlog item\u00a0and end up with something like this?<\/p>\n<p><a href=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-464\" title=\"Hang Picture Wrong.egg_91dba\" alt=\"\" src=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png?w=300\" width=\"300\" height=\"300\" srcset=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png 625w, https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba-300x300.png 300w, https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba-150x150.png 150w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Holes in the wall from where we changed the requirements 10 times during the sprint; picture is crooked because that is what the final requirement said; picture is not centered on the wall because we already put too many holes in the sheet rock there.<\/p>\n<p>Let&#8217;s be honest here. \u00a0If you hired someone to come to your house\u00a0to hang a picture on your wall, and he ended up doing a job like the one above, you wouldn&#8217;t think it&#8217;s your fault. \u00a0Neither do your users or your business people. \u00a0They look for the guy with the\u00a0cheesy\u00a0grin holding the hammer.<\/p>\n<p>From his perspective it makes sense. \u00a0Before he even looked at your wall, he asked you to draw a picture of your living room. \u00a0He asked you to give him the exact dimensions of the picture you wanted to be hung. \u00a0He even asked you for the exact height and horizontal distance to hang the picture. \u00a0You couldn&#8217;t provide him with any of those things, so instead you gave him the best description of your living room, the size of the painting and where to hang it. \u00a0With that he did the best he could and hung the painting on the wall. \u00a0You didn&#8217;t hear from him again until he was &#8220;done.&#8221; \u00a0(Some strange person from his company even came by and did a bunch of measurements with a tape measure, checked the strength of the nail and a bunch of other tests, and finally also stated it was done.)<\/p>\n<p>You take a look at the work. \u00a0Nicely anchored to the wall, as level as possible, exactly in the wrong place. \u00a0You quibble over the work for a bit. \u00a0He pulls out his tape recorder and plays back your exact description of the site and how you wanted the picture hung. \u00a0As he plays it back he points out how he did exactly what you asked. \u00a0And he is right, sort of. \u00a0What he did matches what you said, the only problem is what you said could be interpreted several ways. \u00a0The way he interpreted it\u00a0wasn&#8217;t what you intended; he should have asked more questions. \u00a0As you look at the placement of the painting, you realize the original height, which he actually did get right, is not what you want anymore, now that you can see the painting on the wall.<\/p>\n<p>You try again, trying to be more specific with your requirements this time. \u00a0He asks a lot more questions, you have a hard time answering without seeing the project. \u00a0Finally, after some time you agree on how it should be done, and he sets out to tear down the old painting and\u00a0re-hang it again. \u00a0You don&#8217;t hear from him again until it is &#8220;done.&#8221; \u00a0The process repeats, more holes in the wall, more playing back your words. \u00a0He&#8217;s honestly trying to do a good job, you&#8217;re honestly trying to tell him what you think you want, but it is hard upfront.<\/p>\n<p>Finally, you end up with the picture above. \u00a0Lots of holes in your wall and a crooked painting hung in the wrong place. \u00a0It is not what you wanted, but rather than go through this process again, you decide you can &#8220;just make it work.&#8221;<\/p>\n<h2>Can you see the problem yet?<\/h2>\n<p>If you&#8217;re exclusively blaming either party here, you&#8217;re not looking hard enough.<\/p>\n<p>The problem is, you would never hang a painting like this. \u00a0If you were going to hire someone to hang a painting, you would stand there in the living room while they held the painting at various levels and locations against the wall. \u00a0Someone listening nearby might hear:<\/p>\n<p>&#8220;Higher, higher&#8230; ok now stop. \u00a0Wait back lower again. \u00a0How about a little to the left? \u00a0Hmm, I don&#8217;t think it is quite straight. \u00a0Ok, now it is. \u00a0Yeah that looks good. \u00a0Honey, what do you think?&#8221;<\/p>\n<h2>What about you?<\/h2>\n<p>So, how are you developing your backlog items or user stories? \u00a0Are you doing them like the first example, where you are asking for all the requirements upfront and then building what you think the business person wanted? \u00a0Or, are you doing like the second\u00a0example where you are working with the customer as you build the solution, not putting nails in the wall until you know you have built what the user wanted?<\/p>\n<p>As developers, especially if we have come from a waterfall background, we have the\u00a0tendency\u00a0to want to get all the requirements upfront. \u00a0It is often difficult to figure out how to work with the customer to build the solution instead of simply gathering the requirements\u00a0and then\u00a0doing the work. \u00a0There may also\u00a0be barriers in your organization which prevent you from doing so.<\/p>\n<p>Here are some tips to help get the customer involved:<\/p>\n<ul>\n<li>Co-locate. \u00a0The best way to communicate is face to face. \u00a0If you have to email, message, or call your business person or customer, you are adding overhead which makes it less likely to happen and more difficult.<\/li>\n<li>Keep the story about the business problem, not about the solution. \u00a0This will force you to talk to the customer about the solution later.<\/li>\n<li>Don&#8217;t try to do one upfront design for the story. \u00a0Instead have mini-design sessions as you go.<\/li>\n<li>As soon as you have something to show to the customer, show it to the customer, even if it is on your own development work-station, even if it is a picture you drew with a marker.<\/li>\n<li>Have the customer develop or co-develop the test cases with the team or person doing the testing. \u00a0Developers should be building the thing that passes these test cases.<\/li>\n<li>Figure out who the real customer is. \u00a0You may not be able to control this much, but sometimes the person pretending to be the customer isn&#8217;t the person who will actually use the product. \u00a0If this is the case, you have to find a way to solve this problem or have a good representation of the real customer.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>How many times do we complete an agile user story or backlog item\u00a0and end up with something like this? Holes in the wall from where we changed the requirements 10 times during the sprint; picture is crooked because that is what the final requirement said; picture is not centered on the wall because we already&#8230;<\/p>\n","protected":false},"author":2,"featured_media":464,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[11287,148,31679,303624],"tags":[],"class_list":["post-463","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agile","category-design","category-process-improvement","category-user-stories"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How to Hang a Picture: Agile User Stories<\/title>\n<meta name=\"description\" content=\"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\/or backlog items.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Hang a Picture: Agile User Stories\" \/>\n<meta property=\"og:description\" content=\"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\/or backlog items.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/simpleprogrammer.com\/products\/careerguide\" \/>\n<meta property=\"og:site_name\" content=\"Simple Programmer\" \/>\n<meta property=\"article:published_time\" content=\"2010-03-02T18:51:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-04-13T21:09:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png\" \/>\n\t<meta property=\"og:image:width\" content=\"625\" \/>\n\t<meta property=\"og:image:height\" content=\"625\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"John Sonmez\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"John Sonmez\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/how-to-hang-a-picture-agile-user-stories\\\/\"},\"author\":{\"name\":\"John Sonmez\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"headline\":\"How to Hang a Picture: Agile User Stories\",\"datePublished\":\"2010-03-02T18:51:48+00:00\",\"dateModified\":\"2018-04-13T21:09:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/how-to-hang-a-picture-agile-user-stories\\\/\"},\"wordCount\":1037,\"commentCount\":6,\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/hang-picture-wrong-egg_91dba.png\",\"articleSection\":[\"Agile\",\"Design\",\"Process Improvement\",\"User Stories\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/how-to-hang-a-picture-agile-user-stories\\\/\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\",\"name\":\"How to Hang a Picture: Agile User Stories\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/hang-picture-wrong-egg_91dba.png\",\"datePublished\":\"2010-03-02T18:51:48+00:00\",\"dateModified\":\"2018-04-13T21:09:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\"},\"description\":\"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\\\/or backlog items.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#primaryimage\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/hang-picture-wrong-egg_91dba.png\",\"contentUrl\":\"https:\\\/\\\/simpleprogrammer.com\\\/wp-content\\\/uploads\\\/2010\\\/03\\\/hang-picture-wrong-egg_91dba.png\",\"width\":625,\"height\":625,\"caption\":\"agile user stories\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/products\\\/careerguide#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/simpleprogrammer.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Hang a Picture: Agile User Stories\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#website\",\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/\",\"name\":\"Simple Programmer\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/simpleprogrammer.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/simpleprogrammer.com\\\/#\\\/schema\\\/person\\\/1abc70edfb189184827740310672de67\",\"name\":\"John Sonmez\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g\",\"caption\":\"John Sonmez\"},\"url\":\"https:\\\/\\\/simpleprogrammer.com\\\/author\\\/jsonmez\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Hang a Picture: Agile User Stories","description":"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\/or backlog items.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_locale":"en_US","og_type":"article","og_title":"How to Hang a Picture: Agile User Stories","og_description":"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\/or backlog items.","og_url":"https:\/\/simpleprogrammer.com\/products\/careerguide","og_site_name":"Simple Programmer","article_published_time":"2010-03-02T18:51:48+00:00","article_modified_time":"2018-04-13T21:09:04+00:00","og_image":[{"width":625,"height":625,"url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png","type":"image\/png"}],"author":"John Sonmez","twitter_card":"summary_large_image","twitter_misc":{"Written by":"John Sonmez","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#article","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/how-to-hang-a-picture-agile-user-stories\/"},"author":{"name":"John Sonmez","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"headline":"How to Hang a Picture: Agile User Stories","datePublished":"2010-03-02T18:51:48+00:00","dateModified":"2018-04-13T21:09:04+00:00","mainEntityOfPage":{"@id":"https:\/\/simpleprogrammer.com\/how-to-hang-a-picture-agile-user-stories\/"},"wordCount":1037,"commentCount":6,"image":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png","articleSection":["Agile","Design","Process Improvement","User Stories"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/simpleprogrammer.com\/products\/careerguide#respond"]}]},{"@type":"WebPage","@id":"https:\/\/simpleprogrammer.com\/how-to-hang-a-picture-agile-user-stories\/","url":"https:\/\/simpleprogrammer.com\/products\/careerguide","name":"How to Hang a Picture: Agile User Stories","isPartOf":{"@id":"https:\/\/simpleprogrammer.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"image":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage"},"thumbnailUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png","datePublished":"2010-03-02T18:51:48+00:00","dateModified":"2018-04-13T21:09:04+00:00","author":{"@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67"},"description":"Six ideas to reduce miscommunication and ensure the right product is created from agile user stories and\/or backlog items.","breadcrumb":{"@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/simpleprogrammer.com\/products\/careerguide"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#primaryimage","url":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png","contentUrl":"https:\/\/simpleprogrammer.com\/wp-content\/uploads\/2010\/03\/hang-picture-wrong-egg_91dba.png","width":625,"height":625,"caption":"agile user stories"},{"@type":"BreadcrumbList","@id":"https:\/\/simpleprogrammer.com\/products\/careerguide#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/simpleprogrammer.com\/"},{"@type":"ListItem","position":2,"name":"How to Hang a Picture: Agile User Stories"}]},{"@type":"WebSite","@id":"https:\/\/simpleprogrammer.com\/#website","url":"https:\/\/simpleprogrammer.com\/","name":"Simple Programmer","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/simpleprogrammer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/simpleprogrammer.com\/#\/schema\/person\/1abc70edfb189184827740310672de67","name":"John Sonmez","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dc2f18dfa76e017566ce607de002d7abe4acfd5ec19a6db82c180b00867b8d94?s=96&d=mm&r=g","caption":"John Sonmez"},"url":"https:\/\/simpleprogrammer.com\/author\/jsonmez\/"}]}},"_links":{"self":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/comments?post=463"}],"version-history":[{"count":0,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/posts\/463\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media\/464"}],"wp:attachment":[{"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/media?parent=463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/categories?post=463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/simpleprogrammer.com\/wp-json\/wp\/v2\/tags?post=463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}