A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.md 19KB

4 yıl önce
12345678910111213
  1. title: Replacing The User Story With The Job Story
  2. url: https://jtbd.info/replacing-the-user-story-with-the-job-story-af7cdee10c27
  3. hash_url: 6512ff7a7e315cf4291f831d7bea16f6
  4. <p name="7e8d" id="7e8d" class="graf graf--p graf--leading">I’ve written about <a href="http://alanklement.blogspot.com/2013/03/the-problem-with-user-stories-and-whats.html" data-href="http://alanklement.blogspot.com/2013/03/the-problem-with-user-stories-and-whats.html" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank">the problem with user stories before</a>. At the time, I found it better to just have the team talk over proposed changes to the product. This worked great when the team had gelled and the product is very mature; however, now I’m working with a new team and building a product from scratch. In this case, because our canvas is blank, we are having trouble getting on the same page when it comes to customer motivations, events and expectations. <strong class="markup--strong markup--p-strong">But today, things have turned around. </strong>I’ve come across a great way to use the jobs to be done philosophy to help define features.<br>I call them <em class="markup--em markup--p-em">Job Stories.</em></p>
  5. <h4 name="5bb2" id="5bb2" class="graf graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">Where It Comes From</strong></h4><p name="66a7" id="66a7" class="graf graf--p graf-after--h4">The idea comes from the <a href="http://insideintercom.io/the-dribbblisation-of-design/" data-href="http://insideintercom.io/the-dribbblisation-of-design/" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank">really smart people at intercom</a>. Here is what is they say:</p><blockquote name="2e55" id="2e55" class="graf graf--blockquote graf-after--p"><em class="markup--em markup--blockquote-em">We frame every design problem in a Job, focusing on the triggering event or situation, the motivation and goal, and the intended outcome:</em></blockquote><blockquote name="56ff" id="56ff" class="graf graf--blockquote graf-after--blockquote"><em class="markup--em markup--blockquote-em">When _____ , I want to _____ , so I can _____ .</em></blockquote><blockquote name="edc9" id="edc9" class="graf graf--blockquote graf-after--blockquote"><em class="markup--em markup--blockquote-em">For example: When an important new customer signs up, I want to be notified, so I can start a conversation with them.</em></blockquote><p name="a1a8" id="a1a8" class="graf graf--p graf-after--blockquote">It’s not referred to as a <em class="markup--em markup--p-em">Job Story </em>in the article, but I’ll call it that so I can easily reference it in the future.<br>The article doesn’t spend a whole lot of time with the concept, so I’ll talk about why I like it and why it’s better than <em class="markup--em markup--p-em">User Stories.</em></p>
  6. <h4 name="7324" id="7324" class="graf graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">The Problem (Again) With User Stories</strong></h4><p name="cb1d" id="cb1d" class="graf graf--p graf-after--h4">Summed up, the problem with user stories is that it’s too many assumptions and doesn’t acknowledge causality. When a task is put in the format of a user story ( <strong class="markup--strong markup--p-strong">As a [type of user], I want [some action], so that [outcome] </strong>) there’s no room to ask ‘why’ — you’re essentially locked into a particular sequence with no context.</p><p name="47e7" id="47e7" class="graf graf--p graf-after--p">Here’s how I see the format:</p><figure name="c745" id="c745" class="graf graf--figure graf-after--p"><div class="aspectRatioPlaceholder is-locked" style="max-width: 700px; max-height: 470px;"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 67.10000000000001%;"></div><div class="progressiveMedia js-progressiveMedia graf-image" data-image-id="1*lwr2g0HvLOVr5IPVNoYxLg.png" data-width="1024" data-height="687" data-action="zoom" data-action-value="1*lwr2g0HvLOVr5IPVNoYxLg.png"><img src="https://cdn-images-1.medium.com/freeze/max/60/1*lwr2g0HvLOVr5IPVNoYxLg.png?q=20" crossorigin="anonymous" class="progressiveMedia-thumbnail js-progressiveMedia-thumbnail"><canvas class="progressiveMedia-canvas js-progressiveMedia-canvas"></canvas><img class="progressiveMedia-image js-progressiveMedia-image" data-src="https://cdn-images-1.medium.com/max/1600/1*lwr2g0HvLOVr5IPVNoYxLg.png"><noscript class="js-progressiveMedia-inner"><img class="progressiveMedia-noscript js-progressiveMedia-inner" src="https://cdn-images-1.medium.com/max/1600/1*lwr2g0HvLOVr5IPVNoYxLg.png"></noscript></div></div><figcaption class="imageCaption">Assumptions and disconnect between their persona and action</figcaption></figure><p name="6641" id="6641" class="graf graf--p graf-after--figure">The first problem is that we start with a <em class="markup--em markup--p-em">Persona, </em>which is a <a href="http://alanklement.blogspot.com/2013/03/focus-on-relationships-skip-personas.html" data-href="http://alanklement.blogspot.com/2013/03/focus-on-relationships-skip-personas.html" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank">very bad idea</a>, and then plop in an action which we <strong class="markup--strong markup--p-strong">think </strong>should be taken in order to achieve the expected outcome. As I’ve marked in the above image, there’s really a disconnect between the action and persona.<br>Here, let’s look at some existing User Stories:</p><figure name="3b60" id="3b60" class="graf graf--figure graf-after--p"><div class="aspectRatioPlaceholder is-locked" style="max-width: 461px; max-height: 358px;"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 77.7%;"></div><div class="progressiveMedia js-progressiveMedia graf-image" data-image-id="1*AKw3nKW5wo3j1WvepFgOLg.jpeg" data-width="461" data-height="358"><img src="https://cdn-images-1.medium.com/freeze/max/60/1*AKw3nKW5wo3j1WvepFgOLg.jpeg?q=20" crossorigin="anonymous" class="progressiveMedia-thumbnail js-progressiveMedia-thumbnail"><canvas class="progressiveMedia-canvas js-progressiveMedia-canvas"></canvas><img class="progressiveMedia-image js-progressiveMedia-image" data-src="https://cdn-images-1.medium.com/max/1600/1*AKw3nKW5wo3j1WvepFgOLg.jpeg"><noscript class="js-progressiveMedia-inner"><img class="progressiveMedia-noscript js-progressiveMedia-inner" src="https://cdn-images-1.medium.com/max/1600/1*AKw3nKW5wo3j1WvepFgOLg.jpeg"></noscript></div></div><figcaption class="imageCaption">An example of how to write User Stories</figcaption></figure><p name="eacd" id="eacd" class="graf graf--p graf-after--figure">In the above chart, when someone reads <em class="markup--em markup--p-em">moderator </em>or <em class="markup--em markup--p-em">estimator </em>is that really adding anything? If anything it’s adding ambiguity to the flow. You and I are going to attach our own interpretation of what a moderator is or why they are in these particular contexts.</p><p name="6698" id="6698" class="graf graf--p graf-after--p">Here, try this. Chop off the whole <em class="markup--em markup--p-em">As a / an </em>segment and see if you’re really losing anything. Compare these two:</p><p name="ffcc" id="ffcc" class="graf graf--p graf-after--p"><em class="markup--em markup--p-em">As a moderator I want to create a new game by entering a name and an optional description</em></p><p name="f6ec" id="f6ec" class="graf graf--p graf-after--p"><em class="markup--em markup--p-em">VS.</em></p><p name="da14" id="da14" class="graf graf--p graf-after--p"><em class="markup--em markup--p-em">I want to create a new game by entering a name and an optional description</em></p><p name="024f" id="024f" class="graf graf--p graf-after--p">Did the sky fall?</p>
  7. <h4 name="e620" id="e620" class="graf graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">The Job Story : All About Context and Causality</strong></h4><figure name="9053" id="9053" class="graf graf--figure graf-after--h4"><div class="aspectRatioPlaceholder is-locked" style="max-width: 700px; max-height: 280px;"><div class="aspectRatioPlaceholder-fill" style="padding-bottom: 40%;"></div><div class="progressiveMedia js-progressiveMedia graf-image" data-image-id="1*ua_egpJ6K1fCAQ_hY5UHAA.png" data-width="1024" data-height="410" data-action="zoom" data-action-value="1*ua_egpJ6K1fCAQ_hY5UHAA.png"><img src="https://cdn-images-1.medium.com/freeze/max/60/1*ua_egpJ6K1fCAQ_hY5UHAA.png?q=20" crossorigin="anonymous" class="progressiveMedia-thumbnail js-progressiveMedia-thumbnail"><canvas class="progressiveMedia-canvas js-progressiveMedia-canvas"></canvas><img class="progressiveMedia-image js-progressiveMedia-image" data-src="https://cdn-images-1.medium.com/max/1600/1*ua_egpJ6K1fCAQ_hY5UHAA.png"><noscript class="js-progressiveMedia-inner"><img class="progressiveMedia-noscript js-progressiveMedia-inner" src="https://cdn-images-1.medium.com/max/1600/1*ua_egpJ6K1fCAQ_hY5UHAA.png"></noscript></div></div><figcaption class="imageCaption">A Job Story format</figcaption></figure><p name="f996" id="f996" class="graf graf--p graf-after--figure"><em class="markup--em markup--p-em">Update: 2015–03–03: Based on even more usage &amp; feedback, I use a slightly different explanation now. </em><a href="https://twitter.com/danbar87/status/572751567285293056" data-href="https://twitter.com/danbar87/status/572751567285293056" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank"><em class="markup--em markup--p-em">See these tweets of how I suggest framing it now</em></a><em class="markup--em markup--p-em">. An update of this article will come in the future…</em></p><p name="3c14" id="3c14" class="graf graf--p graf-after--p">Check out the image above. <strong class="markup--strong markup--p-strong">Now we’re cookin’!</strong></p><p name="2a62" id="2a62" class="graf graf--p graf-after--p">All of the information above is critical and very informative because we’re focusing on causality. Each job story should provide as much context as possible and <strong class="markup--strong markup--p-strong">focus on motivation… </strong>instead of just implementation.</p><p name="92e4" id="92e4" class="graf graf--p graf-after--p"><em class="markup--em markup--p-em">[update June 4th 2014] After working with Job Stories for a while now, I’ve changed ‘Motivations’ to ‘Motivations and Forces’. Look to </em><a href="https://medium.com/the-job-to-be-done/5-tips-for-writing-a-job-story-7c9092911fc9" data-href="https://medium.com/the-job-to-be-done/5-tips-for-writing-a-job-story-7c9092911fc9" class="markup--anchor markup--p-anchor" target="_blank"><em class="markup--em markup--p-em">5 Tips For Writing A Job Story</em></a><em class="markup--em markup--p-em"> which touches on this. Also learn more about the forces via this </em><a href="http://jobstobedone.org/radio/unpacking-the-progress-making-forces-diagram/" data-href="http://jobstobedone.org/radio/unpacking-the-progress-making-forces-diagram/" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank"><em class="markup--em markup--p-em">podcast</em></a><em class="markup--em markup--p-em"> and this </em><a href="http://www.elezea.com/2013/11/progress-making-forces/" data-href="http://www.elezea.com/2013/11/progress-making-forces/" class="markup--anchor markup--p-anchor" rel="noopener" target="_blank"><em class="markup--em markup--p-em">short article</em></a><em class="markup--em markup--p-em">.</em></p><p name="c717" id="c717" class="graf graf--p graf-after--p graf--trailing">Let’s rewrite some examples from the user story chart above as a <em class="markup--em markup--p-em">Job Story </em>and add motivation and context to each one.</p></div></div></section><section name="a1c2" class="section section--body"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p name="cb26" id="cb26" class="graf graf--p graf--leading"><strong class="markup--strong markup--p-strong">User Story:</strong></p><p name="06c2" id="06c2" class="graf graf--p graf-after--p">As a moderator, I want to create a new game by entering a name and an optional description, so that I can start inviting estimators.</p><p name="82de" id="82de" class="graf graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Job Story:</strong></p><p name="53e2" id="53e2" class="graf graf--p graf-after--p graf--trailing">When I’m ready to have estimators bid on my game, I want to create a game in a format estimators can understand, so that the estimators can find my game and know what they are about to bid on.</p></div></div></section><section name="0633" class="section section--body"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p name="c2bc" id="c2bc" class="graf graf--p graf--leading"><strong class="markup--strong markup--p-strong">User Story:</strong></p><p name="46f2" id="46f2" class="graf graf--p graf-after--p">As an estimator, I want to see the item we’re estimating, so that I know what I’m giving an estimate for.</p><p name="2819" id="2819" class="graf graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Job Story:</strong></p><p name="d0fe" id="d0fe" class="graf graf--p graf-after--p graf--trailing">When I find an item I want to set an estimate for, I want to be able to see it, so that I can confirm that the item I’m estimating is actually the correct one.</p></div></div></section><section name="4c3c" class="section section--body section--last"><div class="section-divider"><hr class="section-divider"></div><div class="section-content"><div class="section-inner sectionLayout--insetColumn"><p name="4c1f" id="4c1f" class="graf graf--p graf--leading"><strong class="markup--strong markup--p-strong">User Story:</strong></p><p name="094e" id="094e" class="graf graf--p graf-after--p">As a moderator, I want to select an item to be estimated or re-estimated, the team sees the item and can estimate it.</p><p name="c387" id="c387" class="graf graf--p graf-after--p"><strong class="markup--strong markup--p-strong">Job Story:</strong></p><p name="6061" id="6061" class="graf graf--p graf-after--p">When an item does not have an estimate or has an estimate I’m not happy with, I want to be able to restart the estimation process and notify everyone, so that the team knows a particular item needs to be estimated upon.</p>
  8. <h4 name="66e1" id="66e1" class="graf graf--h4 graf-after--p">What About Multiple Roles &amp; Events?</h4><p name="815e" id="815e" class="graf graf--p graf-after--h4"><em class="markup--em markup--p-em">*Added July 28th 2014</em></p><p name="cfc6" id="cfc6" class="graf graf--p graf-after--p">As I get great feedback regarding Job Stories and as I continue to work with Job stories, I’ve found that sometimes it’s helpful to include Roles, or <a href="https://medium.com/down-the-rabbit-hole/replacing-personas-with-characters-aa72d3cf6c69" data-href="https://medium.com/down-the-rabbit-hole/replacing-personas-with-characters-aa72d3cf6c69" class="markup--anchor markup--p-anchor" target="_blank">Characters</a>, as part of the <strong class="markup--strong markup--p-strong"><em class="markup--em markup--p-em">When_ </em></strong>clause.</p>
  9. <h4 name="76f7" id="76f7" class="graf graf--h4 graf-after--p">Products With Multiple Roles</h4><p name="2104" id="2104" class="graf graf--p graf-after--h4">Roles / Characters are most helpful when the product has multiple roles, e.g. an IT product ( <em class="markup--em markup--p-em">Admin, Manager, Contributor….) </em>or in a marketplace product product ( <em class="markup--em markup--p-em">Buyer</em>, <em class="markup--em markup--p-em">Seller ). </em>The reason is just to clarify who we’re talking about.</p><p name="91e8" id="91e8" class="graf graf--p graf-after--p">Using eBay as an example:</p><blockquote name="e9d6" id="e9d6" class="graf graf--blockquote graf-after--p">When a Buyer has already made a bid on an item, they are anxious about missing a counter bid and want to immediately receive counter bid notifications, so they can have enough time to evaluate and update their own bid.</blockquote>
  10. <h4 name="d935" id="d935" class="graf graf--h4 graf-after--blockquote">Roles With Cause &amp; Effect</h4><p name="e498" id="e498" class="graf graf--p graf-after--h4">Sometimes, there are situations when a Job Story effects multiple roles at once — setting up a cause and effect scenario.</p><p name="c908" id="c908" class="graf graf--p graf-after--p">Using eBay, again, as an example:</p><blockquote name="d7e4" id="d7e4" class="graf graf--blockquote graf-after--p">When a Seller isn’t happy with the bids they are getting and takes their product off the market, Buyers who have already submitted bids, want to be immediately notified that the product has been pulled, so that Buyers know they no longer need to keep tabs on the product and should look for a different, similar product instead.</blockquote>
  11. <h4 name="d649" id="d649" class="graf graf--h4 graf-after--blockquote">Using Events Instead Of Roles</h4><p name="7161" id="7161" class="graf graf--p graf-after--h4">Sometimes, however, there might be a situation when an event effects all the roles or groups of roles: such as needing to get a password reminder. In this case there’s no reason to have a specific role, rather, try to keep it event based and general by using terms like <em class="markup--em markup--p-em">customer</em> or <em class="markup--em markup--p-em">someone (</em>but not <strong class="markup--strong markup--p-strong">user</strong><em class="markup--em markup--p-em">):</em></p><blockquote name="1918" id="1918" class="graf graf--blockquote graf-after--p">When a customer is on their mobile device and forgets their password, they want to get their password in a way that makes it easy to reclaim it via their mobile device, so they can continue to log in and access their news feed.</blockquote><p name="0254" id="0254" class="graf graf--p graf-after--blockquote">Why not <strong class="markup--strong markup--p-strong">user</strong>? <em class="markup--em markup--p-em">User</em> feels very lifeless and sterile, instead, <em class="markup--em markup--p-em">customer</em> reminds us that we have people who need to be served and respected.</p>
  12. <h4 name="d689" id="d689" class="graf graf--h4 graf-after--p"><strong class="markup--strong markup--h4-strong">Define Motivations, Don’t Define Implementation</strong></h4><p name="bb30" id="bb30" class="graf graf--p graf-after--h4"><em class="markup--em markup--p-em">Job Stories </em>are great because it makes you think about motivation and context and de-emphasizes adding any particular implementation. Often, because people are so focused on the <strong class="markup--strong markup--p-strong">who </strong>and <strong class="markup--strong markup--p-strong">how</strong>, they totally miss the <strong class="markup--strong markup--p-strong">why. </strong>When you start to understand the why, your mind is then open to think of creative and original ways to solve the problem.</p>