<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tyner Blain &#187; Software development</title>
	<atom:link href="http://tynerblain.com/blog/category/software-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Thu, 02 Sep 2010 21:53:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Foundation Series: Inside A Scrum Sprint</title>
		<link>http://tynerblain.com/blog/2010/08/24/inside-a-scrum-sprint/</link>
		<comments>http://tynerblain.com/blog/2010/08/24/inside-a-scrum-sprint/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 04:06:22 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Foundation series]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[user stories inside a scrum sprint]]></category>
		<category><![CDATA[user story]]></category>
		<category><![CDATA[user story life cycle]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1279</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F08%2F24%2Finside-a-scrum-sprint%2F", "shorturl": "http://bit.ly/aSWSqO", "style": "big", "title": "Foundation Series: Inside A Scrum Sprint" });

People who already use Scrum will only find one new thing in this article &#8211; a way to communicate what happens inside a sprint that has proven effective for me.  People who are new to Scrum who wonder &#8220;how do things work [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2010%252F08%252F24%252Finside-a-scrum-sprint%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FaSWSqO%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Foundation%20Series%3A%20Inside%20A%20Scrum%20Sprint%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F08%2F24%2Finside-a-scrum-sprint%2F", "shorturl": "http://bit.ly/aSWSqO", "style": "big", "title": "Foundation Series: Inside A Scrum Sprint" });</script></div>
<p><img class="alignnone" title="Scrum Classroom" src="http://sehlhorst.smugmug.com/photos/50445724-M.jpg" alt="Photo of students in a classroom, learning scrum" width="250" height="195" /></p>
<p>People who already use <a title="Scrum introduction" href="http://www.mountaingoatsoftware.com/topics/scrum">Scrum </a>will only find one new thing in this article &#8211; a way to communicate what happens <em>inside</em> a sprint that has proven effective for me.  People who are new to Scrum who wonder &#8220;<em>how do things work inside a sprint?&#8221;</em> will see how things work in a way that avoids hyperbole and is easy to map to what they already understand from traditional software development processes.</p>
<h2><span id="more-1279"></span>Two Teams Separated by a Common Process</h2>
<p><img class="alignnone" title="George Bernard Shaw" src="http://sehlhorst.smugmug.com/Other/blog/GBS-small/980999434_zHDRi-O.jpg" alt="" width="187" height="250" /></p>
<p>George Bernard Shaw was <a title="George Bernard Shaw" href="http://en.wikipedia.org/wiki/George_Bernard_Shaw">an Irish author in London </a>who memorably said &#8220;<em>England and America are two countries separated by a common language.</em>&#8221;  The same can be said about teams developing in agile and waterfall processes.</p>
<p>The story of agile adoption is one that has many colorful examples of adoption and of <em>spreading the gospel</em>.  Some practitioners traveled across the ocean from the agile continent to the lands of agile and opportunity to reap the rewards.  A few of those, after realizing the benefits of agile, invade our consciousness with a <em>hellfire and brimstone tale of doom</em> for anyone who doesn&#8217;t convert to the new religion.</p>
<p>Others seem hell-bent on kidnapping entire development teams, smuggling them across the ocean in the belly of steamer ships and unceremoniously dumping them in the land of agile, ready or not.  Scrum is but one branch of the agile movement.</p>
<p>Stalwarts of <em>the old way, which has worked fine </em>for me<em>, thank you very much</em>, refuse to leave their comfortable lives to step into the unknown wilds of agile.  Open-minded but responsible potential converts ask questions to gain an understanding of what life in the new world might be like.  <em>What will life be like if I join this Scrum congregation?</em></p>
<h2>How Does Scrum <em>Really</em> Work?</h2>
<p>The <a title="Scrum by MountainGoat Software" href="http://www.mountaingoatsoftware.com/topics/scrum">best explanations of how scrum works</a> that I&#8217;ve read come from <a title="Mike Cohn" href="http://www.mountaingoatsoftware.com/company/about-mike-cohn">Mike Cohn</a> and <a title="Mountain Goat Software" href="http://www.mountaingoatsoftware.com/">Mountain Goat Software</a>.  The training, videos, and explanations they share provide fantastic top-down introductions (as well as guidance after adopting Scrum).  His book, <em><a title="User Stories Applied" href="http://www.amazon.com/dp/0321205685?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0321205685&amp;creative=373489&amp;camp=211189">User Stories Applied</a></em>, is the ultimate reference when gaining an understanding of the mechanics of using user stories as the central artifacts for developing software with scrum.</p>
<p><img class="alignnone" title="Scrum process, from Mountain Goat Software" src="http://sehlhorst.smugmug.com/Other/blog/ScrumSmallLabelled/981015853_PJtuQ-O.png" alt="" width="399" height="188" /> [<a title="Scrum Process from Mountain Goat Software" href="http://sehlhorst.smugmug.com/Other/blog/ScrumLargeLabelled/981015855_M3hzW-O.png">larger image</a>]</p>
<p>The process diagram above provides a good outside-in, top-down view of how &#8220;this newfangled process&#8221; results in shippable product, incrementally.  It is a great way to present the concept of Scrum, and incremental development in general.</p>
<p>When people I&#8217;ve worked with first gain this understanding, they often ask, what are the artifacts that live in these backlogs?  User stories live there.  Sometimes <a title="Use Cases vs User Stories" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">use cases make more sense than user stories for Scrum</a>- it depends (read the article to see which works best in your circumstance).  The common element is an <a title="Outside-In Software Development" href="http://tynerblain.com/blog/2007/09/27/outside-in/">outside-in</a>, <a title="User Centered Design" href="http://tynerblain.com/blog/2007/02/22/user-centered-design-bridge/">user-centric approach</a> to describing <em>which problems the software is intended to solve</em>.  This is also known as <a title="Goal Driven vs. Feature Driven development" href="http://tynerblain.com/blog/2006/08/09/features-or-goals/">goal-driven development</a>.</p>
<p>Once people understand the top-down view of the process, and have an idea of what user stories are, the next question they tend to ask is &#8220;how do stories move through the Scrum process?&#8221;</p>
<p>The first attempt at answering this question leans on the process diagram above:</p>
<ol>
<li>The product owner takes the most important stories from the <em>product backlog</em> and puts them into the <em>sprint backlog</em> &#8211; collaborating with the team to agree on the scope of work for <em>this</em> sprint (based on the amount of work, capacity of the team, real-world constraints, etc).</li>
<li>The team &#8220;<strong>works the stories</strong>&#8220;, meeting every day to communicate effectively and provide progress updates &#8211; best visualized with <a title="modified burndown chart" href="http://www.mountaingoatsoftware.com/scrum/alt-releaseburndown">a burndown chart</a>.  This chart says &#8220;we started with X work to do, and every day, we track how much of X remains to be done.&#8221;</li>
<li>At the end of the sprint, the work is done, and the software (or an update to the software) is ready to deliver.</li>
<li>Sometimes, multiple sprints happen between <em>releases</em> &#8211; launches of the updated software, because customers (and the rest of your organization) incur a cost when changing to the latest version.  But the output of each sprint <em>is deliverable</em> &#8211; that&#8217;s a key concept &#8211; even if you choose not to deliver it just yet.</li>
</ol>
<h2>What Does it Mean to <em>Work The Stories</em>?</h2>
<p>I&#8217;ve repeatedly had people ask, after absorbing the above explanation, &#8220;what does it mean to <em>work the stories</em>?&#8221;</p>
<p>I&#8217;ve had consistent success (in bridging the language divide) using the following diagrams (drawn on a whiteboard) to explain how stories flow through the sprint process in Scrum.</p>
<p>The first diagram shows that user stories have a structure &#8211; the story itself, and the acceptance criteria for the story. I also establish that the story is going to go through a life cycle within the sprint.</p>
<p><img class="alignnone" title="User Stories have structure and a lifecycle" src="http://sehlhorst.smugmug.com/Other/blog/201008242b/981774852_PbBwD-O.png" alt="" width="450" height="320" /> [<a title="anatomy of a user story inside a sprint" href="http://sehlhorst.smugmug.com/Other/blog/201008242/981808359_QsSxE-O.png">larger image</a>]</p>
<p>Next I remind folks that the user stories make it into the sprint backlog because they are the most important (highest priority) not-yet-implemented stories in the product backlog.</p>
<p><img class="alignnone" title="user stories in a sprint backlog" src="http://sehlhorst.smugmug.com/Other/blog/201008243b/981774888_7nARd-O.png" alt="" width="450" height="320" />[<a title="user stories in the sprint backlog come from the top of the product backlog" href="http://sehlhorst.smugmug.com/Other/blog/201008243/981808388_aWcsJ-O.png">larger image</a>]</p>
<p>Developers on the team <em>pull</em> stories from the sprint backlog and begin working on them.  These stories are <em>work in progress</em>, and are owned by individuals.  Some teams maintain that priority order within the sprint backlog (e.g. implement the most important story in the sprint first, etc.), while other teams use a more coarse-grained approach, relying on the product backlog prioritization to assure that everything in <em>this</em> sprint is the next most important stuff, and the order that the team implements, within the sprint, is up to the team.  Some folks like to strenuously debate this decision (<a title="Don't prioritize within sprints" href="http://agile.dzone.com/articles/scrum-anti-pattern">don&#8217;t prioritize within sprints</a> vs. <a title="Do prioritize within sprints" href="http://availagility.co.uk/2010/01/20/scrum-anti-pattern-not-prioritising-stories-within-sprints/">do prioritize within sprints</a>).  Both approaches are valid, and you should choose the right one for <em>your </em>team.</p>
<p><img class="alignnone" title="individuals pull stories from the backlog" src="http://sehlhorst.smugmug.com/Other/blog/201008244b/981774926_aBAn7-O.png" alt="" width="450" height="320" />[<a title="individuals pull stories from the backlog inside the sprint" href="http://sehlhorst.smugmug.com/Other/blog/201008244/981808413_QhD53-O.png">larger image</a>]</p>
<p>As each user story owner believes that her work is complete (all unit tests pass, and the developer believes that the acceptance criteria have been met), the story is ready to be tested by QA.  This step, in particular, helps people who are new to scrum and who think of things as &#8220;code and test&#8221;, to make some sense of the inner workings of a sprint.  When working with a team that was under-staffed in the QA department, I discovered that calling out this queue of user stories waiting to be tested helped convince management to increase QA investment in the team.  When too many stories pile up here, you know you have a problem.</p>
<p><img class="alignnone" title="completed user stories are queued up for QA" src="http://sehlhorst.smugmug.com/Other/blog/201008245b/981774942_xRKCT-O.png" alt="" width="450" height="320" />[<a title="user stories are queued for qa inside a sprint" href="http://sehlhorst.smugmug.com/Other/blog/201008245/981808440_kRCjz-O.png">larger image</a>]</p>
<p>The scrum team member responsible for testing the user story has the responsibility of assuring that it meets all of the acceptance criteria.  He pulls the story from the queue of &#8220;done&#8221; stories, and tests.</p>
<p><img class="alignnone" title="testing a user story within a sprint" src="http://sehlhorst.smugmug.com/Other/blog/201008246b/981774960_LBRof-O.png" alt="" width="450" height="320" />[<a title="qa rejecting a user story inside a sprint" href="http://sehlhorst.smugmug.com/Other/blog/201008246/981808480_22dSS-O.png">larger image</a>]</p>
<p>If the story fails to meet any of the acceptance criteria, it moves back into either the <em>sprint backlog</em> or the <em>being developed</em> column, where a member of the team resumes ownership of the user story and works to resolve the issue.  Once the issue is resolved, the user story is re-queued for testing.  When the user story meets the acceptance criteria, it is moved into the <em>done done</em> column.</p>
<p><img class="alignnone" title="user stories that are done done" src="http://sehlhorst.smugmug.com/Other/blog/201008247b/981774980_e85hf-O.png" alt="" width="450" height="320" />[<a title="lifecycle of a user story in a scrum sprint" href="http://sehlhorst.smugmug.com/Other/blog/201008247/981808535_CeNJf-O.png">larger image</a>]</p>
<h2>Conclusion</h2>
<p>If you are new to Scrum, and wondered how the sausage is made inside a sprint, this gives you a framework for understanding what is going on, and how the team delivers.  If you already know or use Scrum, you may have learned a couple things.</p>
<ul>
<li>Using this framework to describe how a sprint works is effective when explaining to people who do not have any experience with agile.</li>
<li>Laying things out this way visually, will give you an easy-to-see signal if your team is unbalanced between developers and testers.</li>
</ul>
<p>I&#8217;ve been involved with agile teams and processes for just over 11 years now, and incremental development is burned into my brain.  If you are new to scrum, <em>please</em> let me know if this seemed like a good way for you to consume this material.  If you&#8217;re an old hat, and have other suggestions or presentations, please add them in the comments below, because future readers will benefit from the additional ideas.</p>
<p> </p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Foundation+Series%3A+Inside+A+Scrum+Sprint+http://bit.ly/aUIIRm+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/08/24/inside-a-scrum-sprint/&amp;t=Foundation+Series%3A+Inside+A+Scrum+Sprint" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/08/24/inside-a-scrum-sprint/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>The One Idea of Your Product</title>
		<link>http://tynerblain.com/blog/2010/04/14/one-idea-product-management/</link>
		<comments>http://tynerblain.com/blog/2010/04/14/one-idea-product-management/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 14:32:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Kano Analysis]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[minimum market acceptance]]></category>
		<category><![CDATA[product idea]]></category>
		<category><![CDATA[product manager]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1210</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F04%2F14%2Fone-idea-product-management%2F", "shorturl": "http://bit.ly/aLKAJK", "style": "big", "title": "The One Idea of Your Product" });

&#8220;For what one idea do you want your product to stand in the mind of your customer?&#8221;  I heard Roger Cauvin ask that question at the most recent ProductCamp Austin [correction - he said it here - thanks Roger], and the [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2010%252F04%252F14%252Fone-idea-product-management%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FaLKAJK%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22The%20One%20Idea%20of%20Your%20Product%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F04%2F14%2Fone-idea-product-management%2F", "shorturl": "http://bit.ly/aLKAJK", "style": "big", "title": "The One Idea of Your Product" });</script></div>
<p><img class="alignnone" title="blue light bulb" src="http://sehlhorst.smugmug.com/Other/blog/blue-light-bulb/836410544_9wRHz-O.jpg" alt="a blue light bulb, a visual metaphor for having a single idea" width="250" height="187" /></p>
<p>&#8220;For what <em>one idea</em> do you want your product to stand in the mind of your customer?&#8221;  I heard <a title="Roger Cauvin's blog" href="http://blog.cauvin.org/">Roger Cauvin</a> ask that question at the most recent <a title="pcaustin 2010" href="http://tynerblain.com/blog/2010/03/25/paustin-spring-2010/">ProductCamp Austin</a> [correction - he said it <a title="Writing Consistent Requirements" href="http://tynerblain.com/blog/2010/04/06/consistent-requirements/">here</a> - thanks Roger], and the quote has been jumping to the front of my mind almost daily ever since.  Maybe by writing about it I can exorcise the demon and get back to <em>using</em> the idea instead of being haunted by it.</p>
<p><span id="more-1210"></span></p>
<h2>The One Idea</h2>
<p>You&#8217;ve just been given a new assignment &#8211; your company needs a new software <em>thingamajig </em>so that you can play in the <em>whatchamacallit</em> space, and you&#8217;re going to drive product management for it.  You&#8217;ve also been asked to deliver the first version in six weeks.  Of course you&#8217;ll be able to do follow-on releases, after all, you are agile.  That&#8217;s how &#8220;agile&#8221; works, isn&#8217;t it?</p>
<p>Cool.  Exciting.  Challenging.</p>
<p>You sit down with the folks who will be building the product, and find out that they have already spoken with several stakeholders.  Excellent. You circle back with the stakeholders, and start to gather data about your market and audience.</p>
<p>Your schedule is aggressive, so you think about what is realistic to get done in <a title="How to use timeboxes for scheduling software delivery" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">a very small timebox</a>.  With the current schedule, you can&#8217;t afford to get <a title="Avoiding Analysis Paralysis" href="http://tynerblain.com/blog/2007/08/30/analysis-paralysis/">caught in analysis paralysis</a>, and you can&#8217;t realistically do in depth market analysis, persona development, hyper-accurate requirements prioritization, etc.  You do, however, have time to do the most important thing &#8211; define the <em>one idea that will define your product</em>.</p>
<p><strong>If you cannot come up with this idea, you need to push back on your management team, and delay the launch of your product until you have that one idea.</strong></p>
<h2>Don&#8217;t Abuse Agile</h2>
<p>Agile is designed to help you rapidly create iteratively <em>better</em> products, with iterative development and <a title="Market Driven Competitive Advantage" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">continuous infusion of market feedback</a> and data.  Agile <strong><em>is not</em></strong> a process by which you start typing without any idea of what you intend, releasing it and <em>then</em> getting feedback in an iterative process.  If that&#8217;s how you&#8217;re approaching agile, your process is broken.</p>
<p><img class="alignnone" title="innovation" src="http://www.smugmug.com/photos/359586997_xXG83-L.gif" alt="" width="416" height="378" />[image from <a title="Market Driven Competitive Advantage" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">Market Driven Competitive Advantage</a>]</p>
<p>Unless you&#8217;re very lucky, your first iteration will be a waste of time and money.  Wouldn&#8217;t you rather <a title="successful products are intentional" href="http://tynerblain.com/blog/2008/05/19/successful-products/">be intentional</a> than lucky? Make sure you have that <em>one idea</em> before you start developing.</p>
<h2>Strategic Alignment</h2>
<p>You need to come up with a <em>one idea</em> that is aligned with and supports your corporate strategy.  At a minimum, you have to make sure that you have an idea that is aligned with <a title="managing stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">your stakeholder&#8217;s goals</a>, based on the assumption that those goals are aligned with corporate strategy.</p>
<h2>Wow</h2>
<p>Your <em>one idea</em> really needs to make your users say &#8220;Wow!&#8221;</p>
<p><img class="alignnone" title="fishhook" src="http://sehlhorst.smugmug.com/Other/blog/hook/836460644_8eTUg-O.jpg" alt="fishhook" width="166" height="250" /></p>
<p>I was explaining the importance of this to a colleague (who is not a product manager), and his response was &#8220;Oh, you mean <em><strong>the hook</strong></em>.&#8221;</p>
<p>I was reminded that you not only have to provide a <em>wow</em> experience for your users, but you have to present a <em>hook</em> that will capture the imagination of your buyers.  Remember that <a title="buyer personas and user personas" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">buyer personas make decisions based on their <em>perceptions </em>of user problems</a> [<a title="Selling to Your Buyer" href="http://www.stickyminds.com/processimprovement.asp?Function=edetail&amp;ObjectType=ART&amp;ObjectId=15906&amp;tth=DYN&amp;tt=siteemail&amp;iDyn=13">more on convincing buyers</a>].</p>
<h2>Satisfice</h2>
<p>Remember that you don&#8217;t want to try and do everything perfectly in the first release &#8211; <a title="Satisficing" href="http://tynerblain.com/blog/2008/11/12/satisficing-sprints/">you want to satisfice</a>.  You may only be able to target a <em>single </em>persona with a solution to a <em>single </em>problem.  You just need to make sure you are solving the <em>right</em> problem &#8211; which is where Kano analysis is very handy for identifying the <em><a title="minimum market acceptance" href="http://tynerblain.com/blog/2010/03/31/minimum-market-acceptance/">Minimum Market Acceptance</a></em> criteria.</p>
<p><img class="alignnone" title="kano analysis focus on personas" src="http://sehlhorst.smugmug.com/Other/blog/kano-personas/824597829_9M8zS-S.png" alt="" width="400" height="296" /> [From <a title="Minimum Market Acceptance" href="http://tynerblain.com/blog/2010/03/31/minimum-market-acceptance/">Minimum Market Acceptance</a>]</p>
<h2>Conclusion: A Balancing Act</h2>
<p>Defining the <em>one idea</em> for your product is a balancing act.</p>
<ul>
<li>You have to align the <em>one idea</em> with your corporate strategy and stakeholder goals</li>
<li>You have to solve a <em>valuable</em> problem for your users, presented in a way that captivates your buyers</li>
<li>You have to create a product that is <em>compelling</em> right away &#8211; good <em>enough</em> in execution to enter your market</li>
<li>And you have to get the first release out in six weeks!</li>
</ul>
<p>Good luck!  Or better yet &#8211; Good Intent!</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+The+One+Idea+of+Your+Product+http://bit.ly/dcKIY5+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/04/14/one-idea-product-management/&amp;t=The+One+Idea+of+Your+Product" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/04/14/one-idea-product-management/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Measuring Great Design &#8211; Mad Libs Input Form</title>
		<link>http://tynerblain.com/blog/2010/03/01/measuring-interaction-design/</link>
		<comments>http://tynerblain.com/blog/2010/03/01/measuring-interaction-design/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 05:20:02 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Interaction design]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[measuring ux]]></category>
		<category><![CDATA[return on investment]]></category>
		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1174</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F03%2F01%2Fmeasuring-interaction-design%2F", "style": "big", "title": "Measuring Great Design - Mad Libs Input Form" });

I came across a really interesting article LukeW.com, showing how making changes to the way an input form on a website increased interaction by 25 to 40%.  The changes reflect the value of thinking outside-in, investing in user experience, and [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2010%252F03%252F01%252Fmeasuring-interaction-design%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Measuring%20Great%20Design%20-%20Mad%20Libs%20Input%20Form%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F03%2F01%2Fmeasuring-interaction-design%2F", "style": "big", "title": "Measuring Great Design - Mad Libs Input Form" });</script></div>
<p><img class="alignnone" title="mad libs pads" src="http://sehlhorst.smugmug.com/Other/blog/mad-libs-on-table/800579804_irVsp-O.jpg" alt="image of mad libs pads" width="250" height="187" /></p>
<p>I came across a really interesting article <a title="LukeW" href="http://www.lukew.com/">LukeW.com</a>, showing how making changes to the way an input form on a website increased interaction by 25 to 40%.  The changes reflect the value of thinking outside-in, investing in user experience, and performance measurement.</p>
<p>Bonus: the idea is cool.</p>
<p><span id="more-1174"></span></p>
<h2>Mad Libs Input Form</h2>
<p><img class="alignnone" title="mad libs form example" src="http://sehlhorst.smugmug.com/Other/blog/mad-libs-small/800576580_TZurw-O.png" alt="before and after screenshot of mad libs input form redesign" width="250" height="237" />[<a title="luke's article on mad libs input form" href="http://www.lukew.com/ff/entry.asp?1007">full size image available in Luke's article</a>]</p>
<p>The idea being presented is to replace the old boring web input form designed for a computer.  The new, fun form is a fill-in-the-blank (aka Mad Libs) layout.  The <a title="mad libs web form" href="http://www.lukew.com/ff/entry.asp?1007">article </a>is on <a title="About Luke" href="http://www.lukew.com/about/index.asp">Luke Wroblewski&#8217;s</a> site.  The team at Vast.com created and tested a version of this form for the Kelly Blue Book site.  [Luke cites Huffduffer.com as the first place where he saw this technique.] Thanks, Luke for sharing this with all of us!</p>
<h2>Outside-In Development</h2>
<p>Product managers are acutely aware of the need to solve market problems.  We are regularly reminded that we&#8217;re creating solutions for people in our markets who use our products to solve their problems. When we write requirements, we avoid writing design specifications, and thereby lose the ability to enforce that the proposed solutions also take an outside-in approach.  We <a title="prioritization example from an outside-in perspective" href="http://tynerblain.com/blog/2009/10/19/agile-prioritization/">maintain an outside-in perspective</a>, but we lost the ability to influence an outside-in aesthetic.</p>
<p>Note: Outside-In Software Development is a great book, <a title="outside-in software development book review" href="http://tynerblain.com/blog/2007/09/27/outside-in/">you should read it</a>.</p>
<p>That&#8217;s one area where user experience works well in concert with product management &#8211; assuring that the same drivers of <em>what</em> to build are informing the design of <em>how</em> it is built.</p>
<p>The genius (or at least elegance) of this Mad Libs form from Vast  / Kelly Blue Book is that it humanizes the experience of requesting that a nearby dealer contact you to discuss a possible purchase of a car from them.  The forms we&#8217;ve all had to fill out on countless web sites are very <em>inside-out</em>.  They expose the inner workings of the program &#8211; &#8220;gather this info, and that info, and this other info.&#8221;  Those forms force users to do what the program wants.  Blech.  The form that Ron Kurti designed, however, forces the program to do what the users want.  Huzzah!</p>
<h2>Bad Requirements Prevent Elegance</h2>
<p>I&#8217;ve written about the importance of <a title="writing requirements without design" href="http://tynerblain.com/blog/2009/11/03/design-free-requirements/">writing design-free requirements</a> several times.  Avoiding design constraints in your requirements is even one of the pillars of the <a title="twelve rules of writing good requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">big 10 rules of writing requirements</a>.</p>
<p>If you had written the requirements for this <em>contact the dealer</em> page, would you have specified the design of the form?</p>
<p>Most of the requirements analysts I&#8217;ve worked with would have.  I&#8217;ve even worked with companies that have developed templates / stencils defining <em>how</em> these interface specifications must be documented &#8211; requiring that all the fields be aligned, with specific pixel gaps, etc.</p>
<p>If you had specified the design (read: limited the choices of the designer), you would have prevented this solution.</p>
<p>Mr. Kurti&#8217;s elegant solution is clearly better.</p>
<p>One way to write the requirements that would not have prevented this solution would be with a <a title="user stories compared to use cases" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">user story and acceptance criteria</a>:</p>
<blockquote><p>As a car-shopper, I want to engage a car dealer, once every few years, so that I can purchase the car I selected.</p>
<ul>
<li>The car-shopper can provide his contact info (name, email, phone) for the car dealer.</li>
<li>The system will display the information identifying the selected vehicle.</li>
<li>The system will display the information identifying the dealer being contacted.</li>
<li>The system will include an opt-in newsletter-subscription option.</li>
<li>The system will notify the specified dealer when the car-shopper indicates.</li>
</ul>
</blockquote>
<p>The user story nudges the developers into an outside-in perspective by emphasizing the <a title="user goals vs corporate goals" href="http://tynerblain.com/blog/2009/06/22/user-goals-and-corporate-goals/">user&#8217;s goal</a>.  The <a title="acceptance criteria can be testable, non-functional requirements" href="http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/">acceptance criteria</a> make it clear that <em>any</em> solution that meets those criteria is acceptable to the product manager.  It allows the interaction designer to create a compelling solution, rather than forcing him to recreate a boring experience.</p>
<h2>Measurement Rocks</h2>
<p>The Vast team measured the impact of making this change to their form, and saw between a 25% and 40% increase in conversion (people contacting dealers versus people abandoning the process when they see the form).  That&#8217;s <strong>a</strong> <em><strong>lot</strong></em><strong> more leads</strong> for the dealers, and presumably a lot more money for Kelly Blue Book and Vast.  This is a great example of how you can <a title="measuring the ROI of design" href="http://tynerblain.com/blog/2007/07/30/measuring-the-roi-of-design/">measure the impact of investing in user experience</a>, because it should spark ideas for you.</p>
<p><strong>What can you measure and test and improve?</strong></p>
<p><strong><span style="font-weight: normal;">Now <em>that&#8217;s </em><a title="definition of return on investment" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a> for you.</span></strong></p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Measuring+Great+Design+%E2%80%93+Mad+Libs+Input+Form+http://bit.ly/9nBLX9+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/03/01/measuring-interaction-design/&amp;t=Measuring+Great+Design+%E2%80%93+Mad+Libs+Input+Form" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/03/01/measuring-interaction-design/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Most Engaging Articles of 2009</title>
		<link>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/</link>
		<comments>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 07:00:18 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Administrivia]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[top ten list]]></category>
		<category><![CDATA[tyner blain]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1161</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F01%2F05%2Fmost-engaging-articles-of-2009%2F", "style": "big", "title": "Most Engaging Articles of 2009" });

Engagement &#8211; that&#8217;s what this whole product management blogging thing is about.  Check out what Tyner Blain readers found to be the most engaging articles in 2009.
Deep Dives

If you&#8217;re new to Tyner Blain, you may be surprised by the length of the articles here. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2010%252F01%252F05%252Fmost-engaging-articles-of-2009%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Most%20Engaging%20Articles%20of%202009%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F01%2F05%2Fmost-engaging-articles-of-2009%2F", "style": "big", "title": "Most Engaging Articles of 2009" });</script></div>
<p><img class="alignnone" title="engagement" src="http://sehlhorst.smugmug.com/Other/blog/engagement-ring/757754045_4RPCx-O.jpg" alt="" width="250" height="190" /></p>
<p>Engagement &#8211; that&#8217;s what this whole product management blogging thing is about.  Check out what Tyner Blain readers found to be the most engaging articles in 2009.</p>
<h2><span id="more-1161"></span>Deep Dives</h2>
<p><img class="alignnone" title="diving deep" src="http://sehlhorst.smugmug.com/Other/blog/diving/757757107_gNAMt-O.jpg" alt="" width="250" height="187" /></p>
<p>If you&#8217;re new to Tyner Blain, you may be surprised by the length of the articles here.  I joke that they are long because I don&#8217;t have time to edit.  <a title="Stewart on Twitter" href="http://twitter.com/stewartrogers">Stewart Rogers</a> jokes that they are long because I&#8217;m incapable of writing a short article.  If you&#8217;ve been here a while, you know what you&#8217;re in for.  If you&#8217;ve been here a <em>long</em> while, then you&#8217;re glad (like me) that I don&#8217;t write one per day any more.</p>
<p>Product Management is simultaneously a broad and deep discipline, requiring us to have a breadth of perspective combined with a depth of insight.  We then have to apply that in a market context, effectively navigating the political waters of our organizations.  Most of the articles here either try to skim the breadth of a range of related topics, or plumb the depths of a single topic.  Doing that in under a thousand words is pretty hard.  Most of the articles here also link to other articles, to try and provide even more depth and context, and encourage additional critical thinking.</p>
<p>One measure of the<em> quality</em> of the articles here is how often they stimulate readers to read further, or dive deeper into the topics.  While web analytics won&#8217;t allow us to measure how thought-provoking an article is, we can look to see how many people dive into the linked articles, versus how many people move on to something else.  We can measure the <em>bounce rate</em> of an article to see how often people leave a page without following any of the &#8220;tell me more&#8221; links.</p>
<p>Looking at ~170,000 page views at Tyner Blain in 2009, narrowed down to only those articles with at least 100 page views, here is the top-ten list of most engaging (or &#8220;least abandoned&#8221; if you&#8217;re a &#8220;cup is half empty&#8221; person) articles:</p>
<ol>
<li><a title="Introduction to a series of articles on use cases" href="http://tynerblain.com/blog/2005/12/18/use-case-series-introduction/">Use Case Series: Introduction</a>: A collection of articles on the &#8220;traditional&#8221; forms of use cases &#8211; informal, formal, UML.</li>
<li><a title="agile development of use cases" href="http://tynerblain.com/blog/2007/04/02/agile-development-of-use-cases/">Agile Development of Use Cases</a>: A dive into the dynamics and cadence of an agile process for developing use cases.</li>
<li><a title="Managing Market Data" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/">How Do </a><em><a title="Managing Market Data" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/">You</a></em><a title="Managing Market Data" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/"> Manage Market Data?</a>: A collection of articles exploring different market-immersion techniques in depth.</li>
<li><a title="Scheduling Requirements Changes" href="http://tynerblain.com/blog/2006/04/11/scheduling-requirements-changes-part-2/">Scheduling Requirements Changes &#8211; Part 2</a>: A focus on practical techniques for managing change with an agile development process.</li>
<li><a title="BPMN Mea Culpa" href="http://tynerblain.com/blog/2006/08/22/yesterdays-bpmn-post-was-a-big-fat-lie/">Yesterday&#8217;s BPMN Post Was A Big Fat Lie</a>: A mea culpa and clarification of interest to folks following the <a title="Introduction to BPMN" href="http://tynerblain.com/blog/2006/07/18/foundation-series-business-process-modeling/">BPMN</a> Series.</li>
<li><a title="why ask why?" href="http://tynerblain.com/blog/2005/12/13/everything-i-needed-to-know-i-forgot-in-kindergarden/">Everything I Needed To Know I Forgot in Kindergarten</a>: Why asking <em>why?</em> is important.</li>
<li><a title="Plan Your Sprint by ROI" href="http://tynerblain.com/blog/2008/10/16/planning-sprints-by-roi/">Plan Your Next Sprint by ROI &#8211; Part 1</a>: Prioritizing by <em>Bang for the Buck</em>, not just <em>Bang</em>.</li>
<li><a title="10 Agile Mistakes" href="http://tynerblain.com/blog/2007/01/03/going-agile-ten-common-mistakes/">Ten Common Mistakes of Going Agile</a>: A collection of articles about common pitfalls encountered when adopting agile practices.</li>
<li><a title="Never Completing a Project" href="http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/">Perpetually </a><em><a title="Never Completing a Project" href="http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/">Almost</a></em><a title="Never Completing a Project" href="http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/"> Finished Projects</a>: Organizing a project with discrete deliverables and rolling-wave planning to avoid the &#8220;90% done, 90% remaining&#8221; problem.</li>
<li><a title="Timeboxes are better than the Iron Triangle" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">How To Use Timeboxes for Scheduling Software Delivery</a>: One of my personal favorites.  A rational approach to making trade-offs when your &#8220;perfect&#8221; plan has to change.</li>
</ol>
<p>OK Stewart, that&#8217;s only 519 words.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Most+Engaging+Articles+of+2009+http://bit.ly/6vlxog+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/&amp;t=Most+Engaging+Articles+of+2009" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Design-Free Requirements</title>
		<link>http://tynerblain.com/blog/2009/11/03/design-free-requirements/</link>
		<comments>http://tynerblain.com/blog/2009/11/03/design-free-requirements/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 16:16:06 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Interaction design]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[big ten rules]]></category>
		<category><![CDATA[product management and design]]></category>
		<category><![CDATA[rules of requirements]]></category>
		<category><![CDATA[rules of writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1106</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F11%2F03%2Fdesign-free-requirements%2F", "style": "big", "title": "Design-Free Requirements" });

Design-Free requirements are important for two reasons, and hard for two other reasons.
Design-free requirements are hard because you &#8220;know what you want&#8221; when you should be documenting &#8220;why you want it.&#8221;  Writing design-free requirements can be hard when you don&#8217;t trust your development team to &#8220;do the [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F11%252F03%252Fdesign-free-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Design-Free%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F11%2F03%2Fdesign-free-requirements%2F", "style": "big", "title": "Design-Free Requirements" });</script></div>
<p><img class="alignnone" title="Design-Free Requirements Logo" src="http://sehlhorst.smugmug.com/photos/128628560-M.png" alt="" width="250" height="250" /></p>
<p>Design-Free requirements are important for two reasons, and hard for two other reasons.</p>
<p>Design-free requirements are hard because you &#8220;know what you want&#8221; when you should be documenting &#8220;why you want it.&#8221;  Writing design-free requirements can be hard when you don&#8217;t trust your development team to &#8220;do the right thing&#8221; even though it is not your job to design the solution.</p>
<h2><span id="more-1106"></span>Design-Free Requirements &#8211; Revisiting</h2>
<p><img class="alignnone" title="alphabet soup" src="http://sehlhorst.smugmug.com/photos/89784885-M.jpg" alt="" width="250" height="187" /></p>
<p>It has been three years since I wrote <em><a title="Separating Requirements from Design" href="http://tynerblain.com/blog/2006/06/02/writing-design-free-requirements/">Writing Design-Free Requirements</a></em> as part of <em><a title="The rules of writing requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">The Big Ten Rules of Writing Requirements</a></em>.  In that time, agile development practices have moved from being an esoteric development methodology to being the topic on the tips of everyone&#8217;s tongues as executives and organizations try to either (1) get the benefits of the state of the art in software-development process or (2) do something shiny and fashionable.</p>
<p>The previous article centered on elements of designs within MRD, PRD, and SRS artifacts.  A regular <a title="Alphabet Soup of Requirements Artifacts" href="http://tynerblain.com/blog/2006/08/24/alphabet-soup/">alphabet soup of artifacts</a>.  Honoring the <a title="agile manifesto - Alistair Cockburn speaks" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">values behind the agile manifesto</a> encourages us to emphasize <em>working software</em> over <em>comprehensive documentation</em>.  In that light, we&#8217;ll take a &#8220;what is needed&#8221; approach to talking about how requirements, design, and implementation are all needed &#8211; rather than issue an edict about where that information should be captured.</p>
<h2>Agile Development Inputs</h2>
<p><strong>When creating software, someone needs to know:</strong></p>
<ul>
<li>What <a title="solve problems, don't address problem manifestations" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">problems are being solved</a>, and how important (valuable) they are to be solved.</li>
<li><a title="defining personas" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">Who has the problems</a> and who is using the software to (help) solve those problems.</li>
<li><a title="defining constraints" href="http://tynerblain.com/blog/2007/11/08/abilene-paradox/">What constraints limit the space</a> that defines the universe of possible viable solutions.</li>
<li>What <a title="nonfunctional requirements and acceptance criteria in agile" href="http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/">acceptance criteria</a> define if the delivered solution will be acceptable.</li>
</ul>
<p><strong>Subject to those inputs, someone needs to make design decisions:</strong></p>
<ul>
<li>User experience design -<a title="user interaction design" href="http://tynerblain.com/blog/2006/03/07/interaction-design-explained-by-alan-cooper/"> what interactions</a> will a user of our solution love?</li>
<li>Program design &#8211; how (in a nuts and bolts way) will our solution <a title="feature-driven design explained" href="http://tynerblain.com/blog/2006/03/27/foundation-series-feature-driven-development-fdd-explained/">function</a>?</li>
</ul>
<p>When talking about agile and talking about design, we should take a look at how Kent Beck and Alan Cooper, as respective though leaders in each space, view this.</p>
<blockquote><p>Cooper doesn’t talk much about creating the requirements to support the daily use scenarios – he proposes moving directly into design of the solution. This differs from the more traditional technique of <a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="Use cases are supported with functional requirements" href="http://tynerblain.com/blog/2006/02/10/writing-functional-requirements-to-support-use-cases/">writing functional requirements to support use cases</a>. Cooper also breaks down design into two components – program design and interaction design. Program design is everything you don’t see. Interaction design is everything you do see.</p>
<p>[...]</p>
<p>Cooper argues that designing the interaction should happen before any code is written. He uses a construction analogy to drive home his perspective – you can’t pour the concrete before you build the forms. Kent Beck, founder of the XP programming philosophy disagrees with the premise. Beck believes that the cost of changing software is low, and the imagery Cooper uses is hyperbole. We touch on, and <a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="Cooper vs Beck" href="http://tynerblain.com/blog/2006/03/07/interaction-design-explained-by-alan-cooper/">link to that debate in this post</a>.</p>
<p><cite><a title="Overview of the interaction design process" href="http://tynerblain.com/blog/2006/03/21/interaction-design-process-overview/">Interaction Design Process Overview</a></cite></p></blockquote>
<p>I don&#8217;t believe that Beck is arguing for &#8220;don&#8217;t do design&#8221; &#8211; I believe he is arguing for &#8220;don&#8217;t do <em>big upfront design</em> that would delay implementation.&#8221;  He&#8217;s championing the agile values that emphasize creating working software and responding to change.  I can imagine him saying &#8220;no one will buy a design, they want a solution.&#8221;  Cooper&#8217;s point is that create a solution without first understanding how someone will use it, you can&#8217;t create a great product.</p>
<p>Program design has many <em>hidden</em> impacts &#8211; cost of maintenance, cost to change, and the performance of the solution.  You can have a design (or architecture) that makes everything easier to do in the future &#8211; at the cost of delaying the delivery of anything.  Or you can have a design that minimizes the time to deliver the first thing, while increasing the cost to deliver any particular next thing.  Or you can design a solution that falls somewhere between those extremes.</p>
<p>If you say &#8220;we don&#8217;t do design&#8221; you&#8217;re lying.  Every solution includes design.  Your team&#8217;s design process may be &#8220;big and upfront&#8221; or it could be a couple sketches on a whiteboard, or some email exchanges.  You may create storyboards and wireframes.  Or design may be the thing that happens right before the programmer&#8217;s fingers strike the keys.  Design may be explicit or it may be implicit &#8211; but it never &#8220;doesn&#8217;t happen.&#8221;</p>
<p>In the movie Amadeus, Salieri is astounded that there are no rough drafts of Mozart&#8217;s compositions.  That&#8217;s because Mozart did the design in his head, not because he didn&#8217;t do design.  I&#8217;ve worked with programmers who&#8217;s &#8220;implicit designs&#8221; were great, but that is the <em>exception</em>, not the rule.</p>
<h2>Who Owns Design?</h2>
<p>Since design happens <em>sometime before fingers strike the keyboard</em>, the real question is &#8211; &#8220;who owns the design?&#8221;</p>
<ul>
<li>You have a product manager developing an understanding of market problems, and prioritizing the problems that should be solved with your product.</li>
<li>You may have a product owner managing the backlog and clarifying those requirements (problems) for the development team.</li>
<li>You may have an interface (or interaction) designer or team of designers who are broadly responsible for &#8220;how users interact with our products.&#8221;</li>
<li>You may have an architect or lead engineer who is responsible for the &#8220;big picture design&#8221; of how your product works.</li>
<li>You have developers and testers who are responsible for delivering your product. [Note: coding without testing is like typing code without compiling - <em>maybe</em> it works, but probably not.]</li>
</ul>
<p>You may not have distinct individuals with each of these titles &#8211; every small team I&#8217;ve worked with has people wearing multiple hats.  This is especially true when you have an agile team full of <a title="specialized generalists and stagging an agile team" href="http://tynerblain.com/blog/2008/02/14/specializing-generalists/">specializing generalists</a> &#8211; any given story (or task) may have a different architect and different implementer.  I&#8217;ve only worked with one company where the architects are NOT part of the development team.  If your team is set up that way, please comment below &#8211; I had never seen that before, and I&#8217;m not convinced that it is the best way to organize &#8211; what have your experiences been?</p>
<p>Generally, &#8220;program design&#8221; is clearly owned by the development team &#8211; and product managers (and product owners) know better than to specify program design in their requirements.  Neither the lead engineer nor the product manager believes that the product manager is a <em>better</em> programmer &#8211; so the product manager better not be <a title="requirements versus design" href="http://tynerblain.com/blog/2006/02/11/requirements-vs-design-which-is-which-and-why/">specifying program design and mislabeling it as requirements</a>.  Coincidentally, Steve Johnson, at Pragmatic Marketing has a post running right now with a bit of a <a title="requirement or design?  a quiz" href="http://pragmaticmarketing.typepad.com/productmarketing/2009/11/lets-play-req-or-spec-duplicate-images.html">quiz &#8211; is this a req(uirment) or a spec (design)</a>?</p>
<p>Where the line is more blurred is around interface and/or interaction design.  Some development teams have interface designers as part of the team.  Some companies organize with interface design as a &#8220;shared service&#8221; within the company.  Either approach can be the &#8220;right one&#8221; &#8211; it depends on too many details to make a sweeping generalization.  When the designers are members of the development team, the solution (from a product management perspective) is the same &#8211; the &#8220;team&#8221; is responsible for all design.  When the designers are not part of the development team, the developers have to consume two sets of guidance &#8211; &#8220;solve this problem&#8221; from product management, and &#8220;the solution needs to look like / act like this&#8221; from the designers.</p>
<p><a title="ux and product management collaboration" href="http://tynerblain.com/blog/2007/03/05/product-management-and-ux/">Collaboration between product management and user experience</a> people is the ideal solution.  The &#8220;requirements&#8221; and &#8220;design&#8221; inputs to the development team are comprehensive and consistent.</p>
<h2>Design-Free Requirements</h2>
<p>There are benefits &#8211; especially when being agile and <em>minimizing</em> documentation &#8211; to delivering requirements and design <em>at the same time</em>.  Just don&#8217;t do it by embedding design constraints within the requirements.</p>
<ul>
<li>When people on your team misinterpret design as requirements, they are unnecessarily constrained.</li>
<li>As a product manager &#8211; are you the best designer on your team?  If you&#8217;re busy designing, who&#8217;s product managing?</li>
</ul>
<p>This is trickiest when writing use cases &#8211; sequencing a set of interactions <em>is</em> interaction design.  That is one benefit of<a title="user stories vs use cases" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/"> writing a user story instead of a use case</a>.  An approach that has worked well for me with multiple teams is to deliver user stories (requirements) combined with storyboards (interaction design) and wireframes (interface design).  When details are needed (usually when &#8220;changing&#8221; versus &#8220;creating&#8221; an interface), screenshots can replace wireframes.  When business processes are complicated, process flows can replace storyboards.</p>
<p>Just don&#8217;t embed the designs within the requirements.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Design-Free+Requirements+http://bit.ly/3BuFst+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/11/03/design-free-requirements/&amp;t=Design-Free+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/11/03/design-free-requirements/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Agile Prioritization: Which Widget?</title>
		<link>http://tynerblain.com/blog/2009/10/19/agile-prioritization/</link>
		<comments>http://tynerblain.com/blog/2009/10/19/agile-prioritization/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 03:54:46 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[product management and user experience]]></category>
		<category><![CDATA[ux and product management]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1093</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F10%2F19%2Fagile-prioritization%2F", "style": "big", "title": "Agile Prioritization: Which Widget?" });

Your company is building out a toolkit to support third-party developers.  You&#8217;ll need a bunch of different types of widgets &#8211; combo-boxes, text entry fields, domain-specific controls, etc.  You&#8217;ve got a long list of desired controls from your customers.  You&#8217;re agile.  What do you build [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F10%252F19%252Fagile-prioritization%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Prioritization%3A%20Which%20Widget%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F10%2F19%2Fagile-prioritization%2F", "style": "big", "title": "Agile Prioritization: Which Widget?" });</script></div>
<p><img class="alignnone" title="agile combobox" src="http://sehlhorst.smugmug.com/photos/686509239_2Y8GV-O.png" alt="" width="205" height="194" /></p>
<p>Your company is building out a toolkit to support third-party developers.  You&#8217;ll need a bunch of different types of widgets &#8211; combo-boxes, text entry fields, domain-specific controls, etc.  You&#8217;ve got a long list of desired controls from your customers.  You&#8217;re agile.  What do you build first?</p>
<h2><span id="more-1093"></span>Agile In A Soundbite</h2>
<p>Being <a title="agile explained" href="http://tynerblain.com/blog/2007/03/16/explaining-agile-development/">agile is about delivering incremental value</a>, quickly, getting feedback, and then delivering more incremental value.  Repeat until &#8220;done.&#8221;  <em>Good</em> agile adds a qualifier &#8211; do the <em>most valuable</em> thing quickly, get feedback, do the <em>most valuable</em> thing (that has not already been done) quickly. <em>Better</em> <a title="value optimization and prioritization" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">agile optimizes the rate at which you deliver value</a> by taking into account both benefit and cost.  <em>Great</em> agile overlays a focus on getting better at doing all of these things while you do them &#8211; becoming a learning organization.</p>
<h2>Boiling the Ocean</h2>
<p><img class="alignnone" title="boiling the ocean" src="http://sehlhorst.smugmug.com/photos/686571065_y35xb-O.jpg" alt="" width="250" height="166" /></p>
<p>A product manager I was coaching was faced with a challenge commonly referred to as <em>boiling the ocean</em>. His team was tasked with solving a market problem, and they were constrained to doing it with a service-oriented architecture that exposed a set of widgets (user interface controls) that customers could easily integrate into their products.  This approach was designed to provide competitive differentiation by reducing the time and cost to deploy solutions that allowed customers to integrate his product into their existing platforms.</p>
<p>In initial conversations with customers, technologists, and architects, this product manager quickly amassed a list of desired widgets (controls) and scenarios (stories) in which they could be used.  The product manager&#8217;s team had recently switched to an agile development methodology.  The internal stakeholders, not yet accustomed to agile development, wanted &#8220;all of the widgets,&#8221; now.</p>
<p>This product manager was able to convince them that the team would deliver the widgets incrementally, following agile principles.</p>
<p>His question was &#8211; <em>How do I sequence the widgets in the backlog</em>?</p>
<h2>Defining Widget Priority</h2>
<p>The product manager had a list of widgets, combo-boxes, data-grids, text fields, radio buttons, etc., and for each widget, he had a real-world scenario showing how the widget could be used.  Most of the scenarios involved customers using multiple widgets.  He wondered if he should do some sort of analysis that detailed the frequency of use of each widget.  &#8221;This widget is used in 7 scenarios, so it should be done first; this widget is used in 5 scenarios&#8230;&#8221;</p>
<p>There was a strong temptation to add several &#8220;Create a widget&#8221; tasks to his backlog.  It would be easy for his development team to estimate the effort required to deliver each widget.  His team wanted to deliver incrementally, and &#8220;one widget at a time&#8221; felt like logical, discrete chunks of work to them.  They could easily sink their teeth into estimating, building, and testing each widget.</p>
<p>A quick reminder of a main tenet of agile, delivering incremental value, illuminated the flaw in this approach.  This approach would have been an <em>inside-out</em> prioritization, when <a title="outside-in software development" href="http://tynerblain.com/blog/2007/09/27/outside-in/">value delivery requires an outside-in perspective.</a> (See the &#8216;recommended reading&#8217; suggestions on this page to check out Kessler and Sweitzer&#8217;s great book.)</p>
<p>If the team used this approach, after the first widget was complete, they would be able to deliver exactly 1 task, and 0 stories.  Development teams don&#8217;t deliver tasks, however.  The team&#8217;s customers would not be able to get incremental value from having a single widget.  The team would have delivered seven incomplete stories &#8211; so they would have delivered no stories at all!</p>
<p>We reworked his approach as follows:</p>
<ol>
<li><strong>Assess a value for each story</strong>, making sure that<a title="writing complete user stories" href="http://tynerblain.com/blog/2009/07/06/writing-complete-user-stories/"> each story would enable his customers to accomplish something valuable</a>.</li>
<li>Engage their user interface /<a title="definition of user experience" href="http://tynerblain.com/blog/2006/03/03/foundation-series-user-experience-disciplines/"> user experience</a> designer to <em><strong>design</strong></em><strong> a solution for the most valuable story</strong>.  This design was constrained to use widgets in the user interface.  The suggested way to communicate this design was with a storyboard and low-fidelity wireframes.</li>
<li><strong>Identify the widgets needed</strong> to be built to deliver that story, <em>using the designer&#8217;s design</em>.</li>
<li><strong>Deliver the story</strong> to the development team, including the storyboard, wireframes, and list of widgets to be used as acceptance criteria.</li>
<li>Get the development team to <strong>size (estimate) the effort to complete each story</strong>.</li>
<li>Where stories were too big (epics), <strong>collaborate </strong>to identify good ways to <a title="agile story decomposition" href="http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/">break up the stories</a> into manageable chunks.</li>
<li><strong>Repeat steps 2 through 6</strong> until the amount of identified effort was likely to fill the release (keep the dev team busy delivering value).</li>
<li>As the team delivers each story, get feedback from the market, revisit the prioritization, and revise the &#8220;next&#8221; story.</li>
</ol>
<p>What we discovered was that a scenario like the following (modified for this article) played out:</p>
<ul>
<li>The first story required two widgets.  As no widgets existed, both had to be built.</li>
<li>The second story required three widgets, but two of them had been built to support the first story &#8211; only one <em>incremental</em> widget had to be created.</li>
<li>The third story used one of the widgets from the first story, but required additional behaviors.  The original widget was modified to provide <em>incremental</em> capabilities (and value).</li>
</ul>
<h2>A Note On Team Structure</h2>
<p>Astute readers will notice that there was a <em>design step</em> &#8220;inside the requirements process&#8221; &#8211; before the stories were delivered to the development team.  Technically, that is true, for the way this particular company was organized.  The user experience designer was not a member of the scrum team, but rather, an external consultant who supported multiple teams.  The product manager engaged the designer prior to engaging the development teams.</p>
<p>This just as easily could have happened as follows:</p>
<ol>
<li>Product manager identifies, values, and prioritizes stories to be added to the backlog.</li>
<li>Development team, as part of sizing the stories, engages their user experience designer to select the appropriate widgets, and those <em>design decisions</em> inform the estimation process.</li>
<li>Everything else is the same.</li>
</ol>
<p>This <em>procedural variation</em> does not have design &#8220;inside the requirements process.&#8221;  The same people do the same things, in the same sequence in this scenario.  The only difference is that the interface / interaction designer is a member of the development team.  That would be ideal, but that was not how the company was organized.</p>
<p>In this particular example, <a title="product managers and UX designers" href="http://tynerblain.com/blog/2007/03/05/product-management-and-ux/">having the product manager collaborate with the UX designer</a> made the most sense.  It introduced less complexity for the product manager to accept responsibility for this activity than it would have for the development team (who was still new to using an agile delivery cadence) to do it.</p>
<h2>Conclusion</h2>
<p>The key ideas at play here:</p>
<ul>
<li>Focus on <em>realizable</em> <strong>value to the customer</strong> (outside-in development), not <em>tractable</em> tasks (inside-out development).</li>
<li><strong>Collaboration with a UX</strong> professional is key to driving &#8220;interface requirements.&#8221;</li>
<li><strong>Deliver frequently and valuably</strong>, get feedback (learn), and incorporate that knowledge into whatever is next.</li>
</ul>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Agile+Prioritization%3A+Which+Widget...+http://bit.ly/1ejwKo+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/10/19/agile-prioritization/&amp;t=Agile+Prioritization%3A+Which+Widget..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/10/19/agile-prioritization/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Modeling User Competency</title>
		<link>http://tynerblain.com/blog/2009/10/13/modeling-user-competency/</link>
		<comments>http://tynerblain.com/blog/2009/10/13/modeling-user-competency/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 04:40:50 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[competency model]]></category>
		<category><![CDATA[experience curves]]></category>
		<category><![CDATA[learning curves]]></category>
		<category><![CDATA[user competency]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1084</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F10%2F13%2Fmodeling-user-competency%2F", "style": "big", "title": "Modeling User Competency" });

Perpetually intermediate (competent) users.  Users who briefly exist as novice users and never become experts. Most of your users are competent, and you should design for them.  Competent users have different needs and different expectations than novice or expert users.  How do you know your user&#8217;s [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F10%252F13%252Fmodeling-user-competency%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Modeling%20User%20Competency%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F10%2F13%2Fmodeling-user-competency%2F", "style": "big", "title": "Modeling User Competency" });</script></div>
<p><img class="alignnone" title="measuring competence" src="http://sehlhorst.smugmug.com/photos/680267147_f9DUM-O.png" alt="" width="250" height="181" /></p>
<p>Perpetually intermediate (competent) users.  Users who briefly exist as novice users and never become experts. Most of your users are competent, and you should design for them.  Competent users have different needs and different expectations than novice or expert users.  How do you know your user&#8217;s competency levels, so you can design for them?</p>
<p><span id="more-1084"></span></p>
<h2>User Competency</h2>
<p>User competency is a concept I first read about in Alan Cooper&#8217;s <em><a title="The Inmates are Running the Asylum, by Alan Cooper" href="http://www.amazon.com/dp/0672326140?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0672326140&amp;creative=373489&amp;camp=211189">The Inmates Are Running The Asylum</a></em>.  Cooper&#8217;s contention is that the level of expertise of your users follows a bell curve, or <a title="normal distribution" href="http://en.wikipedia.org/wiki/Normal_distribution">normal distribution</a>.</p>
<blockquote><p>When we’re designing software we need to keep in mind that most of our users will be competent – neither experts nor beginners. Alan Cooper’s studies tell us that user skill levels follow a bell curve. He talks about competent users as perpetual intermediates. Some users drop out of the bell curve when they stop using our software. The rare user becomes an expert. Most users only learn enough to get their real job done.<br />
<cite><a title="competent users" href="http://tynerblain.com/blog/2006/04/02/competent-users-and-software-design/">Competent Users and Software Requirements</a></cite></p></blockquote>
<p>Cooper contends that the combination of <a title="usability learning curves" href="http://tynerblain.com/blog/2007/03/12/software-usability-learning-curves/">learning curves</a> and natural user tendencies to stop learning or abandon a software application are the sources of this distribution of user competency.</p>
<h2>Experience Curves</h2>
<p><a title="experience curves" href="http://en.wikipedia.org/wiki/Experience_curve_effects">Experience curves</a> represent the diminishing costs over time of manufacturing something repeatedly.  The process of manufacturing something gets more efficient as you get smarter about the process.  The process of using software is at least analogous to, if not a specific example of a manufacturing process.  If you&#8217;re using an email application, you are manufacturing email messages.  In a CRM system, you are manufacturing contacts, or contact reports, etc.</p>
<p>By treating any &#8220;using the software to do something&#8221; interactions as a process, you can measure the cost (how long it takes) of the user&#8217;s interactions.  Applying the math behind experience curves, you can predict the reduction in cost (to your users) over time, for any set of interactions.  Experience curves take into account that some processes are inherently more learnable than others.  This property of learnability is reflected as an efficiency coefficient &#8211; how efficiently someone can learn ways to reduce the cost (time) needed to perform the interactions.</p>
<p>This gives us an approach to quantitatively model user competency.  Having a definition allows us to model competence.  And measuring competence allows us to manage product design in the context of user competency -<a title="design for competent users" href="http://tynerblain.com/blog/2007/03/23/dont-make-products-too-simple/"> designing for competent users</a>.</p>
<h2>Defining Competence</h2>
<p>The first step to measuring competency is to define the model.  I am proposing a definition in this article that I suspect will yield insights (to help us manage our products). I was unable to find any quantified definitions of competence, when researching it as part of a client engagement.  If you have, or know of a model, please share it in the discussion below this article.</p>
<ul>
<li>A competent user is someone who learns to perform a task in half the time it initially took them.</li>
<li>An expert user is someone who can complete a task in 10% of the initial time.</li>
</ul>
<p>This definition is guided by an expectation that Alan Cooper&#8217;s premise about perpetually intermediate users is true.  Being a novice user is a very transient state, and becoming an expert is very infrequent.  The goal of the definition is to be able to segment your users and make well-informed design decisions.</p>
<h2>A Proposal, Not a Doctrine</h2>
<p>This is a proposal that doubling performance reflects competence, and achieving a ten-times improvement represents expertise.  It may be that some different measure of performance improvement more accurately reflects competence and expertise.  We have to test it to know.</p>
<p>The experience curve is defined mathematically by <em>Henderson&#8217;s Law</em>.  It states that the time to complete a task is a function of the number of times you have previously done that task, adjusted by the &#8220;elasticity&#8221; of the cost of that task.  In other words, some tasks are easier to improve than others.  If you populate a table with the results of applying Henderson&#8217;s Law, you get the following:</p>
<p><img class="alignnone" title="experience curves" src="http://sehlhorst.smugmug.com/photos/680267101_QEofx-O.png" alt="" width="450" height="247" /> [<a title="experience curve data" href="http://sehlhorst.smugmug.com/photos/680267134_VUcpL-O.png">larger image</a>]</p>
<ul>
<li>Each row in the table represents the Nth repetition of a task.</li>
<li>Each column represents how easy that task is to learn &#8211; progressing from &#8220;hard to improve&#8221; on the left, to &#8220;easy to improve&#8221; on the right.</li>
<li>Each cell in the table represents how long it would take to perform the Nth repetition of the task, as a function of how easy it is to improve your performance at the task.</li>
</ul>
<p>The above definitions represent what experience curves predict mathematically, when the task initially takes 60 seconds.  The following definitions reflect the proposed user competency model:</p>
<ul>
<li>A user is a <em>novice</em> user until she has learned enough to cut the time-on-task in half.  These cells have a white background (and are in the upper left area of the table).</li>
<li>A user is a <em>competent</em> user when the time needed to complete the task is between one half and one tenth of the initial time.  These cells are shown with a yellow background (and are in the central area of the table).</li>
<li>A user is an <em>expert</em> user when she can complete the task in less than one tenth of the time required to initially complete the task.  Theses cells are shown with a red background (and are in the lower right area of the table).</li>
</ul>
<p>In the absence of empirical data, I used my intuition to suggest that a representative experience curve for a typical task performed in software would be one with an &#8220;elasticity&#8221; of 50%.  For a task with those learning characteristics:</p>
<ul>
<li>A novice user would cut the needed time in half on the 4th repetition of the task, and would be considered to be a competent user.</li>
<li>A competent user would further reduce the time needed to one tenth of the initial time on the 100th repetition of the task, and would be considered an expert user.</li>
<li>The 50% elasticity column is surrounded by a black border, and the number of repetitions required to advance to <em>competent</em> or <em>expert</em> status is also highlighted with a black border.</li>
</ul>
<h2>Inferring Competence</h2>
<p>Since different processes have different learning characteristics, you have to figure out how easy it is for your users to improve at your processes.  To do that, you have to study (or at least measure) your users&#8217; interactions with your software.  In the 50% curve highlighted above, a user is capable of cutting their time-on-task in half by the fourth time they perform the task.</p>
<p>If data from your initial testing (or measurement) reveals this to be true, then you have selected the correct curve (the correct column in the table).  If it takes more or less time to reach this level of improvement, shift to the left or right to find the appropriate curve.  If software-interactions are reasonable analogs to manufacturing processes, then the experience curve projects an expected rate of improvement on task.</p>
<p>The following graph isolates the time-on-task data for a user who is learning to improve when repeating a task (process) that matches the 50% elasticity curve.</p>
<p><img class="alignnone" title="rate of learning on a 50% curve" src="http://sehlhorst.smugmug.com/photos/680267141_hukQA-O.png" alt="" width="450" height="327" /> [<a title="larger 50% experience curve time-on-task graph" href="http://sehlhorst.smugmug.com/photos/680267164_phQRh-O.png">larger image</a>]</p>
<p>Note that the number of repetitions of the task (the X axis) is represented as a logarithmic scale.  The data points along the curve correspond to the cell values in the table above (for the 50% column).</p>
<p><strong>Shades of Gray</strong></p>
<p>One nice thing about this quantitative approach to inferring competency by measuring usage is that your measurements are per-process.  Users are not &#8220;purely novice&#8221; or &#8220;purely expert&#8221; &#8211; they can be experts at some processes, while remaining neophytes at other.  There is also awareness, for any particular process, of &#8220;how much competency&#8221; a user has.  This allows you to refine your assumptions of the steepness of the learning curve, and of the thresholds (doubled performance and ten-times performance improvements).</p>
<h2>Improvement Over Time</h2>
<p>Any particular learning curve can be considered relative to calendar time, to see how quickly a user will progress along the curve (as a function of frequency of use).  This can be useful for determining the <a title="definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI </a>of improvement in a particular process.</p>
<blockquote><p>The following graph shows how an 80% learning curve overlays a calendar for tasks that happen daily, weekly, and hourly.<br />
<img title="calendar overlay of competency curve" src="http://sehlhorst.smugmug.com/photos/135449754-M.jpg" alt="" /><br />
[<a title="larger improvement over time" href="http://sehlhorst.smugmug.com/photos/135449796-O.jpg">larger image</a>]</p>
<p>The graph shows that for a weekly frequency, after 16 weeks, the task time has reduced from 300 seconds to 100 seconds. With a daily frequency, the task time is even lower – about 60 seconds. This graph shows nothing other than converting the academic learning curve graph into one that incorporates calendar time and frequency of occurrence.</p>
<p><cite><a title="software usability and learning curves" href="http://tynerblain.com/blog/2007/03/12/software-usability-learning-curves/">Software Usability and Learning Curves</a></cite></p></blockquote>
<p>One approach to inferring user competency would be to measure how long a user has been using your software.  The variation in how frequently different users perform the same task will introduce an error into that inference.  You can avoid introducing that error into your modeling by counting the number of times a user has performed a task.</p>
<h2>Applying the User Competency Model</h2>
<p>The advice in previous articles, and from Cooper&#8217;s book, and from this <a title="perpetual intermediacy" href="http://www.codinghorror.com/blog/archives/000098.html">great article on the  Coding Horror site</a>, encourages us to focus on the competent users.</p>
<p>I&#8217;m working with a client who needs to prioritize a set of capabilities and establish design principles for a product.  We will incorporate this user competency model as part of our analysis.</p>
<p>Hopefully we&#8217;ll have an opportunity to collect data to validate and / or refine the model.  I&#8217;m proposing that we first gain some insight into the which users (novice, competent, expert) drive the most revenue and profit from use of the product &#8211; to establish the importance of each category of user.</p>
<p>For this product, I suspect that we will find many more <em>novice</em> users than a normal distribution would predict.  If that is true, the next question will be to understand if we are dealing with a normal behavioral dynamic, or if characteristics of the current product &#8220;force&#8221; novice users to abandon it before they achieve competence.</p>
<p>Either way, we will have a framework for prioritizing the goals of the novice, competent, and expert users.</p>
<p>How would you apply a model like this to improving your product?</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Modeling+User+Competency+http://bit.ly/ZYSig+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/10/13/modeling-user-competency/&amp;t=Modeling+User+Competency" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/10/13/modeling-user-competency/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Concise Requirements</title>
		<link>http://tynerblain.com/blog/2009/08/03/concise-requirements/</link>
		<comments>http://tynerblain.com/blog/2009/08/03/concise-requirements/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 03:23:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Ishikawa Diagram]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[concise requirements]]></category>
		<category><![CDATA[writing good requirements]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1010</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F08%2F03%2Fconcise-requirements%2F", "style": "big", "title": "Concise Requirements" });

Concise requirements give your team a useful, easy to read and easy to change understanding of what must be done.  Great requirements exist to do three things:

Identify the problems that need to be solved.
Explain why those problems are worth solving.
Define when those problems are solved.

Concise Requirements &#8211; Revisiting

In [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F08%252F03%252Fconcise-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Concise%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F08%2F03%2Fconcise-requirements%2F", "style": "big", "title": "Concise Requirements" });</script></div>
<p><img class="alignnone" title="concise requirements logo" src="http://sehlhorst.smugmug.com/photos/128628545-M.png" alt="" width="250" height="250" /></p>
<p><em>Concise</em> requirements give your team a useful, easy to read and easy to change understanding of what must be done.  Great requirements exist to do three things:</p>
<ol>
<li>Identify the problems that need to be solved.</li>
<li>Explain why those problems are worth solving.</li>
<li>Define when those problems <em><span style="text-decoration: underline;">are</span></em> solved.</li>
</ol>
<h2><span id="more-1010"></span>Concise Requirements &#8211; Revisiting</h2>
<p><img class="alignnone" title="ipod 2006" src="http://sehlhorst.smugmug.com/photos/610301383_BDte6-L.jpg" alt="" width="149" height="250" /><img class="alignnone" title="ipod 2009" src="http://sehlhorst.smugmug.com/photos/610301393_sfN5r-L.jpg" alt="" width="141" height="250" /></p>
<p>In the three years since we last looked at <em><a title="writing concise requirements" href="http://tynerblain.com/blog/2006/05/31/writing-concise-requirements/">Writing Concise Requirements</a></em> from the <em><a title="Writing Good Requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">Big Ten Rules of Writing Requirements</a></em>, the iPod evolved to give us a better experience.  Let&#8217;s see if we can do the same with the topic of brevity in requirements.  The size of our community here has grown ten-fold, and the people who were here back then have grown just as much.  It makes sense to look at this again.</p>
<p>Writing concise requirements is not just minimizing the number of words you use.  Writing concise requirements is presenting the most important information in the easiest format for your audience to consume.</p>
<h2>Concise Requirements Identify the Problems That Need to be Solved</h2>
<p>Ultimately, requirements are the problems that we choose to solve.  A concise requirements artifact (formal document, index card, photo of a whiteboard, whatever) is one that has the highest signal-to-noise ratio possible.  You&#8217;re maximizing the amount of communication, and minimizing the cost of communicating.</p>
<p><img class="alignnone" title="signal and noise" src="http://sehlhorst.smugmug.com/photos/610324412_eSzfc-L.png" alt="" width="241" height="210" /></p>
<p>You want your requirements document to read like the lines, not the points.  If the line (the signal) is what you really want, and you communicate a big pile of points (the signal, hidden in the noise), you run the very real risk that your audience will misinterpret the signal.</p>
<p><a title="writing complete user stories" href="http://tynerblain.com/blog/2009/07/06/writing-complete-user-stories/">User stories</a> provide the best example of clarity that comes from conciseness.  The format you should use, based on Mike Cohn&#8217;s great book, <em><a title="user stories applied at amazon" href="http://www.amazon.com/dp/0321205685?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0321205685&amp;creative=373489&amp;camp=211189">User Stories Applied</a></em><a title="user stories applied at amazon" href="http://www.amazon.com/dp/0321205685?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0321205685&amp;creative=373489&amp;camp=211189">,</a> is</p>
<blockquote><p>As a [<strong>role</strong>], I want to [<strong>do something</strong>] [<strong>with some frequency</strong>] so that I can/will [<strong>achieve some goal</strong>]</p></blockquote>
<p>The user story is not <em>always</em> the right communication format &#8211; it depends on what problems you&#8217;re solving, and who is on your team.  <a title="use cases vs user stories" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">Sometimes, use cases work better than user stories</a>.  Conciseness is important for use cases too.  Start with a <a title="use case naming tips" href="http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/">good use case name</a>.</p>
<h2>Concise Requirements Explain Why Those Problems Are Worth Solving</h2>
<p>Last week&#8217;s article on <em><a title="Writing Valuable Requirements" href="http://tynerblain.com/blog/2009/07/29/valuable-requirements/">Valuable Requirements</a></em> focused on <em>why</em> particular problems should be solved.  Your focus should be on value, and that article discussed five ways to assure that your requirements are valuable.  One of the techniques,<a title="finding the root causes of problems" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/"> the use of an Ishikawa diagram</a>, provides a method for identifying the root causes of problems.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;"><img style="padding: 0px; margin: 0px;" src="http://sehlhorst.smugmug.com/photos/302635390_W2GiV-O.jpg" alt="excessive car operating costs" width="450" height="269" /></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;">[<a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="large excessive car costs example cause and effect diagram" href="http://sehlhorst.smugmug.com/photos/302635439_BqV4v-L.jpg">larger image</a>]</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;">Imagine that you have a collection of user stories, representing problems to be solved for your users.  You need a way to demonstrate why <em>this</em> user story should be implemented and why <em>that</em> one shouldn&#8217;t.  You can often use the Ishikawa diagram in the same way.  A particular <strong>goal is achieved</strong> when a user is able to <strong>do something</strong>.  Perhaps several somethings are required.  The point is that you can use the Ishikawa to drive home the point &#8211; if <em>this set of user stories</em> are all implemented, then <em>this goal will be achieved</em>.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.4em; padding: 0px;">There are two reasons this is important &#8211; first, you&#8217;re providing context for your team.  They understand <em>why</em> they are doing something.  Second, you can make changes easily, because you can see the impact of those changes.  By understanding the cause-and-effect relationships between problems and their values (user stories and their goals), you can see the impact of changing one or the other.</p>
<h2>Concise Requirements Define When Those Problems <em>Are</em> Solved</h2>
<p>Clarity is the goal of conciseness.  It isn&#8217;t enough to say &#8220;work on this.&#8221;  It&#8217;s important to know <em>why</em> you&#8217;re working on it, but that still isn&#8217;t enough.  You have to know when you&#8217;re <em>done</em>.  When you&#8217;re defining problems to be solved (and therefore solutions), you must also define the <em>measures</em> by which the solution will be judged.</p>
<p>A measurement of success for &#8220;Cost of Operation is Too High&#8221; might be &#8220;reduce costs of operation by 10%.&#8221;  This gives you a testable criteria for knowing when that problem has been <em>sufficiently</em> solved.  Sticking with the Ishikawa, you can also map out the strategy for achieving that lofty goal.  You can say that the goal is to reduce fuel expenses by 20%, reduce cost of maintenance by 5%, and reduce payments by 15%.  This process continues &#8211; a 20% reduction in fuel spend requires that you operate with your tires within 5% of nominal pressure, and that you reduce the aerodynamic drag coefficient by 7% (or whatever).</p>
<p>This gives you clarity in your objectives.</p>
<p>User stories, when combined with user acceptance criteria, provide that last connection of testability that lets your team know when they are done.</p>
<p><img class="alignnone" title="acceptance criteria for user stories" src="http://sehlhorst.smugmug.com/photos/584149015_prgqx-L.png" alt="" width="450" height="305" /></p>
<p>There aren&#8217;t many things more frustrating to a development team than having them solve the wrong problems.  One of those things might be having their solution be rejected because it isn&#8217;t <em>enough</em>.  Writing acceptance criteria clearly and concisely lets the team know exactly when they can move on to the next problem.</p>
<p>Providing a crisp understanding of acceptance criteria also facilitates iterative development.  One challenge teams always face is <a title="how to use timeboxes for agile development" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">making improvements that fit within the timebox</a> of a given iteration.  Imagine a user story with 4 acceptance criteria, where the story is too big to complete in one sprint.  When talking with your development team, you may find that the story is too big because satisfying all of the acceptance criteria is too big.  This is where many teams miss an opportunity &#8211; by defining <em>all</em> of the acceptance criteria that are believed to be needed <em>eventually</em> and requiring that they all be implemented <em>now</em>.  One of those criteria is going to be more important than the others.  Implement the story such that is satisfies the most important criteria (timeboxing) now, and rewrite or enhance it to meet the additional criteria later.</p>
<h2>Conclusion</h2>
<p>Software Product Success depends not only on identifying the &#8220;right stuff&#8221; to build, but on making sure the team builds it and builds it right.</p>
<p>Concise requirements improve your ability to communicate with your team, thereby improving their ability to build the right stuff right.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Concise+Requirements+http://bit.ly/pZRj8+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/08/03/concise-requirements/&amp;t=Concise+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/08/03/concise-requirements/feed/</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Agile Maturity Model &#8211; What&#8217;s Next?</title>
		<link>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/</link>
		<comments>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:29:49 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile maturity model]]></category>
		<category><![CDATA[business agility]]></category>
		<category><![CDATA[CMMI]]></category>
		<category><![CDATA[maturity model]]></category>
		<category><![CDATA[rmm]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=979</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F30%2Fagile-maturity-model%2F", "style": "big", "title": "Agile Maturity Model - What's Next?" });

The maturity model approach to describing organizations and processes comes and goes out of fashion.  It is a repeating framework de jour.  In the game of agile jargon whack-a-mole, the agile maturity model is poking its head up again.

Agile Maturity Model
Ellen Gottesdeiner, author of [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F06%252F30%252Fagile-maturity-model%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Maturity%20Model%20-%20What%27s%20Next%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F30%2Fagile-maturity-model%2F", "style": "big", "title": "Agile Maturity Model - What's Next?" });</script></div>
<p><img class="alignnone" title="scout hamilton sehlhorst as a puppy" src="http://sehlhorst.smugmug.com/photos/578544627_BfDyP-L.jpg" alt="" width="187" height="250" /></p>
<p>The <em>maturity model</em> approach to describing organizations and processes comes and goes out of fashion.  It is a repeating framework de jour.  In the game of agile jargon whack-a-mole, the <em>agile maturity model</em> is poking its head up again.<br />
<span id="more-979"></span></p>
<h2>Agile Maturity Model</h2>
<p><a title="EBG Consulting" href="http://www.ebgconsulting.com/">Ellen Gottesdeiner</a>, author of <em><a title="requirements by collaboration at amazon" href="http://www.amazon.com/dp/0201786060?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0201786060&amp;creative=373489&amp;camp=211189">Requirements by Collaboration</a></em>, tweeted (<a title="Follow Ellen on Twitter" href="http://twitter.com/ellengott">@ellengott</a>) a few hours ago with a link to an article proposing a set of <a title="maturity models" href="http://salhir.wordpress.com/2009/06/26/maturity-models-leanness-agility-competitiveness-and-collaboration/">maturity models</a>.  She graciously passed on the opportunity to comment about the &#8220;agile maturity model&#8221; when pointing out her like of the collaboration maturity model.  The article proposed the following as an agile maturity model:</p>
<blockquote><p><strong>Agile Maturity Model (AMM)</strong></p>
<p>0 – <em>Dormant</em></p>
<p>1 – <em>Speed</em>: Focusing on being expeditious.</p>
<p>2 – <em>Reactive</em>: Focusing on acting relative to change from the perspective of the moment rather than a longer timeframe.</p>
<p>3 – <em>Responsive</em>: Focusing on acting relative to change from the perspective of the moment balanced with a longer timeframe.</p></blockquote>
<p>I didn&#8217;t find it to be a particularly useful model.  Although descriptive, it won&#8217;t help your organization improve.</p>
<h2>What Does Maturity Mean?</h2>
<p>I wrote a series of articles a couple years ago that <a title="CMM and RMM" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">explored the CMMI and RMM</a> &#8211; the capability maturity model and the requirements maturity model.  These are two different models that use <em>maturity</em> as a concept for articulating different levels, or grades (or enlightenment, or rigor), with respect to organizational behaviors.  At the time, there was both momentum and confusion around the notion of a <em>requirements</em> maturity model.  CMMI is a description of an organization&#8217;s rigor in &#8220;saying what it does, and doing what it says.&#8221;  RMM is an assessment of the level of critical thinking incorporated into the ways an organization is using requirements to develop products.</p>
<p>The problem is that people were incorrectly assuming that an organization &#8220;at level 4 CMMI&#8221; would approach requirements management at a comparably enlightened level.  The problem is that they are putting entirely unrelated concepts into similarly named classifications.  An organization could be at CMMI 1 and RMM 4 or RMM 2 and CMMI 3.  That series of articles explored what it would mean to be in any of the combinations of &#8220;maturity&#8221; for those two models.  Check out all the articles in the series if you want to put it all in perspective:</p>
<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 20px; padding: 0px;">
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="Introduction to CMMI Levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">Foundation Series: CMMI Levels Explained</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="What CMMI Level to Use" href="http://tynerblain.com/blog/2006/03/12/what-cmmi-level-should-we-use/">What CMMI Level Should We Use?</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #a30000; text-decoration: none; padding: 0px; margin: 0px;" title="Introduction to Mapping the RMM to the CMMI" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">CMMI Levels and RMM Introduction</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="Mapping RMM Level 1 to CMMI" href="http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/">CMMI Levels and RMM Level 1 – Written Requirements</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="CMMI Levels and RMM Level 2 - Organized Requirements" href="http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/">CMMI Levels and RMM Level 2 – Organized Requirements</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="CMMI Levels and RMM Level 3 - Structured Requirements" href="http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/">CMMI Levels and RMM Level 3 – Structured Requirements</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="CMMI Levels and RMM Level 4 - Traced Requirements" href="http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/">CMMI Levels and RMM Level 4 – Traced Requirements</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;"><a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="CMMI Levels and RMM Level 5 - Integrated Requirements" href="http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/">CMMI Levels and RMM Level 5 – Integrated Requirements</a></li>
<li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.5em; margin-left: 20px; padding: 0px;">Don’t forget to take our <a style="color: #0000aa; text-decoration: none; padding: 0px; margin: 0px;" title="Quick Poll on CMMI and RMM Levels" href="http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/">One Minute Survey on CMMI and RMM</a>.</li>
</ul>
<h2>Making a Maturity Model Useful</h2>
<p>Why bother with a maturity model?  Not so you can &#8220;keep score&#8221; relative to others &#8211; rather, so that you can improve your own organization.  For a maturity model to be useful, you have to be able to do two things.</p>
<ol>
<li>You must be able to determine where your organization is in the model.</li>
<li>You must be able to identify actions you can take to &#8220;improve&#8221; your organization relative to the model.</li>
</ol>
<p>If you can&#8217;t measure maturity, and the model does not provide guidance about how to improve, it&#8217;s useless.  One challenge with maturity models is that they risk becoming contextually narrow in their application.  The more concrete a measurement or suggestion becomes, the less extensible it is likely to be.  Ideally, your model would be broadly applicable to many organizations.</p>
<p>With <a title="agile manifesto and cockburn's values" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">an agile manifesto</a> that emphasizes people over process, it is ironic to consider applying a metric that measures your agile process.  So &#8211; goal #1 is immediately undermined.  Goal #2 &#8211; improving your organization, is, however, very valuable.</p>
<h2>Improving An Agile Process</h2>
<p>I&#8217;ve worked in several agile environments, both as a practicioner and as someone helping to transform organizations to become agile (or better at agile).  I&#8217;ve worked in enterprise software, helping large teams adopt agile processes; with a SaaS consumer product team, and in large IT departments with collections of teams adopting agile processes at varying paces.  I&#8217;ve played on both sides of the fence (delivery/QA &amp; product management/ownership).</p>
<p>Going from zero to sixty on agile is a big task.  You can&#8217;t solve all of the organizational, practical, and interpersonal challenges at the same time.  Or at least you would be more effective tackling and resolving each issue in sequence.  In fact, you should solve the most important / largest problem first &#8211; then move on to the next, and so on.  You can call it <em>agile agile adoption</em>, or you can call it eating the elephant.</p>
<p>One powerful use of a maturity model is highlighting the next-biggest hurdle you have to overcome.  Unfortunately, most communication about maturity models is &#8220;look which hurdle we just overcame&#8221; &#8211; but the focus should be on &#8220;what&#8217;s next?&#8221;</p>
<p>When helping organizations be effective with agile processes, there are some clear &#8220;you have to overcome this first&#8221; challenges, that if unresolved, make other challenges irrelevant.</p>
<p>If you&#8217;re a software developer, I&#8217;m sure you&#8217;ve experienced the following scenario:</p>
<ul>
<li>A bug is reported.</li>
<li>You fix the bug, and write some tests to prevent it from reoccuring.</li>
<li>While testing, you discover another bug that was <em>hidden by</em> the first bug.</li>
</ul>
<p>Fixing that second bug doesn&#8217;t do any good until you&#8217;ve fixed the first one.</p>
<p>If you&#8217;re a product manager or business analyst, think about it in terms of capability enhancements.  Is a <em>faster</em> search important if the current search algorithm is not returning the right results?  Get good results first, then make it faster.</p>
<p>You have to solve the biggest/closest/roadblockiest issue first.  Then move on to the next issue.  That&#8217;s how you should use a maturity model &#8211; as guidance about &#8220;what&#8217;s next?&#8221;</p>
<p>When assessing / improving your organization&#8217;s ability to be agile, you need to be addressing whatever is next.</p>
<h2>What&#8217;s Next?</h2>
<p>Let&#8217;s discard the &#8220;maturity model&#8221; notion and focus on &#8220;what&#8217;s next?&#8221; instead.  And that of course starts with &#8220;what&#8217;s first?&#8221;  Here&#8217;s how I&#8217;ve presented an agile <em>hierarchy of needs</em> to in the past:</p>
<ol>
<li><strong>Staffing the engineering team correctly</strong>.  People over process is the right emphasis.  If you can&#8217;t find people that are &#8220;good enough&#8221; you might as well go home.  Doesn&#8217;t matter how agile you are if you don&#8217;t have the horsepower.  You also need people who are excited to &#8220;do agile&#8221; &#8211; they like to communicate, they enjoy the project and team dynamics of an agile process.  You&#8217;re also better off with <a title="specializing generalists and agile politics" href="http://tynerblain.com/blog/2008/02/14/specializing-generalists/">specializing generalists</a> &#8211; ideally, every member of the team can do any work that is needed.  This is an efficiency play &#8211; you risk introducing bottlenecks when you have a specialist who is the &#8220;only one&#8221; who can do particular types of work &#8211; because you will <em>not</em> have a consistent mix of types of work from release to release.</li>
<li><strong>Assuring Quality is in your team&#8217;s DNA</strong>.  Arguably, this is part of <em>what&#8217;s first</em>, but there are a lot of teams that get cood at cranking out code, before they get good at cranking out <em>good</em> code.  <a title="continuous integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">Continuous integration</a> is the approach you <em>must</em> have.  Test-driven development, spec-driven development, and other testing-integration approaches are extremely important, but are really reflective of <a title="agile methodologies" href="http://tynerblain.com/blog/2007/03/09/agile-software-development-methods/">different </a><em><a title="agile methodologies" href="http://tynerblain.com/blog/2007/03/09/agile-software-development-methods/">flavors</a></em><a title="agile methodologies" href="http://tynerblain.com/blog/2007/03/09/agile-software-development-methods/"> of agile and quality,</a> not different degrees.</li>
<li><strong>Reducing overhead in the release process</strong>.  There&#8217;s a cost associated with releasing a product.  Once you get good at releasing, and are releasing good product, your next focus is on finding the right release cadence.  There are three factors that essentially dictate your release frequency.  The size of atomic deliverables (<a title="user stories" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">user stories</a> and <a title="use cases for agile" href="http://tynerblain.com/blog/2008/02/18/cockburn-loves-agile-use-cases/">use cases</a>, non-functional requirements, etc) your team is creating, the overhead (time and cost) of releasing, and your customer&#8217;s capacity to consume the releases.  My anecdotal experience is that teams are usually constrained initially by the cost of releasing &#8211; dedicated hours to creating a build, code freezes, etc.  Automating the build process (to reduce both costs and errors introduced while building) is first.  Integrating <a title="essential practices of CI" href="http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/">automated build and automated test processes</a> together is next.</li>
<li><strong>Feeding the beast</strong>.  Once you have an engineering / delivery team that is operating efficiently, you run into the problem of making sure they have enough important work to do.  There&#8217;s pressure on product owners and  product managers to schedule something because it is easy to define, not because it is important.  It is also important that the team <a title="providing context as an agile product manager" href="http://tynerblain.com/blog/2008/10/01/agile-product-management-providing-context/">understand the context and importance of what they are doing</a>.  So you have to focus on making sure your product management team has enough capacity to keep the engineering team busy on delivering really valuable stuff.  The &#8220;right&#8221; solution to this depends on how the problem manifests in your organization. <a title="criticality of product management" href="http://tynerblain.com/blog/2006/05/19/product-managers-are-critical-to-success/"> Is your product manager spread too thin</a> across multiple products?  Too junior?  Too bogged down in sales support or trade show attendance or or or?</li>
<li><strong>Managing stakeholder expectations</strong>.  A big challenge in changing an organization to become agile is in <a title="stakeholder expectation management in agile" href="http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/">resetting and managing the expectations of stakeholders</a>.  Execs are used to having an annual budget exercise where they dedicate X dollars in the pursuit of Y objectives.  We&#8217;ll set aside the reality that they&#8217;ll only achieve 1/3 of the objectives, at 2X the cost, much later than originally forecasted.  We aren&#8217;t looking at<a title="standish report data" href="http://tynerblain.com/blog/category/requirements/rm-software/"> the failings of waterfall</a>, we&#8217;re looking at the risks of agile.  There&#8217;s a ton of stuff here, from doing damage control to reverse perceptions that &#8220;people who want to do agile just don&#8217;t want to be accountable&#8221; or addressing the &#8220;we can&#8217;t tell you what X dollars gets you&#8221; message.  Again &#8211; the particular solution is a function of how the problem manifests in your organization.  Once your team is delivering valuable stuff efficiently, you have to make sure your management team is happy and engaged and knows what to expect.</li>
<li><strong>Continuously learning from your markets</strong>.  This is really what differentiates an agile <em>organization</em> from an organization with an agile development team.  Agile processes do enable you to develop code more efficiently.  If you aren&#8217;t taking advantage of the faster development, feedback loops, and ability to change that agile enables, you&#8217;re leaving money on the table.  And one of your competitors will pick it up.  There&#8217;s a whole community of MBAs that talk about <em>business agility</em> without once thinking about software development.  They&#8217;re talking about <a title="market driven competitive advantage" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">an organization&#8217;s capacity for rapid response to changing market conditions</a>.  It&#8217;s what separates the winners from everybody else.  And agile <em>development</em> makes business agility possible.  As long as your team is able to identify and <a title="market requirement valuation" href="http://tynerblain.com/blog/2006/11/02/market-requirement-valuation-example/">value</a> industry trends, competitive threats, and market opportunities.  When you&#8217;re good at this, you have an agile organization.  And <em>you </em>win.</li>
</ol>
<h2>Conclusion</h2>
<p>Any agile &#8220;maturity model&#8221;, irony aside, needs to be structured to help organizations progress through the stages of enlightened operations &#8211; continuously providing insights into &#8220;what&#8217;s next?&#8221; for those teams to grow.</p>
<p>I know there are many readers here with years of agile experience &#8211; how would you improve the list above, to better provide a framework for &#8220;what&#8217;s next?&#8221;  When that framework is solid, we can do some wordsmithing and repackage it as a maturity model.  Until then, just focus on &#8220;what&#8217;s next&#8221; &#8211; that&#8217;s all a maturity model should be used for anyway.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next...+http://bit.ly/5zy42+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/06/30/agile-maturity-model/&amp;t=Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>User Goals and Corporate Goals</title>
		<link>http://tynerblain.com/blog/2009/06/22/user-goals-and-corporate-goals/</link>
		<comments>http://tynerblain.com/blog/2009/06/22/user-goals-and-corporate-goals/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 04:59:02 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Interaction design]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[corporate goals]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[user goals]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=973</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F22%2Fuser-goals-and-corporate-goals%2F", "style": "big", "title": "User Goals and Corporate Goals" });

When defining requirements, you always start in the context of a goal &#8211; either a user goal or a corporate goal.  You need to be aware of both.  Having a positive user experience is important, and requires a user-centered understanding.  Achieving your corporate goals [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F06%252F22%252Fuser-goals-and-corporate-goals%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22User%20Goals%20and%20Corporate%20Goals%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F22%2Fuser-goals-and-corporate-goals%2F", "style": "big", "title": "User Goals and Corporate Goals" });</script></div>
<p><img class="alignnone" title="vending machine as user interface" src="http://sehlhorst.smugmug.com/photos/571470636_NcRaS-L.jpg" alt="" width="163" height="250" /></p>
<p>When defining requirements, you always start in the context of a goal &#8211; either a user goal or a corporate goal.  You need to be aware of both.  Having a positive user experience is important, and <em>requires</em> a user-centered understanding.  Achieving your corporate goals <em>might</em> be in conflict with some user goals.</p>
<h2><span id="more-973"></span>User Goals</h2>
<p>A user centered, or user-centric approach to developing software is one where you start by <a title="developing persona for goal driven development" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">identifying the key persona</a> in your target market.  For each of those personas, you identify their most important goals.  You then identify the <a title="user stories and use cases" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">user stories or use cases</a> that represent the things these people do in order to achieve their goals.  These &#8220;things&#8221; are manifested as practical goals.  For these activities, you design user interfaces (process, layout, architecture, look and feel, etc) that <a title="customer delight in requirements prioritization" href="http://tynerblain.com/blog/2006/02/27/prioritizing-software-requirements-kano-take-two/">create customer delight</a> for those users, doing those things.  This is how your product <a title="designing to exceed the suck threshold" href="http://tynerblain.com/blog/2005/12/14/getting-past-the-suck-threshold/">exceeds the suck-threshold</a> (good enough that it doesn&#8217;t suck to use your product).</p>
<h2>Corporate Goals</h2>
<p>There&#8217;s a reason your company is creating or improving a product.  It may be to gain market share, or improve profitability, or increase sales.  Whatever it is, there&#8217;s a corporate goal that your decisions should be supporting.  The (subset of) corporate goals that are relevant to your product could be communicated in a vision and scope document, that constrains the domain of problems to be solved, and provides nuanced insights into viable approaches to solving them (<a title="vision and scope docs for apr" href="http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/">example vision and scope</a>).</p>
<p>Corporate goals are achieved when customers do things with the products.  These &#8220;things&#8221; are manifested as practical goals.  For those activities, you document what should be accomplishable and why.</p>
<h2>Alignment and Conflict of Goals</h2>
<p>Notice that both the user goals and corporate goals manifest in terms of people doing things.  When the person (user) wants to do the same things that your company wants them to do, you&#8217;re in alignment.  When the user goals and corporate goals suggest different activities, you&#8217;re in conflict.</p>
<p>You can see visually that these worlds collide at the &#8220;practical goals&#8221; stage  in the following diagram, from an article on <a title="interaction design and structured requirements" href="http://tynerblain.com/blog/2006/03/23/interaction-design-and-structured-requirements/">combining interaction design and structured requirements principles</a>.</p>
<p><img class="alignnone" title="interaction design and structured requirements" src="http://sehlhorst.smugmug.com/photos/61228367-O.png" alt="" width="461" height="525" /></p>
<p>It may be great &#8211; when the user and corporate goals are in alignment, the practical goal and associated scenario (activity) are easily defined.  What about when the goals are in conflict?</p>
<h2>Vending Machine Example</h2>
<p>Last Thursday morning, as I interacted with a vending machine, the idea for this article was dispensed along with my Diet Mountain Dew.  Yes, I know that&#8217;s odd.  Move on.</p>
<p>It occured to me that the process of buying a cold, caffeinated beverage can be both aligned and unaligned from the perspective of user and corporate goals.  If you imagine writing a use case for purchasing a beverage from the vending machine, your most important scenario is the one where a person wants to purchase a beverage that is available in the machine.</p>
<ul>
<li>User Goal: Get refreshed and vitalized.</li>
<li>Corporate Goal: Sell a beverage.</li>
</ul>
<p>I want to buy a Diet Mountain Dew, as a means to realize my personal goal.  The owner of the vending machine wants to realize her corporate goal of selling me the beverage I want to buy.  We&#8217;re in alignment.  Our requirements definitions and design decisions will be pretty easy &#8211; everything that increases the likelihood of and improves the experience of purchasing that beverage is good.  I put my money in the machine and push the button.</p>
<p>Then it occurs to me &#8211; there&#8217;s a situation where my personal goals are clearly not aligned with the corporate goals of the vending machine owner.  When there is no Diet Mountain Dew available to be purchased.</p>
<p>Consider the following procedure I&#8217;m forced to endure:</p>
<ol>
<li>I view the available beverages that this machine dispenses &#8211; Diet Mountain Dew is one of them.</li>
<li>I put my money in the machine.</li>
<li>I push the button for Diet Mountain Dew.</li>
<li>The tiny display on the machine presents a message in taunting, scrolling red LED lights: SOLD OUT.</li>
</ol>
<p>At this point, I&#8217;m faced with a choice &#8211; select a less desireable beverage, or request my money back and try to satisfy my user goal in some other way.</p>
<p>Consider an alternate procedure:</p>
<ol>
<li>I view the available beverages that this machine dispenses &#8211; Diet Mountain Dew is one of them.</li>
<li>I view the &#8216;current availability&#8217; of Diet Mountain Dew and see that this machine is currently sold out of Diet Mountain Dew.</li>
</ol>
<p>At this point, I&#8217;m faced with a choice &#8211; select a less desireable beverage, or request my money back and try to satisfy my user goal in some other way.</p>
<p>The differences in these two possible procedures indicate that there is a conflict between the corporate goal and the user goal.  With the first procedure, the &#8220;Sell a beverage&#8221; goal is given more importance, because it makes me more likely to purchase a beverage that I don&#8217;t particularly want.  My utility is potentially sacrificed, while the owner of the vending machine is just as satisfied.</p>
<p>By failing to tell me that I can&#8217;t get what I want, until I&#8217;m further invested in the process, I am more likely to purchase something else.  That purchase creates just as much value for the owner of the vending machine, but less value for me.</p>
<p>If the vending machine owner had allowed me to use the second procedure, it would demonstrate that the  owner believed the improved customer experience, while risking the loss of this sale, would encourage me to purchase more over time.  The owner would have been prioritizing the requirements and design that supported the user goal ahead of those supporting the corporate goal &#8211; in hopes that my user loyalty would result in <a title="how word of mouth works" href="http://tynerblain.com/blog/2007/09/18/dynamics-of-word-of-mouth/">better word of mouth</a> (more business from other people) and <a title="usability sells software" href="http://tynerblain.com/blog/2007/01/10/usability-sells-software/">more business from me</a> over time.</p>
<h2>Generalizing User and Corporate Goal Conflicts</h2>
<p>In this vending machine example, the annoying procedure is <em>probably</em> the right one &#8211; I&#8217;m going to treat the &#8220;point of use vending of cold, caffeinated beverages&#8221; as a commodity product.  This market has a very low barrier to entry, and relatively small problem being solved.  I&#8217;m not going to tell my friends about how much I love the vending machines from Joey&#8217;s Vending and encourage them to go out of their way to find and use those machines.  Nor will I purchase more Diet Mountain Dew because the emotional cost of the occasional &#8220;sold out&#8221; scenario is trivially smaller with Joey&#8217;s machines.  I would, however, be more likely to buy a Diet Pepsi when I&#8217;ve already invested time in the process and put my money in the machine &#8211; especially when the alternative is to find a water fountain.  I&#8217;m emotionally invested at this point.</p>
<p>However, this experience did jump out at me as one that is worth explicit consideration when defining requirements and designing solutions.  It does come up regularly.</p>
<p>The new iPhone 3GS hardware allows tethering (using the phone as an internet-connection device for your laptop).  ATT (the exclusive carrier for iPhones in the USA) is indicating that they will charge customers an extra monthly fee for this capability, when they eventually allow it on their network.  The user already has a data plan, and the traffic that ATT would have to carry is just &#8220;data.&#8221;  The user just wants it to work.  ATT, however, may want more money, or may want to limit data traffic on its network &#8211; perhaps to improve the quality of service to all customers.  This could be ATT&#8217;s corporate goal of &#8220;provide better service quality&#8221; conflicting with the user&#8217;s &#8220;increase the flexibilty of how I use my data plan.&#8221;  The former would likely influence customer satisfaction (and abandonment) over time, while the latter would influence customer acquisition rates.  Another conflict in goals.</p>
<p>Think about how different goals can lead to conflicting solutions, requirements, and designs.  And tell me when you&#8217;re out of Diet Mountain Dew before I&#8217;m emotionally invested in the purchase.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+User+Goals+and+Corporate+Goals+http://bit.ly/df3j0+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/06/22/user-goals-and-corporate-goals/&amp;t=User+Goals+and+Corporate+Goals" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/06/22/user-goals-and-corporate-goals/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Advanced PERT Estimation</title>
		<link>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/</link>
		<comments>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 03:30:54 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[advanced pert]]></category>
		<category><![CDATA[pert estimate]]></category>
		<category><![CDATA[pert estimation]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=959</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F18%2Fadvanced-pert-estimation%2F", "shorturl": "http://bit.ly/aJU10m", "style": "big", "title": "Advanced PERT Estimation" });

Creating a PERT estimate for a single task is both easy and straightforward.  Creating an estimate for a set of tasks is still easy, but requires a little bit of math.  Combining PERT estimates for tasks is easy, but not as obvious. [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F06%252F18%252Fadvanced-pert-estimation%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FaJU10m%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Advanced%20PERT%20Estimation%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F06%2F18%2Fadvanced-pert-estimation%2F", "shorturl": "http://bit.ly/aJU10m", "style": "big", "title": "Advanced PERT Estimation" });</script></div>
<p><img class="alignnone" title="PERT estimation graphic" src="http://sehlhorst.smugmug.com/photos/566812677_gquRw-L.jpg" alt="" width="250" height="63" /></p>
<p>Creating a PERT estimate for a single task is both easy and straightforward.  Creating an estimate for a set of tasks is still easy, but requires a little bit of math.  Combining PERT estimates for tasks is easy, but not as obvious.  Roll up your sleeves and dive in.</p>
<p><span id="more-959"></span></p>
<h2>PERT Estimate Refresher</h2>
<p>When estimating how long it will take you to complete a task, you shouldn&#8217;t estimate with a single value like &#8220;four hours.&#8221;  &#8220;Four hours&#8221; does not provide enough information.  Estimates reflect that there is uncertainty, and that single value does not give you any insights into <em>how</em> uncertain your estimate is.  Your estimate could be &#8220;four hours plus or minus one hour&#8221; or it could be &#8220;at least four hours, maybe as much as sixteen hours.&#8221;</p>
<p>A PERT estimate, as we showed in our earlier <a title="PERT estimation tutorial" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">PERT estimation article</a> represents a distribution of likely effort for a particular task.  To create a PERT estimate, you create three values -</p>
<ol>
<li>The &#8220;best case&#8221; (shortest) amount of time it will take to complete the task.</li>
<li>The most likely amount of time it will take to complete the task.</li>
<li>The &#8220;worst case&#8221; (longest) amount of time it will take to complete the task.</li>
</ol>
<p>A PERT estimate is presented in the form &#8220;Best Case / Most Likely Case / Worst Case.&#8221;  If your estimate is &#8220;four plus or minus two hours&#8221; you would write 2/4/6 as a PERT estimate.  Sharing &#8220;2/4/6&#8243; as an estimate still doesn&#8217;t tell anyone else what you mean.  A PERT estimate embodies some probability around completion time.  You are precisely saying (for a 2/4/6 PERT estimate):</p>
<ol>
<li>There is a less than 1% chance that this task will take less than 2 hours.</li>
<li>There is a 50% chance that this task will take less than 4 hours.</li>
<li>There is a greater than 99% chance that this task will take less than 6 hours.</li>
</ol>
<p>This explicit statement of probabilities represents a <em>distribution</em> of likely outcomes.  Statisticians would phrase it in a confusing (but mathematically important) way.  They would say &#8220;if we sampled a large population of people (like you) doing this task, no more than 1% of them would complete the task in under 2 hours, no more than 1% of them would spend more than 6 hours on this task, and half of the people would complete the task in under 4 hours.&#8221;  For the purpose of estimation, you can ignore the statistic-speak and just look at the &#8220;odds&#8221; of how long it will take you to complete the task once.</p>
<p><img class="alignnone" title="pert distribution" src="http://sehlhorst.smugmug.com/photos/567766108_8mN5Z-L.png" alt="" width="450" height="327" /> [<a title="larger pert distribution" href="http://sehlhorst.smugmug.com/photos/567766126_tVW8t-L.png">larger image</a>]</p>
<p>If you were to create a histogram of thousands of executions of the task, it would look like the diagram above.  This is the traditional bell curve shape we are used to associating with a <em>normal</em> distribution, but it actually represents a PERT estimate.  A PERT estimate is a distribution of possible outcomes, based on a <em><a title="beta distribution" href="http://en.wikipedia.org/wiki/Beta_distribution">beta </a></em><a title="beta distribution" href="http://en.wikipedia.org/wiki/Beta_distribution">distribution</a>.  Another way to look at a PERT estimate is in terms of cumulative probability of a task being completed.  The same data in the graph above, when presented as a cumulative distribution function (CDF) looks like the following:</p>
<p><img class="alignnone" title="PERT estimate cumulative distribution function" src="http://sehlhorst.smugmug.com/photos/567772935_mTdZP-L.png" alt="" width="450" height="327" /> [<a title="PERT estimate CDF - large" href="http://sehlhorst.smugmug.com/photos/567772949_MtdxD-L.png">larger image</a>]</p>
<p>Here&#8217;s the rub &#8211; you don&#8217;t <em>really</em> know if the beta distribution is the right one.  Primarily because you can&#8217;t precisely know the actual probabilities.  So, you have to pick a distribution function to represent those probabilities.  There is debate about the right distribution function to use for estimation &#8211; check out this <a title="beta analysis" href="http://som.umflint.edu/yener/PERT%20Completion%20Times%20Revisited.htm">great article for hard core stats guys</a>.  Here&#8217;s a cautionary warning from their conclusions:</p>
<blockquote><p>Although bias stemming from misspecified activity time probability models is rarely mentioned in introductory discussions, we have seen several instances of this bias in simple examples. First, and perhaps most important is the uncertainty as regards the underlying activity time probability models. The literature offers no less than five procedures for translating the subjective estimates (a,m,b) into specific β-distributions. As shown, the methods lead to distinct β-distributions, and the PERT approximation need not satisfactorily estimate any of them.</p></blockquote>
<p>Essentially, they are saying &#8220;you can&#8217;t <em>really</em> know the right shape for a distribution curve of possible outcomes &#8211; so don&#8217;t get carried away.&#8221;  And they then go on to suggest using a simpler model than the beta distribution for estimation.  Their suggestion is to use a triangular distribution (looks like a triangle, instead of a bell curve), because the math is easy.  With spreadsheets, we can still do &#8220;easy&#8221; math with a better distribution</p>
<p>The beta distribution for a symmetrical PERT estimate looks very much like a normal distribution.  You can see this by comparing the cumulative distribution function of the PERT and normal models for this 2/4/6 example.</p>
<p><img class="alignnone" title="pert cumulative distribution function" src="http://sehlhorst.smugmug.com/photos/567112729_MELZ3-L.png" alt="" width="450" height="327" /> [<a title="pert estimate cumulative distribution function" href="http://sehlhorst.smugmug.com/photos/567112714_5k4F5-L.png">larger image</a>]</p>
<p>Based on this similarity in distribution, and the inherent uncertainty in what the shape of the distribution really looks like, there are some benefits to treating the PERT estimate (2/4/6) as a normal distribution where the high and low values represent +/- 3 sigma bounding.  This approximation provides us some benefits when aggregating individual task estimates into combined project estimates.</p>
<p><strong><em>Continued on the next page&#8230;</em></strong></p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Advanced+PERT+Estimation+http://bit.ly/19rcok+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/&amp;t=Advanced+PERT+Estimation" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Personas Make Blue Ocean Strategy Proactive</title>
		<link>http://tynerblain.com/blog/2009/04/29/personas-and-blue-oceans/</link>
		<comments>http://tynerblain.com/blog/2009/04/29/personas-and-blue-oceans/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 15:57:34 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[blue ocean]]></category>
		<category><![CDATA[blue ocean persona]]></category>
		<category><![CDATA[blue ocean strategy]]></category>
		<category><![CDATA[persona]]></category>
		<category><![CDATA[personas]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=912</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F04%2F29%2Fpersonas-and-blue-oceans%2F", "style": "big", "title": "Personas Make Blue Ocean Strategy Proactive" });

Blue Ocean Strategy provides an interesting reactive analysis of companies and markets.  Personas are used to understand your customer&#8217;s needs.  Combining the two provides powerful proactive insights when positioning your product for market success.
Blue Ocean Strategy
The book, Blue Ocean Strategy: How to Create [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F04%252F29%252Fpersonas-and-blue-oceans%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Personas%20Make%20Blue%20Ocean%20Strategy%20Proactive%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F04%2F29%2Fpersonas-and-blue-oceans%2F", "style": "big", "title": "Personas Make Blue Ocean Strategy Proactive" });</script></div>
<p><img class="alignnone" title="personas in the blue ocean" src="http://sehlhorst.smugmug.com/photos/524127888_QioQj-L.jpg" alt="" width="187" height="250" /></p>
<p>Blue Ocean Strategy provides an interesting reactive analysis of companies and markets.  Personas are used to understand your customer&#8217;s needs.  Combining the two provides powerful proactive insights when positioning your product for market success.</p>
<h2><span id="more-912"></span>Blue Ocean Strategy</h2>
<p>The book, <a title="Blue Ocean Strategy at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/1591396190/tbrb-20">Blue Ocean Strategy: How to Create Uncontested Market Space and Make Competition Irrelevant</a>, by Kim and Mauborgne, was written in 2005.  The book presents a very compelling way to visualize competition in your market by contrasting the emphasis (or effectiveness) of each company at solving particular problems.  The authors argue that <em>red oceans</em> are competitive markets where companies compete to solve the same problems for the same customers.  Their main idea is that by identifying (and solving) unaddressed problems, you can define a new market &#8211; a <em>blue ocean</em> with no relevant competitors.  The &#8220;red&#8221; in their metaphor implies blood in the water, caused by cut-throat competition.  Their position &#8211; by defining a new market boundaries with no competition, you eliminate the blood in the water and give yourself a calm, blue ocean in which to navigate your company.</p>
<p>This is a compelling idea, and has a lot of merit.  The <a title="smarter product managers book club" href="http://www.booksprouts.com/club/show/426?show_all=false">Smarter Product Managers book club</a> (started by <a title="The Experience is the Product - Cindy's great blog" href="http://www.cindyalvarez.com/">Cindy Alvarez</a>) reviewed this book last month, and one conclusion we reached during the discussion is that the examples in the book felt &#8220;reverse-engineered.&#8221;  I feel that the lack of prescriptive advice from the authors created a sense of &#8220;<strong>that&#8217;s fine, but how do I apply these ideas proactively?</strong>&#8221;   Some of the examples in the book, like Cirque de Solei and Southwest Airlines, felt very compelling (and are often cited), while others felt a bit more contrived.  Almost as if the authors were searching for data to support their arguments &#8211; a big no-no for product managers.</p>
<h2>Creating a Blue Ocean Strategy Map</h2>
<p>The book presents examples of &#8220;mapping&#8221; markets based upon the strength of the offerings from companies, along different dimensions.  The following example was created by me (and is used throughout this article), but follows the pattern of analysis described in the book.  This is an <em><span style="text-decoration: underline;">unresearched</span>, hypothetical</em> example analysis of the market for vaccuum cleaners &#8211; or more generically, floor cleaning products.</p>
<p> </p>
<p><img class="alignnone" title="vaccuum cleaner market strategy map" src="http://sehlhorst.smugmug.com/photos/524128000_UVoCC-L.png" alt="" width="450" height="327" /> [<a title="Blue Ocean strategy for vaccuum cleaners" href="http://sehlhorst.smugmug.com/photos/524127962_nvEdU-O.png">larger image</a>]</p>
<p>The diagram above identifies seven dimensions by which you could characterize the offerings from each company.</p>
<ul>
<li>Breathe Easier / Anti-Allergen &#8211; sometimes, people vaccuum their rugs in order to reduce allergens (by sucking up dust), making it easier for them to breathe in their homes.  Vaccuum cleaners work by sucking up air through the carpet, collecting the dirt (that is sucked up along with the air), and filtering the exhaust air (that is expelled into the room).  Different vaccuum cleaners pay different levels of attention to removing allergens during this cleaning process, by (1) getting the allergens out of the carpet and (2) filtering the allergens out of the exhaust air.</li>
<li>Remove Stains &#8211; one motivation to clean your floor is to remove stains.  This is not generally a focus of vaccuum cleaners, but products like the <em>Green Machine</em> do focus on removing stains, while also &#8220;picking up dirt.&#8221;</li>
<li>Physically Easy to Use &#8211; after back surgery, one of the key pieces of advice my mother received from her doctor was &#8220;no vaccuuming.&#8221;  When you are young and healthy, you don&#8217;t expect vaccuuming to be something that is forbidden by your doctor.  Shoveling snow, climbing a mountain, running a marathon, yes &#8211; but vaccuuming?</li>
<li>Reducing Hassle &#8211; Why don&#8217;t we vaccuum every day?  Because it can be a hassle to get out the vaccuum, set up the equipment, and actually use it.  When you reduce the hassle involved in vaccuuming, you are likely to vaccuum more often, thereby realizing more benefits from vaccuuming.</li>
<li>Saving Time &#8211; Hassle is not the only barrier to vaccuuming.  If you could vaccuum your house in 5 minutes instead of 105 minutes, you would do it more often.  As a teenager, I used to jog behind the lawn mower, just to get the yard done so I could move on to other things.</li>
<li>Reliability &#8211; While reliability is not a major factor when vaccuuming your house (once), it is a key component of making purchasing decisions &#8211; because you don&#8217;t vaccuum just once.  The more you vaccuum, the more you care about reliability.  This is also an indirect cost factor &#8211; a vaccuum cleaner that has to be frequently repaired or replaced will cost more <em>per year</em> than one that has the same purchase price and is more reliable.  This is also an indirect hassle factor &#8211; you may delay vaccuuming your home until you can make time to get a broken vaccuum cleaner repaired.</li>
<li>Avoiding Cost &#8211; A direct focus on cost is primarily driven by purchase price.  Other factors (like reliability, and the cost of replacement bags or filters), but people place greater emphasis on purchase price when thinking about cost.  Consumer Reports and other &#8220;product review&#8221; companies will often &#8220;do the math&#8221; for you, taking into account all of the post-purchase costs to calculate total-cost-of-ownership.</li>
</ul>
<p> </p>
<p>The above diagram, with <em>fictitous </em>values for &#8220;Strength of Competitive Offering&#8221;, shows the competitive landscape for the vaccuum cleaner market.  One of the very powerful features of this visualization is that the Roomba faces &#8220;no competition&#8221; from the other companies in three of the seven categories &#8211; Ease of Use, Hassle, and Time.  A Blue Ocean Strategy analysis would say that the Roomba has created their own market, with an absense of competition.</p>
<p>This gets back to our insight that the examples felt &#8220;reverse engineered.&#8221;  The Roomba does have a dramatically different value-proposition, and focused on dimensions that are not addressed by their competition.  So why isn&#8217;t the Roomba in the book?  Because they still compete in the red ocean.  Unlike Southwest Airlines, they did not differentiate their offering in a <em>relevant</em> way.  And that&#8217;s the problem we found in trying to apply the principles from the book.  </p>
<p>It is not enough to be innovative and differentiated, which the Roomba certainly is, you have to be <em><a title="differentiation versus improvement" href="http://tynerblain.com/blog/2006/05/24/differentiation-vs-improvement/">valuably differentiated</a></em>.</p>
<p>So how do you differentiate valuably and proactively?  Identify the problems that your customers value, but don&#8217;t yet have solutions for.  How do you do that?  With personas.</p>
<h2>Personas</h2>
<p>Personas represent customers in your target markets.  Markets are not homogenous &#8211; different people in your markets value different things for different reasons.  You <a title="how to develop personas" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">develop personas</a> as archetypes to represent subsets of the customers in a given market who share common problems.  More concretely, <a title="persona development examples" href="http://tynerblain.com/blog/2006/04/17/persona-grata/">personas share common </a><em><a title="persona development examples" href="http://tynerblain.com/blog/2006/04/17/persona-grata/">valuations</a></em> of shared problems.</p>
<p>To combine persona development with the market-mapping concept from <em>Blue Ocean Strategy</em>, create the same map, but for personas.  Instead of identifying the strength of each company/product along each dimension, identify how much each persona cares about each particular dimension.</p>
<p><img class="alignnone" title="persona priorities in blue ocean market map" src="http://sehlhorst.smugmug.com/photos/524128075_PSzSg-L.png" alt="" width="450" height="327" /> [<a title="mapping persona prioritization to blue ocean strategy map" href="http://sehlhorst.smugmug.com/photos/524128038_Thp76-O.png">larger image</a>]</p>
<p>In the chart above, I&#8217;ve created 6 hypothetical personas who populate our market:</p>
<ul>
<li>Single Parent &#8211; the classic superman / superwoman who does everything, including keeping the house clean.</li>
<li>Housekeeper &#8211; someone employed to keep someone else&#8217;s house clean.</li>
<li>Office Cleaner &#8211; the person who vaccuums your office at 2am every night and picks up all the empty Diet Coke cans and Twinkee wrappers.</li>
<li>Kid (Doing Chores) &#8211; most kids won&#8217;t ask for a vaccuum cleaner for their birthday, but when you child is responsible for vaccuuming, do you want a battle every week because they hate it?</li>
<li>Homeowner &#8211; like the single parent, but maybe without kids, and definitely with fewer responsibilities (and more time).</li>
<li>Retiree &#8211; like the homeowner, but with a lot more time, and a less robust physical condition.</li>
</ul>
<p>[Note - the above examples are really <a title="doing personas correctly" href="http://tynerblain.com/blog/2006/12/14/overdoing-personas/">stereotypes and not personas</a> (there is no research to back them up - they are entirely fictional) - don't fall into the trap of thinking persona development is this easy.]</p>
<p>OK, now we have an understanding of how much importance each persona places on each dimension.  It looks like a mess, for this example, when you try and absorb the big picture.  If you focus on a single persona, you get great clarity about what that type of customer cares about.  Look at each curve individually, then look at them all together.  If you&#8217;re thinking ahead, you&#8217;ll suspect that the Roomba is perfect for the kid doing chores.  But wait, we&#8217;ll come back to that.</p>
<p>One insight we can gain from this <em>messy</em> view of the market is that you can&#8217;t create a product that is &#8220;perfect&#8221; for all of these personas.  You have to target a specific persona, and tailor your product for that persona.</p>
<h2>Mapping Personas to Products</h2>
<p>Now we have two views of the market, along 7 dimensions.  We have assessments of the relative strength of each competitor&#8217;s offering, and we have estimates of the relative importance to each persona &#8211; for each dimension.  What we need to do is combine the two.</p>
<p>All of this analysis runs the risk of introducing a notion of <em>false precision</em> - we have a lot of data, therefore it must be accurate.  So our inclination may be to try and do some mathematically refined, scientific analysis.  I suspect that would be wasted effort, providing no additional insights, and risking leaps to the wrong conclusions.  I propose a simpler approach.</p>
<p>The analysis we really care about &#8211; which product offering is best aligned with the needs of each persona?  A simple mathematical equivalent of &#8220;which curves match the best&#8221; is an easy analysis.  By comparing the values from each competitor curve with those of each persona curve, we can create a series of &#8220;how good a fit is it?&#8221; values.</p>
<p><img class="alignnone" title="visualizing product alignment with persona goals" src="http://sehlhorst.smugmug.com/photos/524127860_uNRbS-L.png" alt="" width="450" height="327" /> [<a title="mapping product value propositions to persona goals" href="http://sehlhorst.smugmug.com/photos/524128112_dHtNH-O.png">larger image</a>]</p>
<p>Imagine a persona saying &#8220;how well does each company&#8217;s product align with my goals?&#8221;  This &#8220;simple math mashup&#8221; takes into account both &#8220;they succeed at what I care about&#8221; and &#8220;they haven&#8217;t invested in something I don&#8217;t care about (at the expense of something I do care about).&#8221;</p>
<p>You can see that the Roomba clearly wins with kids doing chores.  The rest of offerings stand out less, but do provide insight.  Now you can easily drive strategic decisions &#8211; &#8220;we want to be <em>the</em> vaccuum of choice for housekeepers&#8221; now drives some obvious emphasis on ease of use and a reduced emphasis on reducing costs.</p>
<h2>Improving The Model</h2>
<p>My two main problems with the blue ocean strategy were lack of relevance (who cares about dimension X) and magnitude (which dimension is most important?).  The model above addresses only relevance &#8211; a focus on target personas.  We can overlay some &#8220;relative importance of each persona&#8221; data, or just manually focus our efforts on each persona in series.  </p>
<p>The other <em>magnitude</em> challenge is in understanding not just which problems are important in absolute terms (kids care a lot about saving time, but not cost), but in relative terms (kids would trade an hour of time for a modicum of ease-of-use).  Essentially, <a title="defining utility curves" href="http://tynerblain.com/blog/2007/02/06/foundation-series-intro-to-utility-curves/">defining the utility-curves</a> for each persona.  For any but the largest, most saturated markets, I would hesitate to do the utility curve analysis in detail &#8211; it feels too heavyweight and un-agile.</p>
<h2>Conclusion</h2>
<p>The <em>Blue Ocean Strategy</em> book provides us with a visceral tool for visualizing relative offerings from competitors in a given market.  Combine it with the same visualization approach for personas that participate in that market, and you gain insights into which problems to solve next to achieve product success.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Personas+Make+Blue+Ocean+Strategy+Proactive+http://bit.ly/H1WLe+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/04/29/personas-and-blue-oceans/&amp;t=Personas+Make+Blue+Ocean+Strategy+Proactive" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/04/29/personas-and-blue-oceans/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Failure To Launch (Your Product)</title>
		<link>http://tynerblain.com/blog/2009/02/19/failure-to-launch/</link>
		<comments>http://tynerblain.com/blog/2009/02/19/failure-to-launch/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 22:21:37 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Ishikawa Diagram]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[ishikawa]]></category>
		<category><![CDATA[launch]]></category>
		<category><![CDATA[product launch]]></category>
		<category><![CDATA[root cause analysis]]></category>
		<category><![CDATA[start-up]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=835</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F19%2Ffailure-to-launch%2F", "style": "big", "title": "Failure To Launch (Your Product)" });

Jump forward in time to the day of your next big product launch (first release, new features, new market segment, etc).  And your site/application crashes due to the &#8220;unexpected&#8221; demand.  All you can do now is look for a bucket of water to put [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F02%252F19%252Ffailure-to-launch%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Failure%20To%20Launch%20%28Your%20Product%29%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F19%2Ffailure-to-launch%2F", "style": "big", "title": "Failure To Launch (Your Product)" });</script></div>
<p><img class="alignnone" title="rocket launch failure" src="http://sehlhorst.smugmug.com/photos/476802889_vAUQs-L.jpg" alt="" width="250" height="186" /></p>
<p>Jump forward in time to the day of your next big product launch (first release, new features, new market segment, etc).  And your site/application crashes due to the &#8220;unexpected&#8221; demand.  All you can do now is look for a bucket of water to put out the fire.  What could you have done to prevent this disaster?  Jump back to today and start doing it!</p>
<h2><span id="more-835"></span>Backwards Planning</h2>
<p>Depending on how you look at things, this is a backwards planning exercise, or a variation of the  <em><a title="remember the future - innovation games book excerpt" href="http://800ceoread.com/excerpts/archives/006538.html">remember the future</a></em><a title="remember the future - innovation games book excerpt" href="http://800ceoread.com/excerpts/archives/006538.html"> innovation game</a>, or risk management, or proactive product management.  You can avoid a disaster by imagining what might happen, then hypothetically figuring out why it (would have) happened.  That leads to planning how you could prevent it.  And now you&#8217;ve left the dream world of a <a title="gedanken experiments" href="http://en.wikipedia.org/wiki/Thought_experiment">Gedanken experiment</a> and returned to the real world of product management.</p>
<h2>Problem Triage</h2>
<p>The way to approach this is straightforward.  Imagine some failure scenarios and the importance of preventing them:</p>
<p> </p>
<ol>
<li>Imagine a failure scenario.</li>
<li>&#8220;Predict&#8221; the likelihood of the failure.</li>
<li>&#8220;Estimate the impact of the failure.</li>
<li>Repeat for each scenario</li>
</ol>
<p>You can prioritize your failure scenarios by multiplying the likelihood of each with the impact of each, and sorting them from largest to smallest.  Then determine which ones you&#8217;re willing to address, and which ones you&#8217;re willing to risk.  You may not be able to predict the likelihood of some failures (at least until you do a root cause analysis).  Take each of these and put them directly above the scenario with the next highest impact.  The rationalle is that these are so bad, that you really want to find out how likely they are to happen.  Once you predict likelihood (see below) you can reprioritize.</p>
<h2>Root Cause Analysis</h2>
<p>For the failure scenarios you choose to address, the next step is to do a root cause analysis that identifies why it might have happened.  The best tool for capturing this analysis is an <a title="ishikawa diagrams" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">Ishikawa diagram</a>.  Consider that one problem you might face is your website crashing.</p>
<p><img class="alignnone" title="base problems ishikawa" src="http://sehlhorst.smugmug.com/photos/476855598_rsvGg-O.png" alt="" width="450" height="275" />[<a title="larger ishikawa diagram" href="http://sehlhorst.smugmug.com/photos/476855601_kAYeo-L.png">click for larger version</a>]</p>
<p>Essentially, you can crash your site by having too many users, too many concurrent users, or too many concurrent sign-ups.  Developing a cause-and-effect diagram (another name for an Ishikawa diagram) is usually an iterative and exploratory process.  You probably won&#8217;t create the simple version above first.  You may ask your implementation team &#8220;What can cause the website to crash?&#8221;  For each of their answers, you identify when that situation can happen.  Or you start top down.  Most likely, a mix of the two.  Your completed root cause analysis may look like the following:</p>
<p><img class="alignnone" title="complete failure analysis" src="http://sehlhorst.smugmug.com/photos/476855607_Vwh58-O.png" alt="" width="450" height="230" />[<a title="larger root cause analysis diagram" href="http://sehlhorst.smugmug.com/photos/476855612_J5jvk-L.png">click for larger version</a>]</p>
<p>At this point, your team can probably predict many (maybe all) of the root causes of a website crash.  The predictions may be conditional &#8211; &#8220;we can handle 10 concurrent users, but 20 probably kill us, and 100 definitely would.&#8221;  Developers are notoriously good at answering questions with conditional statements that reveal the nuances of their thinking.</p>
<p>Remember that you&#8217;re looking back from the future.  At product launch, what are you hoping for / reasonably expecting?  For this example, assume it is 10,000 total users, with 100 concurrent users (normally) and 500 concurrent signups.  You determine these numbers by working with your PR, marketing, or mar-com people (or wearing those hats, when it is all you).  Your plan is to do a big launch with a demo and a promo code for signup.  You know your audience will have internet connections, and will have twitter running at the time of your presentation.  You expect/dream of an immediate burst of signups, followed by tweets and word of mouth, and eventually blog articles causing additional growth over the next couple of weeks.</p>
<p>Use this data to feed back into the developer&#8217;s conditional responses.  If you&#8217;re like me, you will have found &#8220;absolute certainty of failure&#8221; from something.  And you may have even identified the thresholds for each element.  For example, database loading can handle 75 concurrent users, but with the current implementation, you only have enough database connections available to support 25 concurrent users.</p>
<p>Jumping back to the present, you now have some very discrete, and very important things to do before your launch.  If you need to, revisit the prioritized list of failure scenarios.  By looking at the next level of detail, have you found that the order of importance (to fix) has changed?  What about the &#8220;must fix&#8221; versus &#8220;willing to risk&#8221; line?  Has it moved?</p>
<p>Fold the &#8220;must fix&#8221; items into your backlog, and prioritize them relative to the other capabilities on your roadmap.  As a side note &#8211; make sure you&#8217;ve built in some testing to make sure you actually prevent the problems.  This might even be a great opportunity to implement &#8220;performance regression tests&#8221; &#8211; it is not enough to prevent bugs, you have to prevent slowdowns.</p>
<h2>Rethinking the Problem</h2>
<p>Without going into details on <em>how</em> the team will solve each problem, make sure that together you keep the Ishikawa diagrams in mind, and see how any proposed solutions might &#8220;reappear&#8221; on the diagram.  For example, rewriting your database connections to use asynchronous processes and a set of pooled connections may prevent a crash, but it may really hurt performance.  You may not have time to find an elegant solution.  So stop and rethink the problem.</p>
<p>At this point, you&#8217;ve said</p>
<ol>
<li>Given a marketing plan / launch strategy, we would crash the website.</li>
<li>We can make changes between now and the launch that will double the number of concurrent users we can support (or whatever), but that is not enough to support the launch strategy.</li>
<li>Solution: Change the launch strategy.</li>
</ol>
<p>Maybe you can&#8217;t support a wide-open promo-code based signup.  You should modify your launch so that it can only create as much demand as your product (including pending improvements) can support.  Maybe you limit it to the first 1,000 new users (probably more code to write to enforce the limit).  Maybe you launch with per-user invitations, where you can control the speed of propagation of invites (start with 100, when those have been sent, make another 100 available, etc).</p>
<h2>Entire Team Problem</h2>
<p>This is a problem that is solved collaboratively, by the entire team.  It is not just a &#8220;go write the code&#8221; problem.  What your product can support at a launch should drive how you choose to launch, just as how you choose to launch should drive what you want your product to support.  </p>
<p>You may have to delay a key capability in order to scale.  Does your marketing team know this?  Slightly less bad than crashing would be announcing a feature that is disabled.  Still need to announce the feature?  Pre-announce it: &#8220;Coming in a month&#8230;&#8221;</p>
<p>This stuff is important for every company and product, but it is especially critical for start-ups.  As a start-up, you have limited opportunities to grow, and a limited safety-net to catch you when you fail to capitalize on those opportunities.  So make sure everyone (not just the development team) is aligned to make the best use of each opportunity.</p>
<h2>Conclusion</h2>
<p>You have an opportunity to prevent problems.  All you have to do is imagine that they have happened in the future, figure out why they would have happened, then do what it takes (in software, or organizationally) to prevent them.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Failure+To+Launch+%28Your+Product...+http://bit.ly/Zw6ow+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/02/19/failure-to-launch/&amp;t=Failure+To+Launch+%28Your+Product..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/02/19/failure-to-launch/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Agile Non-Functional Requirements</title>
		<link>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/</link>
		<comments>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 15:25:03 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[agile non-functional requirements]]></category>
		<category><![CDATA[backlog]]></category>
		<category><![CDATA[non-functional requirements]]></category>
		<category><![CDATA[sprint]]></category>
		<category><![CDATA[user story]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=822</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F10%2Fagile-non-functional-reqs%2F", "style": "big", "title": "Agile Non-Functional Requirements" });

Just because your requirement is not a user story does not mean you have to throw it out when planning your next sprint.  See one way (that is working) for managing non-functional requirements with an agile team.
Product Backlog Stories
Every article* I can remember reading that explains [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F02%252F10%252Fagile-non-functional-reqs%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Non-Functional%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F10%2Fagile-non-functional-reqs%2F", "style": "big", "title": "Agile Non-Functional Requirements" });</script></div>
<p><img class="alignnone" title="scrum" src="http://sehlhorst.smugmug.com/photos/470928385_DweZA-L.jpg" alt="" width="197" height="250" /></p>
<p>Just because your requirement is not a user story does not mean you have to throw it out when planning your next sprint.  See one way (that is working) for managing non-functional requirements with an agile team.</p>
<h2><span id="more-822"></span>Product Backlog Stories</h2>
<p>Every article* I can remember reading that explains how to manage a product backlog talks about user stories.  Those articles are necessary, but not sufficient .  You&#8217;ll create better products by developing them from the outside-in, with a user-centric point of view.</p>
<blockquote><p>*One loophole &#8211; scheduling refactoring (or the payback of technical debt).  A lot of articles talk about the need to do this, and refactoring is pretty much the opposite of a user story, since by definition, refactoring improves the software without introducing new capabilities.  The best idea I&#8217;ve come across for incorporating refactoring as part of a sprint is to write a user story, with <em>the system</em> as the user, and the lead architect / developer as the primary stakeholder.  This actually works really well, but it works by treating the work <em>as a </em>user story.</p></blockquote>
<h2>Atomicity</h2>
<p>What is really important, when scheduling sprints (or releases, if you are not doing scrum) is that you are scheduling solutions to atomic, <a title="writing measureable requirements" href="http://tynerblain.com/blog/2006/06/13/writing-verifiable-requirements/">measureable</a>, <a title="writing valuable requirements" href="http://tynerblain.com/blog/2006/05/30/writing-valuable-requirements/">valuable</a> <a title="defining problems with Ishikawa diagrams" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">problems</a>.  <a title="writing atomic requirements" href="http://tynerblain.com/blog/2006/06/14/writing-atomic-requirements/">Atomicity </a>is the reason for breaking epics (really big stories) up into smaller stories.  It is also important that you communicate them unambiguously.  That might mean writing user stories or <a title="when to write use cases instead of user stories in an agile project" href="http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/">writing use cases instead of user stories</a>, when things are complicated.</p>
<p>The problem is, not every atomic requirement can be represented with a user story.  Some things that <a title="kano analysis and must-have requirements" href="http://tynerblain.com/blog/2006/02/27/prioritizing-software-requirements-kano-take-two/"><em>must be</em></a>, are not stories.</p>
<h2>Non-Functional Requirements</h2>
<p><img class="alignnone" title="twitter fail whale" src="http://sehlhorst.smugmug.com/photos/470952470_cAPgM-L.png" alt="" width="400" height="300" /></p>
<p>Non-functional requirements always seem to be under-emphasized when writing requirements.  The Twitter <em>fail whale</em> has become famous, because twitter could not scale to meet the demands of a rapidly growing user base.  Maybe the Twitter team planned for scalability, but demand simply outstripped it.  Or maybe they failed to plan for it.  Either way, they failed to meet the non-functional requirements of supporting the growth that they did have.  (Un)Luckily, this type of problem self-corrects.  Scaling failures drive away users, reducing the need to scale, until balance is achieved.</p>
<p>Product managers and business analysts tend to neglect non-functional requirements.  Unfortunately, this is especially true when managing with a focus on users and their goals.  Not because goals don&#8217;t drive non-functional requirements &#8211; they do.  I believe this has happened because historically, non-functional requirements were treated as an after-thought.  In reality, they are explicitly driven by goals.  I proposed an <a title="non-functional requirements" href="http://tynerblain.com/blog/2006/05/23/non-functional-requirements-era/"><em>equal rights amendment</em> to the structured requirements domain model</a> almost three years ago.  In short, it explicitly calls out the relationship between goals and non-functional requirements.</p>
<p><img class="alignnone" title="non-functional requirements domain model" src="http://sehlhorst.smugmug.com/photos/71264266-M.jpg" alt="" width="567" height="450" /></p>
<h2>Agile Non-Functional Requirements</h2>
<p>Getting non-functional requirements into your sprint planning is actually not that hard.  You only have to make two tiny adjustments to get from the waterfall world to the agile world.</p>
<p>The first adjusment is that you have to treat non-functional requirements incrementally.  Non-functional requirements often affect <em>all</em> of the other requirements &#8211; so they seem massive and unweildy.  You have to decompose them.  Consider the platform-compatibility requirements for a web application.  You may have to support IE6,7,8; Safari on Windows, Safari on OS X, and Firefox on Windows XP and Vista.  That could be incredibly daunting.  So break it down.  Your first group of users (key persona) are primarily Firefox/XP users.  So the first platform you support is that one.  The next big platform for your persona group is Safari on OS X.  Add support for that next without breaking the previous support for FF/XP.  With each release, you add a platform (or two, or none).  You are conspicuoulsy addressing the needs of your target users.  The key is that once support is added for a platform, all future development is required to &#8220;not break it.&#8221;</p>
<p>Each non-functional requirement is cumulative.  This is the second adjustment.  All development, once a non-functional requirement is in place, must continue to honor it.  You wouldn&#8217;t break a previously released capability (functional requirement), so don&#8217;t break a non-functional requirement.  You have to determine, in each sprint, if additional functionality is more important than additional platform support.  And add in the platforms as they become the most important &#8220;next things to do.&#8221;  In waterfall projects, I&#8217;ve seen many teams break and re-break platform support throughout the development process, with the knowledge that it only has to work &#8220;at the end.&#8221;  Include platform-specific support in your <a title="continuous integration explained" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> tests.</p>
<p>You have a launch event coming up in six weeks.  You have an established user base.  You&#8217;re also developing a key new set of capabilities for your product that you believe will be a big hit and drive significant growth for your product.  You have a small group of people in a private beta, providing you with feedback about the new development.  If you believe the launch will cause your customer base to double very quickly (maybe over a month), how do you plan for that?  This is a serious scalability non-functional requirement.</p>
<p>Break the non-functional requirement up into cumulative requirements.  Assuming your plan is to add 10,000 users &#8220;at once&#8221; &#8211; have your implementation team brainstorm what that could/would mean for the system.  [Also, make sure you coordinate with your community manager and marketing folks, both to validate the anticipated growth, and to device any contingency strategies <em>in advance</em>.]  After talking with your development team, perhaps you learn that &#8220;at once&#8221; is a nuanced proposition.  <em>Literally</em> at once is very bad.  Spread out over a few days, not so bad.  OK &#8211; you can deal with this too.</p>
<p>Imagine you already have the following non-functional requirements in place:</p>
<ul>
<li>The system must be available 24/7, with no more than one hour of down time per day, and no more than one outage per day.</li>
<li>The system must respond in under 2 seconds for &gt;95% of uses [ in key user story].</li>
<li>The system must respond in under 20 seconds for 100% of uses [in same key user story].</li>
</ul>
<p>Based on what we&#8217;ve said above, these non-functional requirements must not be broken.  They essentially define the acceptance criteria for our scalability requirements.</p>
<p>Consider the following as the non-functional requirements that must be deployed by the time of launch (six weeks, or three releases from now):</p>
<ul>
<li>The system must support 10,000 additional users added in the month following SXSW.</li>
<li>The system must support 500 new users signing up and initiating [troublesome user story] within the same hour.</li>
</ul>
<p>Your dev team does not <em>really</em> know exactly what needs to be done &#8211; they just know that the current solution won&#8217;t scale &#8211; it barely meets the existing non-functional requirements.  They propose a couple redesigns that may get the job done.  But they point out the need to actually test that the designs work.  Schedule the following for the first release:</p>
<ul>
<li>The system must support 100 additional private beta users.</li>
<li>The additional users will all have [troublesome user story] initiated within the same hour.</li>
</ul>
<p>The second one is really a pragmatic solution &#8211; artificially creating a spike in demand, to test out the scalability of the new code.  From that data, we can determine what we need to do to hit 10,000 additional users, and to support 500 concurrent [troublesome user story] instances.  By managing expectations of the new users (that you&#8217;re queuing them up to test scalability), you can get the data you need.  And you have a couple more iterations to improve if needed.</p>
<p>As a benefit, you get to completely avoid the fail whale.  The other half of this is making sure you can constrain the rate of new-user sign-ups.  Work with your community manager and marketer to make sure you position this effectively.  You are creating scarcity, which may increase demand.  A crashed server won&#8217;t.  If your team can&#8217;t support 10,000 in time for the launch, plan on 2,500.</p>
<h2>Conclusion</h2>
<p>You can plan and schedule more than just user stories.  And your product will be better for it.  Give those non-functional requirements a chance.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Agile+Non-Functional+Requirements+http://bit.ly/1gyM6C+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/&amp;t=Agile+Non-Functional+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/02/10/agile-non-functional-reqs/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>User Stories and Use Cases</title>
		<link>http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/</link>
		<comments>http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 04:24:15 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[domain context]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[user stories]]></category>
		<category><![CDATA[user story]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=809</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F02%2Fuser-stories-and-use-cases%2F", "style": "big", "title": "User Stories and Use Cases" });

User Stories are one of the key agile artifacts for helping implementation teams deliver the most important capabilities first.  They differ from use cases in some important ways, but share more commonalities than you might think.
User Stories Applied
Mike Cohn wrote User Stories Applied: For [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F02%252F02%252Fuser-stories-and-use-cases%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22User%20Stories%20and%20Use%20Cases%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F02%2F02%2Fuser-stories-and-use-cases%2F", "style": "big", "title": "User Stories and Use Cases" });</script></div>
<p><img class="alignnone" title="story cards" src="http://sehlhorst.smugmug.com/photos/466692212_tCpUr-L.jpg" alt="" width="207" height="250" /></p>
<p>User Stories are one of the key agile artifacts for helping implementation teams deliver the most important capabilities first.  They differ from use cases in some important ways, but share more commonalities than you might think.</p>
<h2><span id="more-809"></span>User Stories Applied</h2>
<p>Mike Cohn wrote <a title="user stories applied at amazon" href="http://www.amazon.com/exec/obidos/ASIN/0321205685/tbrb-20"><em>User Stories Applied: For Agile Software Development</em></a>.  It is <em>the</em> book for understanding how to write, estimate, and use user stories.  If you&#8217;re thinking about trying out &#8220;agile&#8221; for the first time &#8211; and you haven&#8217;t read his book, you need to.  He provides great detail and anecdotes about how to write, manage, and utilize user stories.</p>
<h2>What are user stories?</h2>
<p>A user story is a user-centric description of the goals that one or more people will achieve by using your product.  User stories are applicable whenever there is a person, interacting with an interface to a product, to achieve a goal.  They aren&#8217;t just for software &#8211; even though the tone of this article may imply it (since I live in a software mindset most of the time).</p>
<p>A user story is written in the format</p>
<ul>
<li>As a [<strong>person in a role</strong>] I want to [<strong>perform some activity</strong>] so that [<strong>some goal is achieved</strong>].</li>
</ul>
<p>That&#8217;s it.  No more.  Perfectly <a title="how to write atomic requirements" href="http://tynerblain.com/blog/2006/06/14/writing-atomic-requirements/">atomic</a>, very <a title="writing concise requirements" href="http://tynerblain.com/blog/2006/05/31/writing-concise-requirements/">concise </a>and <a title="writing unambiguous requirements" href="http://tynerblain.com/blog/2006/06/12/writing-unambiguous-requirements/">unambiguous</a>.  Where did this elegant idea come from?</p>
<p>User-centered design (UCD) is <a title="user centered design" href="http://tynerblain.com/blog/2007/02/22/user-centered-design-bridge/">an approach to product design</a> that can almost be considered a philosophy.  In college, I used to say that industrial designers designed things from the outside in, and engineers designed things from the inside out.  The ideal products are the ones that marry form (outside) and function (inside) in an elegant solution that blurs the lines of distinction.  The first designers of engineered products were the engineers, and the first designers of software were the programmers &#8211; they were the only ones who knew what <em>could be</em> accomplished.  Anyone who has used an application with a user interface designed by a database expert can remember what that was like.  Eventually, someone successfully adopted the mindset of designing a product based on what someone could use it <em>to do</em> instead of looking at what it could do and figuring out <em>how to use it</em>.  That under-emphasizes the importance of UCD, but you get the idea.</p>
<p>Out of UCD come different things that really drive how we create products today.  Kessler and Sweitzer focus on understanding these user goals in <a title="focus on goals first" href="http://tynerblain.com/blog/2007/09/27/outside-in/"><em>Outside-In Software Development</em></a>.  <a title="understanding stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">Stakeholder goals</a> drive (arguably, <em>are</em>) requirements.  But it is difficult to develop actionable implementation plans directly from goals.  You need something to bridge that gap.</p>
<p>A user story, in an agile process, bridges that gap.  In Wiegers&#8217; world of <a title="structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">structured requirements</a>, that gap is spanned with use cases.</p>
<p><img class="alignnone" title="structured requirements model" src="http://sehlhorst.smugmug.com/photos/71264266-M.jpg" alt="" width="567" height="450" /></p>
<p>Conceptually, a user story crosses the same chasm as a use case.  A user story defines what people need to accomplish (e.g. faster call processing), in order to achieve the goals of the company (e.g. lower call-center costs), given a solution approach (write software versus outsource to lower-cost call center employees).</p>
<p>Now we find ourselves in a confusing situation &#8211; there are user stories, <a title="use case scenarios" href="http://tynerblain.com/blog/2007/04/12/use-case-vs-test-case/">use case scenarios</a>, and at least three different kinds of use cases &#8211; formal and informal use cases, and use case briefs.  How are they different, and how are they the same?</p>
<h2>Usage Descriptors</h2>
<p>Use cases, use case scenarios, and user stories all document descriptions of how a product will be used.  They vary, along a continuum, in terms of the amount of overhead required to create each.</p>
<p><img class="alignnone" title="overhead of creating use cases" src="http://sehlhorst.smugmug.com/photos/466745248_2KGgn-L.png" alt="" width="450" height="267" /></p>
<ul>
<li><a title="how to read a formal use case" href="http://tynerblain.com/blog/2006/06/26/foundation-series-how-to-read-a-formal-use-case/">Formal use cases</a> require the most effort.  They have a lot of pomp and circumstance going on, but they describe all the permutations of how some person does some activity (or its variations).</li>
<li><a title="informal use cases" href="http://tynerblain.com/blog/2005/12/21/use-case-series-informal-use-case/">Informal use cases</a> are pretty much the same &#8211; just less formal.  The challenge is to provide <em>the right</em> level of detail, without the guide-rails of the formal use case to remind you.</li>
<li><a title="use case brief examples" href="http://tynerblain.com/blog/2007/04/24/apr-use-case-briefs/">Use case briefs</a> have almost no overhead, but have the same &#8220;how much is enough&#8221; challenges of informal use cases, only more so.  Think of it as a single-paragraph description of a formal use case.</li>
<li>User stories have the least overhead, and provide the least context.</li>
</ul>
<p>Use case scenarios are a slightly different breed.  Like a user story, a <a title="use case scenarios" href="http://tynerblain.com/blog/2007/04/12/use-case-vs-test-case/">use case scenario describes one path</a> through a multi-path use case.  But you can&#8217;t (or at least I&#8217;ve never seen anyone) create a use case scenario without first creating the formal use cases.  This artifact basically combines the weakness of a formal use case (high overhead) with that of a user story (limited context).  It can be very handy for developing test cases if your testing team is not well versed in writing test cases.  We&#8217;ll leave use case scenarios out of the rest of the discussion.</p>
<p>The cost of high overhead in documentation comes with a benefit &#8211; increased detail.</p>
<p><img class="alignnone" title="increasing detail in use case formats" src="http://sehlhorst.smugmug.com/photos/466745337_mifdy-L.png" alt="" width="450" height="448" /></p>
<p>Because a user story captures a single path through a use case, while having less overhead, it also captures less detail.  This is ok, because an agile process stresses communication over comprehensive documentation.   You start to run into inefficiencies when the amount of conversation (especially when repeated) is burdensome.  The amount of conversation required is a function of the amount of domain expertise, or context, that the implementation team already has.</p>
<h2>Should I write User Stories or Use Cases?</h2>
<p>It depends on your audience.  The formal and informal use cases, in addition to having more overhead, also provide more context, and allow you to describe more complex usage patterns of your product.  Some uses are so complicated that you have to use a use case to describe them.  Others are so simple that anything other than a story is wasted effort.  The interpretation of <em>complicated</em> and <em>simple</em>, though, is not purely an assessment of what the users want to do &#8211; it varies with the level of domain expertise of your implementation team.</p>
<p><img class="alignnone" title="context required by use case and user story" src="http://sehlhorst.smugmug.com/photos/466745287_bPB2C-L.png" alt="" width="450" height="448" /></p>
<p>Some teams simply aren&#8217;t equipped to consume user stories or use case briefs.  You have to <a title="writing what your readers need" href="http://tynerblain.com/blog/2006/10/04/writing-for-the-purpose-of-reading/">write your requirements for the readers</a>, so you need to know when people are struggling to implement solutions based upon stories or briefs, and give them more structure and formality.  You have to adapt to the realities of your current situation, and the experience of your team.</p>
<p>You could replace the words &#8220;Reader Domain Expertise&#8221; with &#8220;Writer Trust of the Team&#8221; if you wanted, and the graph would look about the same.  This is another concept that is critical to a team working effectively &#8211; trust equates to delegation.</p>
<p>If you can trust your team to come up with a solution that matches the story, delegate that &#8220;next level of detail&#8221; to them.  If you can&#8217;t trust them, then don&#8217;t.  But you should.  One of the benefits of agile is that your team will quickly give you a solution, and then you can give them feedback.  If they don&#8217;t create a solution that meets your interpretation of your user&#8217;s needs, then give them feedback, and they will change it.  The agile process actually relies on this dynamic to allow less-verbose artifacts to still be effective.  Someone on the team will sketch out what the solution will look like, and get your feedback, before implementing.  The more this collaboration happens, the more effective a light-weight document will be.</p>
<h2>Conclusion</h2>
<p>Don&#8217;t just rely on platitudes about stories and use cases.  Think about the nature of the different artifacts.  Think about their strengths and weaknesses.  Consider how you interact with your team.  Should you trust your team?  <strong>Do</strong> you trust your team?  Determine what they need, and give it to them.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+User+Stories+and+Use+Cases+http://bit.ly/3n1Scd+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/&amp;t=User+Stories+and+Use+Cases" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/02/02/user-stories-and-use-cases/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>2009 Bad Usability Calendar</title>
		<link>http://tynerblain.com/blog/2009/01/13/2009bad-usability-calendar/</link>
		<comments>http://tynerblain.com/blog/2009/01/13/2009bad-usability-calendar/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 02:14:50 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[UX]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[2009 bad usability calendar]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=801</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F01%2F13%2F2009bad-usability-calendar%2F", "style": "big", "title": "2009 Bad Usability Calendar" });

Netlife Research brings us the 2009 Bad Usability calendar.  Get it while it&#8217;s hot.

Download it from the 2009 bad usability calendar page on their website.  Or check out our article from last year for the 2007-2008 bad usability calendars.  They really do have some great [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2009%252F01%252F13%252F2009bad-usability-calendar%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%222009%20Bad%20Usability%20Calendar%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2009%2F01%2F13%2F2009bad-usability-calendar%2F", "style": "big", "title": "2009 Bad Usability Calendar" });</script></div>
<p><img class="alignnone" title="bad usability calendar thumbnail" src="http://sehlhorst.smugmug.com/photos/454515968_v6kRJ-L.png" alt="" width="237" height="315" /></p>
<p>Netlife Research brings us the 2009 <em>Bad</em> Usability calendar.  Get it while it&#8217;s hot.</p>
<p><span id="more-801"></span></p>
<p>Download it from the <a title="2009 usability calendar" href="http://www.badusability.com/">2009 bad usability calendar page</a> on their website.  Or check out our article from last year for the <a title="older bad usability calendars" href="http://tynerblain.com/blog/2008/01/31/bad-usability-calendar-2/">2007-2008 bad usability calendars</a>.  They really do have some great points to make.  Two in particular got my attention this year &#8211; any guesses which months?</p>
<p>Last year, over 100K copies were downloaded.  Act now and be on the bleeding edge of the first 2% to download for 2009.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+2009+Bad+Usability+Calendar+http://bit.ly/30EhMV+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/01/13/2009bad-usability-calendar/&amp;t=2009+Bad+Usability+Calendar" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/01/13/2009bad-usability-calendar/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stakeholders in a Barrel</title>
		<link>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/</link>
		<comments>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 05:52:57 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[effective communication]]></category>
		<category><![CDATA[stakeholder expectations]]></category>
		<category><![CDATA[stakeholder goals]]></category>
		<category><![CDATA[stakeholders]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=788</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F30%2Fstakeholders-in-a-barrel%2F", "style": "big", "title": "Stakeholders in a Barrel" });

There&#8217;s really only one way to travel down a waterfall &#8211; in a barrel.  A lot of people died this way, but some survived.  Software projects have been predominantly waterfall projects since the start of software projects.  And stakeholders rode down those projects, basically in [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F12%252F30%252Fstakeholders-in-a-barrel%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Stakeholders%20in%20a%20Barrel%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F30%2Fstakeholders-in-a-barrel%2F", "style": "big", "title": "Stakeholders in a Barrel" });</script></div>
<p><img class="alignnone" title="falling barrel" src="http://photos.smugmug.com/photos/445792956_mGKCY-L.gif" alt="" width="250" height="224" /></p>
<p>There&#8217;s really only one way to travel down a waterfall &#8211; in a barrel.  A lot of people died this way, but some survived.  Software projects have been predominantly waterfall projects since the start of software projects.  And stakeholders rode down those projects, basically in a barrel.  The people riding Niagara Falls 100 years ago didn&#8217;t know if they would survive until they got to the end.  Stakeholders in waterfall projects don&#8217;t know if they will succeed until the end.</p>
<p>An agile project is dependent upon tight interaction (and feedback) with stakeholders.</p>
<p>If you&#8217;re running an agile project, and your stakeholders are old-school barrel-riders, how do you make it work?</p>
<h2><span id="more-788"></span>Expectations, Documentation, and Communication</h2>
<p>The success of any project is dependent on setting and managing stakeholder expectations.  In <a title="managing stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/"><em>Managing Stakeholder Goals</em></a>, we talked about assuring that those goals are addressed by our requirements.  And in a later article, we proposed a way to <a title="balancing stakeholder goals" href="http://tynerblain.com/blog/2007/10/18/stakeholder-goals-2/">balance the goals of different stakeholder groups</a> when those goals are in opposition.  Those are good tools for making sure we are initially aligned with what we are hearing from stakeholders.</p>
<p>We need to also apply <a title="top ten active listening techniques" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">active listening techniques</a> to assure that what we thought we heard is what the stakeholders thought they said.  One way to do that is to write use cases (or user stories) so that we can <a title="communicating intent with stakeholders" href="http://tynerblain.com/blog/2006/07/14/communicating-intent-with-stakeholders/">communicate the intent of the product</a> back to the stakeholders.  This still primarily helps with kicking off a project, in the desired direction, with the correct goals.</p>
<p>There are many ways to document this <em>initial</em> intent of the project and stakeholder goals.  It is analogous to a stakeholder selecting a sturdy barrel and picking a good spot on the river bank to push off.  We&#8217;re well positioned to eventually succeed, assuming nothing changes.  After a harrowing fall, we find out how well we did.</p>
<p>A well-run waterfall project will provide status updates to the stakeholders along the way.  Imagine your stakeholder wearing one of those in-helmet headsets that NFL quarter backs use.  We publish <a title="effective status reports" href="http://tynerblain.com/blog/2008/09/03/effective-status-reports/">effective status reports</a> to let the stakeholder know what&#8217;s going on.  Like the falling barrel, however, a waterfall project has inertia.  The project, barring significant outside influence, will keep going in the direction it started.  Projects have change control boards to manage that change, but emotionally, I find that a formal change-approval process tends to inhibit change, rather than encourage it.  That barrel will keep falling.</p>
<p>Some project teams will try and do very heavyweight documentation to maximize the likelihood that the project will end up where it should.  The problem is, this heavyweight documentation only improves the chances that the project will end up <em>where we used to think it should go</em>.  It does not help us change the trajectory of the project as new insights are gained.  Just as <a title="responding to market changes for profit" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">responding to those changes provides a competitive advantage</a>, ignoring those changes exposes a competitive weakness.  Someone will come along and exploit your weakness if you don&#8217;t <a title="how fast is your market changing?" href="http://tynerblain.com/blog/2008/11/27/keeping-up-with-change/">respond to change</a>.</p>
<p>From these dynamics, we can conclude that &#8220;big up-front requirements&#8221;, while better than &#8220;no requirements,&#8221; are actually a waste of energy and time, relative to an ongoing adaptation to change.  That adaptation to change, however, should also be documented.  It needs to be documented for two reasons &#8211; to <em>manage</em> expectations of stakeholders, and to keep the implementation team focused on creating the most valuable capabilities in your product.  As you get smarter about what is valuable, you need to apply that knowledge and change the path of the project.</p>
<p>This is where communication becomes critical with stakeholders too.  Especially the old-school barrel-riders.  They are used to being in the barrel, maybe with an occasional &#8220;looking good &#8211; you&#8217;re still falling straight down&#8221; message along the way.  They are not used to hearing &#8220;we&#8217;ve decided that gliding over the rocks is more valuable than falling &#8211; please extend your wings now&#8221; messages.  The shocked &#8220;what wings?!&#8221; response is what they immediately think.</p>
<h2>Agile Expectations</h2>
<p>An agile project will avoid the big up-front requirements, and gather <em>just enough</em> requirements for right now.  What your stakeholder might hear is &#8220;agile is magic &#8211; we don&#8217;t need detailed requirements.&#8221;  The real message is &#8220;agile is better &#8211; we don&#8217;t need details about the requirements <em>yet</em>.  But we will need them <em>later</em>.&#8221;</p>
<p>A given team needs the same amount of specificity in requirements to achieve the same result, regardless of project approach.  One team I worked with would not set the tab-order in a form to go from top to bottom if you didn&#8217;t specify that.  It simply didn&#8217;t occur to them.  Another team was very effective with &#8220;gather the following data in a form&#8230;&#8221; &#8211; and they would layout the form, manage tab order, add reasonable field validation, assure proper markup and support for screen readers (for visually impaired users), and implement a <em>candidate</em> error-message/feedback design for users.  The first team would never succeed without details, the second team would view those details as wasted effort by me to write them, and by them to read them.</p>
<p>I think most of the initial creators, proponents, and early adopters of agile processes are members of the second camp.  They designed agile to not <em>require</em> detailed documents, but to allow it when needed &#8211; because they acknowledged that some people need the details.  They were reacting to heavyweight processes that were designed to work for &#8220;any team&#8221; at the cost of slowing down the best teams.  Kent Beck told me once that when people tell him about the importance of testing, his response is &#8220;so, lack of testing burned you before?&#8221;  When people stressed the importance of gathering requirements, his response was &#8220;you&#8217;ve been burned by a disconnect with stakeholders.&#8221;</p>
<p><strong>Enough</strong> is the operative word here.  You have to document enough.  You have to communicate enough.  You have to set expectations with your stakeholders that things will change.  And as those things change, you have to stay joined at the hip with your stakeholders to validate those changes.</p>
<p>While your team is responding to changes (based on feedback from stakeholders and the market and competition and implementation discoveries) with new plans, you have to feed that information back to the stakeholders.  It is a two-way communication.  And it needs to be a continual communication.</p>
<p>I joined a six month project once in the last month of the project.  Here&#8217;s a sanitized sequence of events describing what happened.</p>
<ol>
<li>Initial vision for the project was defined and requirements defined and tied to goals and value.</li>
<li>The estimates came back and said &#8220;no way it will happen before the business-imposed deadline.&#8221;</li>
<li>The team said &#8220;let&#8217;s be agile&#8221; and chose a component of the vision to do first.  That component could be completed by the deadline, and stakeholder expectations were set &#8211; (a) do this visible thing first, &#8220;meet&#8221; the deadline, and then (b) regroup, re-prioritize, and then do the next thing next.</li>
<li>The team started developing the solution, and worked for 5 months.  After 5 months, someone concluded &#8220;we won&#8217;t finish by the deadline.&#8221;  A couple weeks later, the estimate was that the team still had between 1/3 and 1/2 of the work remaining to complete the first component of the vision.</li>
<li>In presumably unrelated events, all but 2 of the internal stakeholders left the company.  Literally.</li>
<li>When the CIO and president of the company engaged the project team, they weren&#8217;t thinking &#8220;we have an over-run on the first component of our vision&#8221; &#8211; they were thinking &#8220;not only is it not done, but what you&#8217;re trying to do is not the right thing.&#8221;</li>
<li>Project was stopped one week after the original deadline for the first component (which was not completed).</li>
</ol>
<p>It may be that this was unavoidable, but one thing was clear &#8211; the &#8220;build the first thing first&#8221; expectation was not communicated effectively.  It didn&#8217;t help that the team did not track velocity, so it wasn&#8217;t until the end of the project when the &#8220;you&#8217;re going to hit the rocks&#8221; message was first heard by the stakeholder in the barrel.  Way too late to affect change.  For this and other reasons, I contend that the project was not agile.  It was a Chevrolet with a Ferrari sticker on it.</p>
<p>We can ignore the labeling of the process and focus on the lack of <em>ongoing</em> expectation management as the ultimate doom of the project.</p>
<h2>Evolving Expectations</h2>
<p>Patrick Masi had a couple great comments on our <a title="simple agile model" href="http://tynerblain.com/blog/2008/12/03/simple-agile-model-example/"><em>Simple Agile Model</em></a> article.  Patrick pointed out a problem with simple documentation artifacts like this.  The early &#8220;here&#8217;s all we need right now&#8221; artifacts were insufficient to capture the full extent of what the stakeholders needed.  I&#8217;m not sure exactly where things broke down, but Patrick implied that the ongoing clarification with stakeholders was not happening.</p>
<p>This is a completely different manifestation, I suspect, of the exact same problem described above.  Thinking about Patrick&#8217;s comments is what got me heading down the whole &#8220;barrel rider&#8221; path in the first place.</p>
<p>I don&#8217;t believe I&#8217;ve worked with any stakeholders who would say &#8220;yes, ignore what we learned this year &#8211; it is more important to build last year&#8217;s product.&#8221;  I&#8217;ve definitely worked with stakeholders who did not have time to commit to the support of an agile project.  The ironic thing about agile projects is that they may do more requirements work through the course of the project than non-agile projects.  An agile project will respond to change.  That means some work is re-done.  It also means that some valueless work is avoided.  You can&#8217;t categorically say which influence is larger.</p>
<p>One possible source of the pain Patrick&#8217;s team felt is mis-set expectations of what is being delivered when.  Imagine developing a checkout-process for an eCommerce website.  The complete checkout process is too large for a single sprint, so you break it down into valuable atomic deliverables for each sprint:</p>
<ol>
<li>Registered customers can buy any products, using previously saved billing / shipping info.</li>
<li>Individual product and &#8220;per order&#8221; discounting works and customers can use gift cards to pay for all or part of the order.</li>
<li>Anonymous customers can place orders (without accounts) and registered customers can modify billing and shipping information.</li>
<li>Orders can be placed as gifts (with gift receipts and wrapping services), and online call-center reps can interact with customers real-time to help with the process.</li>
</ol>
<p>This is a nuanced message &#8211; basic checkout in sprint 1, with increasing capabilities in each sprint, until &#8220;complete checkout&#8221; is done in sprint 4.  That is a reasonable plan, but requires a more detailed conversation with stakeholders so that they know what is coming and when.  You don&#8217;t want someone freaking out after the 3rd sprint when they can&#8217;t place gift orders.</p>
<p>Another possibility is that the elicitation process before the third sprint (re-visiting checkout <em>again</em> with the same stakeholder) did not tease out that anonymous users must provide an email address (for order confirmation email, and to secretly create a &#8220;shadow account&#8221; for that customer).  All of those details need to be gathered, and it can be harder to spread out the conversation over multiple sprints than it is to have it all up front.  This is just incomplete discovery, but with delayed (and recurring) impacts.</p>
<p>In <a title="user stories applied" href="http://www.amazon.com/exec/obidos/ASIN/0321205685/tbrb-20"><em>User Stories Applied</em></a>, Mike Cohn stresses that the brevity of user stories is intentionally designed to facilitate (and I would add &#8220;dependent upon&#8221;) conversation.  I find it to be both a strength and a weakness of user stories.  It is strong because you can cover a lot of ground quickly (breadth) and capture a number of stories, much like the list above.  It is weak because the requirements documentation does not stand on its own &#8211; it requires conversation to fill in the details.  I&#8217;ve had some success using the &#8220;Verify that&#8230;&#8221; user acceptance tests as the method of documenting those details (depth), in conjunction with the brief, easily consumable stories.</p>
<p>You can write the stories quickly to decompose and schedule across sprints (revisiting the schedule as things change), and then write the <em>verify</em> statements as UAT for each sprint as it occurs.</p>
<p>Another benefit of the UAT is that it is explicit and cuts through the walls of the barrel for a stakeholder who &#8220;doesn&#8217;t get agile&#8221; as Patrick puts it.  &#8220;Here&#8217;s our lightweight multi-sprint plan &#8211; now lets define the specific acceptance criteria you need&#8221; is a pretty effective conversation.</p>
<h2>Conclusion</h2>
<p>You have to stay closely connected to your stakeholders &#8211; not just for messaging, managing, and changing the big-picture direction of the project, but also to drill down into the details at the last practical moment.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Stakeholders+in+a+Barrel+http://bit.ly/uNjg+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/&amp;t=Stakeholders+in+a+Barrel" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>ProductCamp Austin Winter 2009</title>
		<link>http://tynerblain.com/blog/2008/12/11/productcamp-austin-winter-2009/</link>
		<comments>http://tynerblain.com/blog/2008/12/11/productcamp-austin-winter-2009/#comments</comments>
		<pubDate>Thu, 11 Dec 2008 06:11:06 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[balsamiq]]></category>
		<category><![CDATA[otherinbox]]></category>
		<category><![CDATA[pcamp austin]]></category>
		<category><![CDATA[productcamp austin]]></category>
		<category><![CDATA[prototyping]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=781</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F11%2Fproductcamp-austin-winter-2009%2F", "style": "big", "title": "ProductCamp Austin Winter 2009" });

The second productcamp for Austin is just around the corner!  Are you going to be there?  You should.

Announcement
Paul Young has written a great announcement and explanation of what product camp is.  I really enjoyed and benefited from the one we did last spring, and I [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F12%252F11%252Fproductcamp-austin-winter-2009%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22ProductCamp%20Austin%20Winter%202009%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F11%2Fproductcamp-austin-winter-2009%2F", "style": "big", "title": "ProductCamp Austin Winter 2009" });</script></div>
<p><img class="alignnone" title="productcamp austin winter 2009 logo" src="http://photos.smugmug.com/photos/434490818_xcHs9-L.gif" alt="" width="234" height="60" /></p>
<p>The second productcamp for Austin is just around the corner!  Are you going to be there?  You should.</p>
<p><span id="more-781"></span></p>
<h2>Announcement</h2>
<p>Paul Young has written a <a title="productcamp austin" href="http://www.productbeautiful.com/2008/12/10/productcamp-austin-winter-2009/">great announcement and explanation</a> of what product camp is.  I really enjoyed and benefited from the one we did last spring, and I can&#8217;t wait to attend and present at this one!  If you are or can be in the Austin area on Jan 24th, make sure you head to the <a title="map to productcamp austin" href="http://www.eventbrite.com/googlemap?eid=217426328">UT Austin College of Communications CMB building, studios 4B through 4E</a> from 8 to 5:30.  And the networking afterwords is sure to be even better than last year too.</p>
<h2>Presentation Topics</h2>
<p>A key takeaway from our first productcamp was that people most enjoyed the presentations that were more collaborative.  These sessions tended to give attendees the ability to immediately put to use some really good ideas.  I&#8217;ll wager that we&#8217;ll have a mix of presentation styles again this year, but that it will skew to the interactive and practical.  The roundtables were also very well received, and I hope we&#8217;ll have more of those too.</p>
<p>I&#8217;m really looking forward to presenting again, and would love suggestions from you about topics you think would be valuable.  I guess this is pre-collaboration :).  At the moment, I&#8217;m leaning towards a presentation around using wireframes to rapid-prototype ideas in support of an agile development team. I&#8217;m currently doing this with the developers and stakeholders at <a title="OtherInbox" href="http://blog.otherinbox.com/">OtherInbox</a>, an Austin start-up that was one of this year&#8217;s <a title="otherinbox techcrunch 50 pitch" href="http://www.techcrunch50.com/2008/conference/presenter.php?presenter=60">TechCrunch 50</a>, doing some awesome stuff to eliminate email overload.</p>
<p>So far, this is proving to be an effective way to rapidly evolve ideas and minimize the overhead of communication &#8211; and we&#8217;re doing it with a distributed team.  We&#8217;ve been using a combination of <a title="balsamiq wireframing tool" href="http://www.balsamiq.com/products/mockups">balsamiq mockups</a> and google docs.  By the time product camp rolls around, we&#8217;ll have many sprints worth of experience under our belts, and I should be able to provide a mix of how-to&#8217;s and lessons learned.</p>
<p>Add a comment below if you have another idea, or if you have any feedback on this one.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+ProductCamp+Austin+Winter+2009+http://bit.ly/GIJvn+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/12/11/productcamp-austin-winter-2009/&amp;t=ProductCamp+Austin+Winter+2009" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/12/11/productcamp-austin-winter-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Simple Agile Model Example</title>
		<link>http://tynerblain.com/blog/2008/12/03/simple-agile-model-example/</link>
		<comments>http://tynerblain.com/blog/2008/12/03/simple-agile-model-example/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 03:40:13 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[modeling business rules]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[uml state transition diagram]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=774</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F03%2Fsimple-agile-model-example%2F", "style": "big", "title": "Simple Agile Model Example" });

A picture is worth a thousand words.  Agile values working software over comprehensive documentation, and it values customer collaboration over contract negotiation.  With that in mind, how much is a picture of a model worth?  Check out a simple example, how it helped, and what [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F12%252F03%252Fsimple-agile-model-example%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Simple%20Agile%20Model%20Example%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F12%2F03%2Fsimple-agile-model-example%2F", "style": "big", "title": "Simple Agile Model Example" });</script></div>
<p><img class="alignnone" title="nick jonas model picture" src="http://sehlhorst.smugmug.com/photos/429885890_yjtQS-M.jpg" alt="" width="250" height="187" /></p>
<p>A picture is worth a thousand words.  Agile <a title="agile manifesto" href="http://agilemanifesto.org/">values</a> working software over comprehensive documentation, and it values customer collaboration over contract negotiation.  With that in mind, how much is <em>a picture of a model</em> worth?  Check out a simple example, how it helped, and what we didn&#8217;t do.</p>
<p><span id="more-774"></span></p>
<h2>A Complex Conversation</h2>
<p>I was working with a client on an eCommerce website, where one of the things that was important to the client was having and managing an affiliate network that refers visitors (and ultimately customers) to the website. The conversations around exactly what the stakeholders of the eCommerce site wanted were pretty convoluted, and different <a title="writing clear requirements" href="http://tynerblain.com/blog/2006/06/12/writing-unambiguous-requirements/">stakeholders described the &#8220;requirements&#8221; differently</a>.</p>
<p><strong>Affiliate Network Background</strong></p>
<p>An affiliate network can work in the following way:</p>
<ol>
<li>When someone visits a website, and does so by directly clicking on a link on an affiliate partner&#8217;s page, the website is able to identify the affiliate partner who &#8220;sent&#8221; the visitor to the website.</li>
<li>The website keeps track of who &#8220;sent&#8221; the visitor.</li>
<li>If the visitor becomes a customer, the affiliate partner who sent the visitor is compensated.  One way to compensate that affiliate partner is by giving them a percentage of the revenue that the customer generates for the website.</li>
</ol>
<p>This can be a lucrative model for both the eCommerce site and the affiliate partner.  The partner gets paid for funneling traffic to the eCommerce site, but not necessarily doing any other work (beyond what it takes to encourage people to go to the eCommerce site).  The eCommerce site gets increased traffic, at a manageable cost &#8211; proportional to the revenue generated by the incremental visitors (who would probably not otherwise visit the site).</p>
<p>Each business gets to focus on its core competency (sending traffic, for the affiliate partner; converting that traffic into revenue, for the eCommerce site).  The eCommerce site invests the majority of the time and money (probably orders of magnitude more investment), and the affiliate partner shoulders all of the risk, but can do this for almost no cost (if they want), in exchange for an uncertain revenue stream.  This blog is currently trying out an affiliate relationship with <a title="carbonite affiliate link" href="http://www.anrdoezrs.net/click-3207650-10571305">Carbonite</a> &#8211; because I love the product (and therefore think people who visit Tyner Blain will too), and because the revenue generated, if any, will help defray the costs of writing and maintaining the blog.</p>
<p><strong>Specific Complexity of an Affiliate Model</strong></p>
<p>The complexity of this &#8220;simple&#8221; model becomes apparent when you ask a few clarifying questions.</p>
<ul>
<li>Will there be multiple affiliate partners?  (Yes)</li>
<li>If someone is referred by multiple affiliate partners (on separate occasions), who gets credit? (The last affiliate partner who sends the customer to the site)</li>
<li>Does the visitor have to purchase during the visit that was made from the affiliate partner&#8217;s site? (No)</li>
<li>Is there an expiration date, after which an affiliate will not get credit for customer purchases?  (Yes, &#8220;N&#8221; days).  [Note: I am obscuring the actual value for this article, but N is a real number.]</li>
<li>If a customer who was referred by an affiliate makes multiple purchases, for how many of them is the affiliate partner credited?  (One)</li>
</ul>
<p>Asking these questions in different ways generated some different, and potentially conflicting answers.  The list above is the &#8220;after we put it all together&#8221; answer.</p>
<h2>A Simple Model</h2>
<p>We solved this problem by grabbing the immediately available stakeholders and pulling them into an office with a whiteboard for about 3 minutes.  [Ed: Our first article about <a title="ooa and requirements" href="http://tynerblain.com/blog/2005/12/09/a-picture-is-worth-a-thousand-requirements/">using object-oriented analysis as part of requirements gathering</a> is from three[!] years ago, this is not a new idea, and wasn&#8217;t then, either.]  I drew the following state transition diagram on the whiteboard, <a title="ten great active listening tips" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">using an active listening technique</a>, to confirm that I had consolidated the inputs into the right set of business requirements.  <a title="state transition diagrams and business rules" href="http://tynerblain.com/blog/2007/03/22/statecharts-and-business-rules/">Documenting business rules with a state transition diagram</a> was very effective at highlighting them.</p>
<p><img class="alignnone" title="state transition diagram" src="http://sehlhorst.smugmug.com/photos/429885895_48JaP-O.jpg" alt="" width="400" height="282" /></p>
<p>Most of the explanations from stakeholders were in more of a use-case format, but <a title="state transition diagrams versus use cases" href="http://tynerblain.com/blog/2007/03/21/use-case-vs-statechart/">a state-transition diagram</a> was more effective at validating the rules and requirements in this situation.</p>
<p>The diagram above uses the following approach to describing the problem:</p>
<ul>
<li>Some customers are considered to be &#8220;actively referred&#8221; by an affiliate partner &#8211; and when that is true, an affiliate receives compensation for the order placed by the customer.  Other customers are not considered to be &#8220;actively referred&#8221; and no compensation is due to the affiliate partner.</li>
<li>Customers can be &#8220;temporarily actively referred&#8221; and events modify that state.</li>
</ul>
<p>What the diagram shows, given that context is the following business rules:</p>
<ul>
<li>When a customer is referred to the site, the &#8220;to be compensated&#8221; affiliate partner is identified, and associated with the customer.</li>
<li>When the same customer is referred to the site by a different affiliate partner, the new affiliate replaces the old one.</li>
<li>If &#8220;N&#8221; days pass after a customer was referred by an affiliate partner, that affiliation expires, and the affiliate partner is not compensated for future purchases.</li>
<li>An affiliate partner is only compensated for the first purchase made by the referred customer.</li>
</ul>
<p>The stakeholders that were present confirmed that this perfectly represents their business requirements.  Even cooler &#8211; a couple days later, the business person most-directly-responsible for implementing the programs came by, looked at the whiteboard, and <em>signed her name</em> on it to record her approval.  We also have a camera-phone snapshot of that.</p>
<h2>What We Didn&#8217;t Do</h2>
<p>I could have titled this article <em>Mini-Model and Requirements</em>, but <em>Agile</em> seemed more appropriate, because we didn&#8217;t go over the top with it (and it is a rapid-development, incremental project).  The diagram above also represents the minimum deployable version of the affiliate program for a given release.</p>
<p>We stopped short of creating the following diagram:</p>
<p><img class="alignnone" title="uml state diagram" src="http://sehlhorst.smugmug.com/photos/429901660_yATMW-M.png" alt="" width="299" height="342" /></p>
<p>This diagram is more of a &#8220;classic&#8221; artifact that you would see in a BUFR (big, up-front requirements) project.  Our team collaborates regularly, and the affiliate program details were now relevant/timely.  We had the conversations, drew the diagram, confirmed (in about 10 minutes), took a picture, and shared it with the rest of the team.  There would have been marginal incremental value in making a pretty version of the diagram, so we didn&#8217;t do it.  Our goal is working software, not comprehensive documentation.</p>
<h2>Conclusion</h2>
<p>Just do what you need to do, then move on.  For our team, clarifying the intent was important.  Creating a formal, pretty picture added no extra value.  So we didn&#8217;t do it.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Simple+Agile+Model+Example+http://bit.ly/HkLP+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/12/03/simple-agile-model-example/&amp;t=Simple+Agile+Model+Example" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/12/03/simple-agile-model-example/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Satisficing Sprints</title>
		<link>http://tynerblain.com/blog/2008/11/12/satisficing-sprints/</link>
		<comments>http://tynerblain.com/blog/2008/11/12/satisficing-sprints/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 03:24:45 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[satisficing]]></category>
		<category><![CDATA[sprint]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=759</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F11%2F12%2Fsatisficing-sprints%2F", "style": "big", "title": "Satisficing Sprints" });

Satisficing probably makes more sense than perfecting your product.
Can?  Open.
Worms?  Everywhere.
Are we really saying &#8220;don&#8217;t make it perfect?&#8221;  Yup.

Product Perfection
A perfect product will be successfull.  It will solve the right problems, generate as much value as possible, and be so intuitive to use that you don&#8217;t even [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F11%252F12%252Fsatisficing-sprints%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Satisficing%20Sprints%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F11%2F12%2Fsatisficing-sprints%2F", "style": "big", "title": "Satisficing Sprints" });</script></div>
<p><img class="alignnone" title="worms on the table" src="http://sehlhorst.smugmug.com/photos/415923338_gzWKd-L.jpg" alt="" width="250" height="187" /></p>
<p>Satisficing probably makes more sense than perfecting your product.</p>
<p>Can?  Open.</p>
<p>Worms?  Everywhere.</p>
<p>Are we really saying &#8220;don&#8217;t make it perfect?&#8221;  Yup.</p>
<p><span id="more-759"></span></p>
<h2>Product Perfection</h2>
<p>A perfect product will be successfull.  It will solve the right problems, generate as much value as possible, and be so intuitive to use that you don&#8217;t even realize you&#8217;re using it.</p>
<p>Perfection is a bit of a catch-22, however.  When I was still working as a mechanical engineer, I joined a team who introduced me to my new role with the following statement about the product I was going to replace:  &#8220;the design engineers are really good, they designed a great &lt;product&gt; &#8211; the only problem is that we can&#8217;t build it.&#8221;</p>
<p>My first thought &#8211; &#8220;you&#8217;re not using the same definition of <em>great</em> that I use.&#8221;  The same holds true for the <em>perfect</em> product.  Perfect at what cost?  If you spend too much making the product <em>otherwise</em> perfect, you won&#8217;t make enough money selling them, or your customers won&#8217;t benefit enough from using them, so you won&#8217;t sell as many, so your profits will be lower, so &#8230;, so &#8230;, and so on.</p>
<p>You can aim towards perfection, and still probably be ok, because you&#8217;ll never get there.  Your ideal product is a moving target, because <a title="staying on top of your market" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">your market is moving</a>.  Since you&#8217;re <a title="prioritizing the most important capabilities" href="http://tynerblain.com/blog/2008/10/20/planning-sprints-part-2/">prioritizing the most important capabilities</a> to build at any given point in time, you&#8217;ll never reach the end state of having done &#8220;everything.&#8221;</p>
<p>There was a math problem that made my head hurt when I was in college.  It went something like this:  If you were 100 feet from your house, and every hour cut the distance by half (after one hour, you were 50 feet away, after another hour &#8211; 25 feet, etc), and it was going to start raining in 10 hours, would you be inside before it started?</p>
<p>What if it wasn&#8217;t going to rain for 10 days?  Or 10 years?</p>
<p>That may be why I became an engineer, and not a mathematician.  To me, at some point, you would simply take one reasonably sized step, and be in the house.  An engineer would be inside the house before it started raining &#8211; and he&#8217;d probably be fixing (or breaking) something.  A mathematician would never make it into the house.  I could never appreciate that kind of math.  But I like fixing things.</p>
<p>Every capability you add, or <a title="read more on problems versus problem statements" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">every problem you solve</a>, gets you <em>closer to</em> perfection.  The problem is, it doesn&#8217;t get you &#8220;10 feet closer&#8221;, it is more like &#8220;30% closer.&#8221;  And like the mathematician, you&#8217;ll never get there.</p>
<p>Even the engineers won&#8217;t get there, however.  Every solution you deliver to your customers changes the definition of perfection.  Each solution enables new opportunities, and exposes new challenges.  Perfection becomes a moving target.</p>
<h2>Product Paralysis</h2>
<p>People talk about analysis paralysis fairly often.  Product paralysis comes when you spend so many cycles agonizing over the perfect thing to do, or the perfect thing to do next, that you don&#8217;t do anything.  Its the product management version.</p>
<p>I was on a call today, introducing some users to a product we&#8217;re developing.  We just stood up a website release &#8211; the first sprint that has enough content to be independently consumable by non-software folks.  One of the folks on the call, when trying to explain how agile works, and how user acceptance testing would work, made a statement that I thought failed to capture the essence of what we were doing (<a title="speaking to your audience" href="http://www.cindyalvarez.com/communication/who-i-am-what-you-say">in a language that the audience could appreciate</a>).  Paraphrased, the statement was &#8211; &#8220;in an agile project, there is no &#8216;release date&#8217;, the website will be done when it is done.&#8221;</p>
<p>I interrupted to share how I think about this project, and agile in general &#8211; &#8220;In this project, we&#8217;re building a release for you every two weeks.  Every two weeks, you get to decide if it is &#8216;enough&#8217; to share with customers, or share with more customers.&#8221;  [Note: In that statement, "customers" are people who use the website to purchase products from our client, who is also <em>our</em> customer.]  This project involves replacing a legacy system, as quickly as makes sense.  The new solution introduces new capabilities (and value) relative to the existing solution.  Today, it also lacks many capabilities (and value) provided by the current solution.</p>
<p>The question we are working with the business to answer is &#8220;when do we switch from the old system to the new one?&#8221;  There are at least some people who insist that we cannot switch over until <em>all</em> of the current capabilities are live in the new solution.  If we use that metric (and we may &#8211; that has not been decided yet), there will be a period of time where the new solution is <em>more valuable</em> than the current one, but that value will go unrealized.  I think that is another form of product paralysis.  We won&#8217;t have perfect data, so it will be a qualitative decision.  Right now, we&#8217;re trying to establish an alternate view of &#8220;enough&#8221;, and then predicting how long that will take, to manage expectations with stakeholders.  Fun stuff.</p>
<h2>Sprint Satisficing</h2>
<p>Ivan Chalif just <a title="book review" href="http://www.theproductologist.com/index.php/2008/11/10/book-review-dont-make-me-think/">published a review</a> of the book, <a title="don't make me think" href="http://www.amazon.com/dp/0321344758?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0321344758&amp;creative=373489&amp;camp=211189"><em>Don&#8217;t Make Me Think</em></a>, by Steve Krug.  In his review, Ivan points out one of the themes in Krug&#8217;s book &#8211; doing &#8220;enough.&#8221;</p>
<blockquote><p>Many <a title="Fighting, er, Working With Engineering" href="http://www.theproductologist.com/index.php/2007/04/24/fighting-er-working-with-engineering/" target="_blank">choices</a> that a Product Manager has to make are based on having to balance between the optimal solution and what can be done in a given time frame with the available resources. We bet that if we satisfice, it will be enough to address the short-term requirement or at least buy some time to refine the feature in a later release.</p></blockquote>
<p>That made me remember another book, <a title="the paradox of choice at amazon" href="http://www.amazon.com/dp/0060005696?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0060005696&amp;creative=373489&amp;camp=211189"><em>The Paradox of Choice</em></a>, by Barry Schwartz.  Another good book, where a central theme is that when given an arbitrarily large set of choices, people don&#8217;t choose optimally &#8211; they focus on eliminating choices, then choosing the best from a select few options.  If I remember correctly, Schwartz argues that people don&#8217;t optimize when faced with too many choices, they satisfice.</p>
<p>When it comes to determining what to include in a particular sprint, we&#8217;re faced with an arbitrarily large set of choices, so we prune.  And then we <a title="definition of satisfice" href="http://web.uvic.ca/akeller/pw408/r_satisfice.html">satisfice</a>.</p>
<p>In another conversation today, one of the developers asked an insightful question about one of the stories that was committed for the sprint.  As part of answering that question, we realized that the &#8220;perfect&#8221; answer was to change the design approach for that story, resulting in extra work that would push the team beyond capacity for the sprint.  We have a theme for the sprint, and this story is a key element in that theme.  If we have to push something to a later sprint, we want to push something else.</p>
<p>The story was written for three classes of users &#8211; logged in users with existing accounts, people who just created their accounts, and people who didn&#8217;t have (or want) accounts.  The project involves integrating COTS (customized, off-the-shelf) software with legacy systems.  We discovered that the design changes would only be needed for people who did not have accounts.  The theme of this sprint is to enable an end-to-end path through the site (essentially, completing an epic).  We decided that we would be satisfied by completing the epic for the logged-in users in this sprint, and add the other users in the next sprint.  That met our tactical goals for completing the epic.  Our alternative would have been to delay another story (or two) to a later sprint, just to be &#8220;perfect&#8221; with our epic.  This is the better solution, in this case.</p>
<p>What made this possible was that we remembered that each sprint asks the question about the solution &#8211; &#8220;is it good enough?&#8221;  And by implication, each sprint asks the question about each story &#8211; &#8220;is this approach good enough?&#8221;</p>
<p>We decided that today landed in the &#8220;a good day&#8221; column on the ledger.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Satisficing+Sprints+http://bit.ly/9XXFW+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/11/12/satisficing-sprints/&amp;t=Satisficing+Sprints" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/11/12/satisficing-sprints/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
