<?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; Agile</title>
	<atom:link href="http://tynerblain.com/blog/category/software-development/agile/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>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>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>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>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>
		<item>
		<title>Plan Your Next Sprint By Bang For The Buck: Part 2</title>
		<link>http://tynerblain.com/blog/2008/10/20/planning-sprints-part-2/</link>
		<comments>http://tynerblain.com/blog/2008/10/20/planning-sprints-part-2/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 03:24:08 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[bang for the buck]]></category>
		<category><![CDATA[prioritization by roi]]></category>
		<category><![CDATA[sprint planning]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=735</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F20%2Fplanning-sprints-part-2%2F", "style": "big", "title": "Plan Your Next Sprint By Bang For The Buck: Part 2" });

Planning by ROI.  Hmmm.  Isn&#8217;t that impractical?  In an econometric way, yes.  But you can still estimate the relative value of the capabilities / stories you&#8217;re planning for your scrum sprints.  The point is &#8211; don&#8217;t look only [...]]]></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%252F10%252F20%252Fplanning-sprints-part-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Plan%20Your%20Next%20Sprint%20By%20Bang%20For%20The%20Buck%3A%20Part%202%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F20%2Fplanning-sprints-part-2%2F", "style": "big", "title": "Plan Your Next Sprint By Bang For The Buck: Part 2" });</script></div>
<p><img class="alignnone" title="Standing on the shoulders of giants" src="http://sehlhorst.smugmug.com/photos/398713817_sz6yj-L.jpg" alt="" width="180" height="240" /></p>
<p>Planning by ROI.  Hmmm.  Isn&#8217;t that impractical?  In an econometric way, yes.  But you can still estimate the <em>relative</em> value of the capabilities / stories you&#8217;re planning for your scrum sprints.  The point is &#8211; don&#8217;t look <em>only</em> at value &#8211; also look at costs.  While &#8220;ROI&#8221; may be a poor choice of terms, &#8220;bang for the buck&#8221; is not.</p>
<p><span id="more-735"></span></p>
<h2>Mea Culpa</h2>
<p>In the previous article, <em><a title="Plan your sprint by ROI part 1" href="http://tynerblain.com/blog/2008/10/16/planning-sprints-by-roi/">Plan Your Next Spring By ROI: Part 1</a></em>, I made a bad choice of sloppily using ROI (about a dozen times) to describe &#8220;bang for the buck.&#8221;</p>
<blockquote><p>Just over a year ago, we showed how <a title="prioritize by roi" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">prioritizing by ROI delivers value faster</a>.  The reason this works is that each sprint (or timebox) has a fixed capacity for work, so you want to cram as much value into that box as possible &#8211; not just do the most valuable thing first.  Here are a couple images from the previous article that show the impact of using this approach.</p>
<p>[...]</p>
<p>So far, we’ve argued that prioritization should be by ROI, and while accounting for other people, should be user focused.  Actually, nothing above is sprint-specific, the same concepts apply to any product planning and development approach.</p>
<p><a title="planning sprints by return part 1" href="http://tynerblain.com/blog/2008/10/16/planning-sprints-by-roi/"><cite>Plan Your Next Sprint By ROI: Part 1</cite></a></p></blockquote>
<p>[Editor: Note - the author has also messed up again, this time by burying the lead at the end of the article.]</p>
<h2>Giants.  And Their Shoulders.</h2>
<p>I had a great conversation over the weekend with <a title="luke hohmann" href="http://www.enthiosys.com/about-us/our-people/#luke">Luke Hohmann</a>, founder and CEO of <a title="agile product management" href="http://www.enthiosys.com/">Enthiosys</a>, and realized my mistake.  Consider the titles of three (excellent) articles Luke wrote earlier this summer:</p>
<ol>
<li><a title="luke, part 1" href="http://http://www.enthiosys.com/insights-tools/prioritizeforprofit1of3/">Why Prioritizing Your Product Backlog for ROI Doesn&#8217;t Work (Part 1 of 3)</a></li>
<li><a title="luke, part 2" href="http://www.enthiosys.com/insights-tools/prioritizeforprofit2of3/">Developing Attributes for Backlog Prioritization (Part 2 of 3)</a></li>
<li><a title="luke, part 3" href="http://www.enthiosys.com/insights-tools/prioritizeforprofit3of3/">Prioritizing for Profit (Part 3 of 3)</a></li>
</ol>
<p>Not to mention giving a presentation at <a title="agile 08" href="http://www.enthiosys.com/insights-tools/agile-08-repeat-performance-and-slides/">Agile&#8217;08</a>.</p>
<p>You&#8217;d think I would have noticed, and been more careful in my use of language.  Sorry about that.</p>
<p>Luke, in his first article, provides several arguments against <em>econometric assessment</em> of ROI, and I agree with all of his points.  In his second article, Luke goes into details about defining attributes for reflecting the goals of internal stakeholders, external stakeholders (buyers and users), and the system.  I promised to do the same in this article, but frankly, why reinvent the wheel?  Our differences from Luke&#8217;s article would at best be nuanced, so the best use of your time (and mine) is to just go read his second article.</p>
<blockquote><p>Our experience is that successful Agile Product Managers have an almost natural, intuitive feel for prioritizing backlog items to drive profitable growth. Fortunately, this natural ability is greatly enhanced when they make the link between the backlog and their ability to drive profit explicit. As an aside, it is this set of attributes that most clearly distinguish the Scrum-centric role of a Product Owner with the full responsibilities of an Agile Product Manager.</p>
<p><cite><a title="luke, part 2" href="http://www.enthiosys.com/insights-tools/prioritizeforprofit2of3/">Developing Attributes for Backlog Prioritization (Part 2 of 3)</a></cite></p></blockquote>
<h2>Including Costs in Sprint Planning</h2>
<p>There are two dimensions by which to keep costs in mind when planning a sprint.  The first is in determining how much work to schedule for any given sprint.  When you use <a title="using timeboxes to plan releases" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">timeboxing</a> to plan a sprint, you&#8217;re saying &#8220;we have the capacity to do X work per sprint&#8221; and &#8220;we should only schedule X work per sprint.&#8221;  Your <a title="how to approach project estimation" href="http://tynerblain.com/blog/2006/04/28/where-did-you-get-that-estimate/">plans are based on estimates</a>, so you need to have a feedback mechanism to make sure you&#8217;re doing a better job in planning each sprint than you did with the previous sprint.  <a title="burndowns for tracking velocity" href="http://tynerblain.com/blog/2006/09/29/burndown/">Burndown graphs</a> are a great way to do this.  The burndown provides feedback within the sprint too, not just at the end.</p>
<p>Mike Cohn, of <a title="mountain goat software" href="http://www.mountaingoatsoftware.com/">Mountain Goat Software</a>, <a title="agile estimation presentation" href="http://www.mountaingoatsoftware.com/presentation/51-planning-and-tracking-on-agile-projects">gave a great presentation</a> on how to estimate costs for an agile project.  Without giving it away, he proposed (starting on slide 14) using <a title="planning poker" href="http://www.planningpoker.com/">planing poker to get quick estimates of user stories</a> [<a title="planning poker details" href="http://www.planningpoker.com/detail.html">more details</a>] at the product backlog level.  Then, <a title="basic pert estimation tutorial" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">more detailed estimates are created for the tasks</a> within the sprint.  If your team uses use cases, you can choose to use <a title="intro to use case points estimation" href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">use case points as a low-overhead estimation method</a> (but not nearly as low as planning poker) to determine the initial estimates of costs.</p>
<h2>A Planning Example</h2>
<p>You have the following set of items being evaluated in your product backlog.  Note that there are a mixture of strategic, user-centric, and code-refactoring items under consideration.</p>
<ul>
<li><strong>Profile Editing</strong> &#8211; As an insurance agent in the community, I want to be able to edit my profile to personalize my identity within the site.</li>
<li><strong>Data Abstraction Refactoring</strong> &#8211; The system&#8217;s data model is inelegant and needs to be refactored, if ongoing development is to be easier.</li>
<li><strong>Action Notification</strong> &#8211; As a manager of agents, I want to be notified whenever my agents submit quotes to potential customers.</li>
<li><strong>Grouping Items</strong> &#8211; As an insurance agent, I want to be able to group contacts, proposals, communications and other items, so that I can organize my work.</li>
<li><strong>Reporting</strong> &#8211; As a manager of agents, I want to be able to run reports to track financial metrics and activities by agent, product, geography, and time period, so that I can manage my team effectively.</li>
<li><strong>Serializable Objects</strong> &#8211; The system&#8217;s implementations for data backup and data export are redundant and brittle and should be refactored to clean up the code.</li>
<li><strong>Customer Centric UI</strong> &#8211; The user interface is currently product-centric in approach.  Our strategy to offer multi-vendor product lines will require agents to focus on customers first.</li>
</ul>
<p>Using the value-estimation and cost estimation techniques outlined by Luke and Mike you determine the following value and cost estimates for each &#8220;story.&#8221;</p>
<p><img class="alignnone" title="value and cost estimates" src="http://sehlhorst.smugmug.com/photos/398836251_WAmRc-L.jpg" alt="" width="412" height="197" /></p>
<p>If you were to ignore the cost estimates you would do the <em>data abstraction refactoring</em> and <em>customer-centric UI</em> stories first, followed by the <em>profile editing, action-notification</em>, and other tasks in order of descending value.  As it turns out, that is not <a title="maximizing value through prioritization" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">the way to maximize value over time</a>.  At first glance, the <em>profile editing</em> story looks like the biggest bang for the buck.</p>
<p>Create a scatter plot of value versus cost.</p>
<p><img class="alignnone" title="value versus cost sprint scatterplot" src="http://sehlhorst.smugmug.com/photos/398851298_ncqJ6-L.jpg" alt="" width="450" height="328" />[<a title="larger scatterplot of value vs cost for sprint planning" href="http://sehlhorst.smugmug.com/photos/398851074_GWYex-L.jpg">larger version</a>]</p>
<p>You can clearly see the differences in value and differences in cost of the different stories.  If, however, you add the element of value/cost &#8211; <strong>bang for the buck</strong> &#8211; and prioritize by it, you will schedule stories in a different order.  Value / cost is also the slope of a line from the origin of the graph to each story.  If you draw those lines, you see the following:</p>
<p><img class="alignnone" title="drawing bang for the buck when planning a sprint" src="http://sehlhorst.smugmug.com/photos/398850984_2vTLt-L.jpg" alt="" width="450" height="329" />[<a title="larger overlay of bang for the buck on sprint planning scatterplot" href="http://sehlhorst.smugmug.com/photos/398851238_ZrDiR-L.jpg">larger version</a>]</p>
<p>To maximize value delivery over time, work across the chart in a clock-wise direction.  <em>Profile editing</em> is the first task, but <em>grouping items</em> and <em>data abstraction refactoring</em> are tied for second place.  This is different because you&#8217;re prioritizing by bang-for-the-buck, not just bang.</p>
<h2>Collaboration And Agile</h2>
<p>When you consider the <a title="agile manifesto" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">agile manifesto</a></p>
<blockquote><p>We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:</p>
<p><span style="font-weight: bold;">Individuals and interactions</span> over processes and tools<br />
<span style="font-weight: bold;">Working software</span> over comprehensive documentation<br />
<span style="font-weight: bold;">Customer collaboration</span> over contract negotiation<br />
<span style="font-weight: bold;">Responding to change</span> over following a plan</p>
<p>That is, while there is value in the items on the right, we value the items on the left more.</p>
<p>Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas</p>
<p>© 2001, the above authors.  <a title="this declaration" href="http://www.agilemanifesto.org/">this declaration</a> may be freely copied in any form, but only in its entirety through this notice.</p></blockquote>
<p>you see that there is an opportunity to take this even further.</p>
<h2>Have Developers Improve &#8216;The Plan&#8217;</h2>
<p>I proposed an idea to the development lead on an agile team a couple weeks ago.  A couple hours later, he pinged me to let me know he had just applied it and was very excited.  A quick whiteboard session (started with a version of the diagrams above), and he was able to immediately make his sprint better.</p>
<p>I told him that when I was still slinging code, and later, when working with teams of engaged and talented developers, I often ran into the problem of having a &#8220;cool capability&#8221; and wanting to get that capability into the current release.  I wasn&#8217;t pushing for the capability because it was high bang-for-the-buck, or even high-bang &#8211; I just thought it was cool.  So I would implement it.  Bad Scott, no biscuit.</p>
<p>What I proposed was that when a developer has a favorite feature, instead of just trying to squeeze it in, the developer should figure out how to make it cost less, until it had the highest bang for the buck.  Each initial cost estimate is a planning-poker estimate.  By spending cycles on <em>design</em>, a developer can figure out a cheaper way to implement it.  And that moves the story to the left on the chart.</p>
<p>Your challenge, visually, if you want to bump <em>reporting </em>up in the planning backlog, looks like the following:</p>
<p><img class="alignnone" title="changing the cost of a story" src="http://sehlhorst.smugmug.com/photos/398880285_j52Tp-L.jpg" alt="" width="450" height="328" />[<a title="larger version of redesigning to lower costs when sprint planning" href="http://sehlhorst.smugmug.com/photos/398880398_BGc8o-L.jpg">larger version</a>]</p>
<p>You, as a member of the implementation team, have to come up with a design for reporting that is roughly one-third the cost that was originally estimated.  Do that, and it gets bumped up in the queue.  [And yes, I realize that very few developers get excited about reporting.]</p>
<p><strong><span style="text-decoration: underline;">The product manager</span>&#8217;s job is to make sure you get all the dots in the right place <em>vertically</em>.</strong></p>
<p><strong><span style="text-decoration: underline;">The implementation team</span> puts the dots in the right place <em>horizontally</em>. </strong></p>
<p>Everyone embraces the ability to change the graph.  The product manager moves the dots up and down as she learns more about the needs of the market.  The implementation team moves them to the left (and sometimes to the right) as they design better solutions.</p>
<p>Quoting Luke again &#8211; &#8220;<em>Our experience is that successful Agile Product Managers have an almost natural, intuitive feel for prioritizing backlog items to drive profitable growth. Fortunately, this natural ability is greatly enhanced when they make the link between the backlog and their ability to drive profit explicit.</em>&#8221;</p>
<p>This feels intuitive to me.  What about you?</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Plan+Your+Next+Sprint+By+Bang+For+The+Buck%3A+Part+2+http://bit.ly/hhL51+" 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/10/20/planning-sprints-part-2/&amp;t=Plan+Your+Next+Sprint+By+Bang+For+The+Buck%3A+Part+2" 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/10/20/planning-sprints-part-2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Plan Your Next Sprint By ROI: Part 1</title>
		<link>http://tynerblain.com/blog/2008/10/16/planning-sprints-by-roi/</link>
		<comments>http://tynerblain.com/blog/2008/10/16/planning-sprints-by-roi/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 04:16:52 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile planning]]></category>
		<category><![CDATA[personas]]></category>
		<category><![CDATA[return on investment]]></category>
		<category><![CDATA[sprint]]></category>
		<category><![CDATA[sprint planning]]></category>
		<category><![CDATA[stake holders]]></category>
		<category><![CDATA[stakeholders]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=729</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F16%2Fplanning-sprints-by-roi%2F", "style": "big", "title": "Plan Your Next Sprint By ROI: Part 1" });

You&#8217;ve got a giant backlog of user stories and product capabilities.  How do you determine which stories to implement right now?  By the estimated value of each story?  Pick the ones the developers want to build next?  How about picking 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%252F2008%252F10%252F16%252Fplanning-sprints-by-roi%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Plan%20Your%20Next%20Sprint%20By%20ROI%3A%20Part%201%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F16%2Fplanning-sprints-by-roi%2F", "style": "big", "title": "Plan Your Next Sprint By ROI: Part 1" });</script></div>
<p><img class="alignnone" title="sprinter" src="http://sehlhorst.smugmug.com/photos/395786872_3p9zN-S.jpg" alt="" width="225" height="300" /></p>
<p>You&#8217;ve got a giant backlog of user stories and product capabilities.  How do you determine which stories to implement right now?  By the estimated value of each story?  Pick the ones the developers want to build next?  How about picking the stories that maximize the ROI of the sprint?  To do that, you need to estimate both value and cost.  While remaining agile.</p>
<p><span id="more-729"></span></p>
<h2>ROI Refresher</h2>
<p>In our earlier <a title="definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/"><em>Definition of ROI: Return on Investment</em></a> article, we provide an explanation and example of calculating ROI.  In short, ROI is the acronym for return on investment.  How much return do you get, as a percentage of what you have to invest.  If you invest $100 to get $120, your return is $20 (the profit).  Your investment is $100.  Your ROI is 20% (20/100).  Another way to think about it is <em>bang for the buck</em>.</p>
<h2>Prioritizing by ROI versus Prioritizing by Value</h2>
<p>You can prioritize based on value &#8211; &#8220;Do the most valuable thing first.&#8221;  And that is a good, but suboptimal approach.  We even suggested it as &#8220;the best&#8221; prioritization technique in our <a title="prioritization by value" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">prioritization article from almost three years ago</a>.  Since then, by continuing to focus on software product success, I&#8217;ve learned to believe in a better way.</p>
<p>Just over a year ago, we showed how <a title="prioritize by roi" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">prioritizing by ROI delivers value faster</a>.  The reason this works is that each sprint (or timebox) has a fixed capacity for work, so you want to cram as much value into that box as possible &#8211; not just do the most valuable thing first.  Here are a couple images from the previous article that show the impact of using this approach.</p>
<p>Identified stories, from highest value to lowest value (V = Value, W = Work (or cost)).</p>
<p><img class="alignnone" title="highest value to lowest value" src="http://sehlhorst.smugmug.com/photos/179245541-M.png" alt="" width="473" height="119" /></p>
<p>If you can schedule 30 units of work in a sprint, your first sprint will deliver 19 units of value, and your second sprint will deliver an additional 9 units of value.  The thirs sprint delivers the remaining 15 units of value.  Why more value in the third sprint than the second?  Because you didn&#8217;t sort by ROI, you sorted by value &#8211; but were constrained by cost.  When you sort by ROI, you get the same tasks, in the following order:</p>
<p><img class="alignnone" title="stories sorted by ROI" src="http://sehlhorst.smugmug.com/photos/179245574-M.png" alt="" width="473" height="119" /></p>
<p>With this sorting, your first sprint delivers 25 units of value, your second sprint delivers 9 units, and your final sprint delivers an additional 9 units of value.  There are more details in the original <a title="value maximization and project planning" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">value-maximization article</a>.</p>
<p>This is critical to <a title="market driven strategy" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">executing a market-driven strategy</a> that will dominate your competitors.  You not only have to stay tapped in to the market needs, but you have to deliver faster than the other guys, or your distinctive insights will be wasted.</p>
<h2>Political Prioritization</h2>
<p>Really?  Yes.  The first risk to the success of a project is that it gets canceled.  Only the projects that don&#8217;t get killed even have a chance to be right, and therefore maximize value for your customer (or company).  That means you need to prioritize in a way that satisfies your stakeholders.  After attending last year&#8217;s IBRF, I wrote the following article as an interpretation (and slight extension) of Roger Burlton&#8217;s very good presentation about process improvement.  When you&#8217;re tasked with improving a company&#8217;s processes, the first question you have to ask is &#8220;which ones should we improve first?&#8221;</p>
<p>From that article:</p>
<blockquote><p>This analysis focuses on <a title="principal stakeholders" href="../2007/10/11/stakeholder-goals/"><em>principal</em> stakeholders</a>. The goal of this analysis is to encourage your principal stakeholders, or sponsors, to prioritize the most valuable processes first. Not all stakeholders are created equal, so you have to <em>weight</em> the relative importance of each stakeholder. You can weight them politically, by influence, or by whatever factor is most likely to get buy-in from the executives.</p>
<p><cite><a title="stake holder value matrix" href="http://tynerblain.com/blog/2007/10/25/stakeholder-value-matrix/">Stakeholder Value Matrix</a></cite></p></blockquote>
<p>The end result is a prioritized list of processes to improve, based upon which ones cause the combination of most pain (current state) and most gain (when improved) across your stakeholders, based on maximizing the utility of the group of stakeholders.</p>
<p><img class="alignnone" title="prioritizing by utility" src="http://sehlhorst.smugmug.com/photos/211760686-M.jpg" alt="" width="435" height="435" /></p>
<p>Visually, the preceding diagram shows the end results of aggregating the stakeholder inputs in terms of pain and gain.  A couple utility curves are overlaid (arrow shows increasing utility) to show what to do first.  The 1,2,5 processes are clustered together in the &#8220;highest utility&#8221; or &#8220;most value&#8221; range.  This approach would focus on those processes first.</p>
<h2>Persona Prioritization</h2>
<p>When developing software, you should primarily be user-focused.  [Note: this is somewhat of a religious debate, I guess we worship at the chapel of UX.]  Luckily, most of the time, <a title="stakeholder goals" href="http://tynerblain.com/blog/2007/10/18/stakeholder-goals-2/">stakeholder goals and user goals are not in conflict</a>.  However, to sell your solution, you need to make sure you are <a title="buyer personas and user personas" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">addressing both buyer goals and user goals</a>.  Sometimes they are the same, like with consumer products, and sometimes they are not, like many enterprise software products.</p>
<p>As a product manager, you have to know when to listen to, and when to ignore the squeeky wheels.  If you&#8217;re in a start-up doing its second product, solving a new problem for a new market segment, you&#8217;re dealing with founder&#8217;s dilemma.  That founder has a bunch of stakeholder goals for you, and the juice to make sure you address them.  If you&#8217;re trying to <a title="working with analysts" href="http://www.rocketwatcher.com/blog/2008/09/working-with-analysts-is-a-pain-in-the-butt-but-you-should-do-it-anyway.html">get analyst&#8217;s attention [good article by April Dunford at Rocket Watcher]</a>, you may feel pressured to prioritize &#8220;check the box&#8221; features that may be important only to buyers and analysts, without actually adding value for the users.</p>
<p>Of course, you can&#8217;t ignore analysts and buyers and <a title="outside in development" href="http://tynerblain.com/blog/2007/09/27/outside-in/">internal stakeholders</a>.  If your product gets cancelled before you get to market, you&#8217;re done.  If analysts criticize or ignore your product (for some markets), you lose a lot of sales.  And if buyers don&#8217;t &#8220;think they want it&#8221;, they won&#8217;t buy.  You never get a chance to demonstrate value to the users.</p>
<p>But focusing solely on those folks means you won&#8217;t have a product that people love, and you won&#8217;t generate <a title="word of mouth marketing" href="http://tynerblain.com/blog/2007/09/18/dynamics-of-word-of-mouth/">word</a>-of-<a title="word of mouth and usability" href="http://tynerblain.com/blog/2007/01/10/usability-sells-software/">mouth</a>, customer loyalty, or value for your customers.</p>
<p>So any solution needs to account for the needs of the users.  Organizing users into <a title="user personas" href="http://tynerblain.com/blog/2006/04/17/persona-grata/">personas</a>, and making strategic decisions about which ones are important will help.  Include the other people (buyers, etc) but use a persona-centric model for describing what you&#8217;re doing &#8211; just to make sure the users are at the center of your decisions.</p>
<h2>Intermission</h2>
<p>So far, we&#8217;ve argued that prioritization should be by ROI, and while accounting for other people, should be user focused.  Actually, nothing above is sprint-specific, the same concepts apply to any product planning and development approach.</p>
<p>In part 2, we&#8217;ll look at defining user stories and user persona.  We&#8217;ll look at the value of each story relative to cost, and show a couple low-overhead ways to easily visualize this info &#8211; both driving scheduling and motivating the team to improve.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Plan+Your+Next+Sprint+By+ROI%3A+Part+1+http://bit.ly/E8hv+" 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/10/16/planning-sprints-by-roi/&amp;t=Plan+Your+Next+Sprint+By+ROI%3A+Part+1" 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/10/16/planning-sprints-by-roi/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Agile Product Management: Providing Context</title>
		<link>http://tynerblain.com/blog/2008/10/01/agile-product-management-providing-context/</link>
		<comments>http://tynerblain.com/blog/2008/10/01/agile-product-management-providing-context/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 01:27:13 +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[agile development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[ishikawa]]></category>
		<category><![CDATA[ishikawa diagrams]]></category>
		<category><![CDATA[rolling wave planning]]></category>
		<category><![CDATA[sdlc]]></category>
		<category><![CDATA[software development lifecycle]]></category>
		<category><![CDATA[timebox]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=714</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F01%2Fagile-product-management-providing-context%2F", "style": "big", "title": "Agile Product Management: Providing Context" });

Agile development methodologies succeed because they help development teams be as effective as possible.  Development teams do not, however, work in complete isolation.  The company they work for has a strategy.  The company manages a portfolio of products, and targets a particular product at [...]]]></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%252F10%252F01%252Fagile-product-management-providing-context%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Product%20Management%3A%20Providing%20Context%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F01%2Fagile-product-management-providing-context%2F", "style": "big", "title": "Agile Product Management: Providing Context" });</script></div>
<p><img class="alignnone" title="Sharpening Steel" src="http://photos.smugmug.com/photos/384746390_YYUuF-L.jpg" alt="" width="250" height="188" /></p>
<p>Agile development methodologies succeed because they help development teams be as effective as possible.  Development teams do not, however, work in complete isolation.  The company they work for has a strategy.  The company manages a portfolio of products, and targets a particular product at specific market problems.  Within that context, an agile team can thrive.  What&#8217;s the best way to provide that context?</p>
<p><span id="more-714"></span></p>
<h2>Agile Development in Context</h2>
<p>Mike Cohn of Mountain Goat Software gave a presentation to the bayXP group in March 2007 on <a title="agile estimation presentation" href="http://www.mountaingoatsoftware.com/presentation/51-planning-and-tracking-on-agile-projects">agile estimation and planning</a> (video and pdf at link).  As part of setting the stage for his planning presentation, he describes the software development ecosystem as an onion.  So did I, coincidentally, in 2006.  The gist of both onions is that <a title="software development process" href="http://tynerblain.com/blog/2006/01/29/describing-the-software-development-process/">software development</a> is implementation, in the context of design, driven by requirements, formed to address market opportunities.  Mike&#8217;s onion provides specific insights into the execution approach of an agile team, so let&#8217;s frame this conversation using his terms (but a new visual).</p>
<p><img class="alignnone" title="Agile process onion" src="http://photos.smugmug.com/photos/384746404_w7Nzz-L.gif" alt="" width="450" height="450" /></p>
<ul>
<li>A company has a strategy.  [Example: "Organize the world's information..."]</li>
<li>A company has a portfolio of products that is intended to provide a mechanism by which the company can achieve its strategy.  [Example: Gmail, Chrome, Gears, Reader, Docs, etc.]</li>
<li>Each product (or service) the company creates is an intentional part of the portfolio, targeted at specific markets or market segments, with an intention to solve specific problems.  [Example: Gears allows people to consume online content when offline.]</li>
<li>A product is delivered through a series of releases. [Example: Chrome release 0.2.149.30.]</li>
<li>The work that goes into a release, when practicing incremental development, may be decomposed into multiple iterations.  [Example: Chrome iteration 0.2.149.29, not released, but built and tested]</li>
<li>In scrum, the completion of tasks within an iteration are managed daily.  [Example: Today, I will add the 'check for updates' to the 'About Chrome' popup.]</li>
</ul>
<p>Many people talk about the agile process as if it encompassed the entire perspective shown above.  It doesn&#8217;t.  When you talk about the software development lifecycle from the strategy level down, you&#8217;re really talking about business strategy.  Agile development happens in the context of a business strategy, a product portfolio designed to achieve those strategic goals, and the product in that portfolio that is being developed.</p>
<p>Saeed Khan puts it pretty well in <a title="saeed on agile" href="http://onproductmanagement.wordpress.com/2008/04/29/agiledev_and_pm/">his first article about agile / scrum</a>:</p>
<blockquote><p>Keep in mind, Agile/Scrum is a DEVELOPMENT methodology. It is a great model for developers and engineers and other R&amp;D team members to work and communicate more efficiently. There are very clear benefits to this model. It provides greater visibility into current work status, work remaining, can identify development hurdles earlier and can communicate them outward more easily.</p></blockquote>
<p>I agree with Saeed.  In the diagram above, the layers that represent &#8220;what we do&#8221; have black text and borders (Strategy, Portfolio, and Product).  The layers that represent &#8220;how we do it&#8221; have white text and borders (Release, Iteration, Daily).  In Mike Cohn&#8217;s presentation on agile planning, he specifically calls out that agile planning happens in this (inner) scope.</p>
<p>Managing a product backlog (in scrum) is the place where things blur a little.  Determining what goes into the product backlog is &#8220;what we do&#8221;, prioritizing those product backlog items is &#8220;when do we do it&#8221;, and fitting them into individual releases (<a title="scheduling with timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">timeboxes</a> and <a title="rolling wave planning" href="http://tynerblain.com/blog/2006/07/25/incremental-project-mgmt/">rolling-wave planning</a>) is &#8220;how we do it.&#8221;  As agile teams stress, communication here is the key.</p>
<p>The true challenge that companies face is to provide agile development teams with the context needed to develop software.</p>
<h2>Providing Context to Agile Teams</h2>
<p>Product management is primarily a strategic activity, combining market insights () with company strategy to design a product portfolio, and to determine which problems a particular product should solve, for a particular market segment.  This leads to a <a title="buyer persona and user persona" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">focus on buyer personas and user personas</a>.</p>
<p>Establishing and maintaining the connection between market insights and agile development teams will develop <a title="distinctive competence from being market driven" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">a distinctive competence for your company</a>.  One key is to connect <a title="stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">stakeholder goals</a> with implementation activities.  This involves translation from the language of business to the language of developers.</p>
<p>An effective bridge across that communication divide has to be visceral and very straightforward.  Many agile team members rail against anything that looks like overhead, and the manifesto even codifies this disposition &#8211; &#8220;<a title="agile manifesto" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">working software over comprehensive documentation</a>.&#8221;</p>
<p>Our magic decoder ring must be simple, explicit, and light-weight.  Sounds like a job for the Ishikawa diagram.</p>
<h2>Ishikawa Diagrams for Agile Product Management</h2>
<p>The Ishikawa diagram, also known as a cause-and-effect diagram or as a fishbone diagram, can be used to <a title="ishikawas for product managers" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">describe and decompose market problems</a>.  Consider the following near-real-world example:</p>
<p>You&#8217;re developing a product for sales reps.  The key to your product&#8217;s success is user adoption, and you believe the way to get that adoption is by helping sales reps to maximize their compensation.  Sales reps are generally managed via commission-based compensation models.  You establish &#8220;Maximize Sales Compensation&#8221; as a goal for your software (for these users, in this market segment).  You then acknowledge that there are a series of &#8220;smaller&#8221; problems that have to be solved before sales reps actually can maximize their compensation.  An Ishikawa diagram of your results would look like the following (consider only the main branches):</p>
<p><a href="http://photos.smugmug.com/photos/384746454_ASdyM-L.gif"><img class="alignnone" title="market ishikawa" src="http://photos.smugmug.com/photos/384746439_MCSvi-L.gif" alt="" width="450" height="179" /></a>[<a title="market driven ishikawa" href="http://photos.smugmug.com/photos/384746454_ASdyM-L.gif">click for larger version</a>]</p>
<p>For some problems (and some teams!) this may be enough information to provide the context to develop a product backlog.  And your agile team will move forward into managing their own execution from the product backlog stage.  For larger or more complex problems (such as this example), you will need more detailed communication before diving into user stories / use cases.</p>
<p>The same Ishikawa diagram, with more detail, looks like the following:</p>
<p><a href="http://photos.smugmug.com/photos/384746511_Un8EL-L.gif"><img class="alignnone" title="detailed market driven ishikawa" src="http://photos.smugmug.com/photos/384746482_NFmAJ-L.gif" alt="" width="450" height="179" /></a>[<a title="detailed market driven ishikawa" href="http://photos.smugmug.com/photos/384746511_Un8EL-L.gif">click for larger version</a>]</p>
<p>For the largest and most complex problems, this is still not enough.  You can take each major branch of the Ishikawa diagram and create a child Ishikawa diagram.  However, from an agile standpoint (as in &#8220;staying close to your market&#8221;), you don&#8217;t want to do all of that detailed analysis up front.  Once you&#8217;ve prioritized the main branches in your main Ishikawa diagram, you will want to go to the next level of detail only for the first branch.  You want to make sure that you are delivering &#8220;working software&#8221; &#8211; not &#8220;comprehensive documentation.&#8221;  Delay your detailed analysis to the last practical moment.</p>
<p>Assuming you chose &#8220;Improve Predictability of Sales&#8221; as the first market problem to address with your product.  And within that choice, you are going to tackle &#8220;Align Solutions to Customer Problems&#8221; first.  Your child Ishikawa diagram could look like the following:</p>
<p><a href="http://photos.smugmug.com/photos/384746474_PvgoW-L.gif"><img class="alignnone" title="decomposed ishikawa" src="http://photos.smugmug.com/photos/384746465_CZCFd-L.gif" alt="" width="450" height="183" /></a>[<a title="decomposed ishikawa market problem" href="http://photos.smugmug.com/photos/384746474_PvgoW-L.gif">click for larger version</a>]</p>
<p>At this point, you would start writing user stories (or defining use cases) around recording customer problems, searching for &#8216;comparable problems&#8217;, predicting the problems a customer might face (before your first sales call), etc.  Those user stories will then get mapped to releases and iterations, and their implementation will be managed through the daily standups.</p>
<h2>Outbound Communication of Agile Delivery</h2>
<p>This problem-decomposition approach was presented top-down, specifically around providing the needed context to an agile development team to guide their design and implementation activities, giving them the opportunity to intentionally solve valuable problems, in alignment with the company&#8217;s strategy.</p>
<p>This same approach can be leveraged in outbound communication of what the team will deliver (and when).  You can easily construct a product roadmap that is actually an &#8220;agile problem roadmap.&#8221; [Ed: can I trademark that?  Probably not, since <a title="agile roadmaps" href="http://www.enthiosys.com/problems-we-solve/agile-roadmaps/">Enthiosys already does it</a>, but without the word <em>problem</em>.]  In the short term, talk about specific problems (&#8220;Align Solutions to Customer Problems&#8221;) that you are solving.  In the longer range plan, talk about the next level of problems (&#8220;Improve Predictability of Sales&#8221;).  The team is not committing to a widget or feature.  The team is committing to providing a solution to a particular problem in a given release.</p>
<p>When you commit to a particular feature, you inhibit your ability to change as you learn.  And that&#8217;s bad.  You need to be able (after each iteration) to say &#8220;This problem is still valuable, but our previous idea about how to solve it turned out to be a bad idea.&#8221;  If you communicate at the feature level, you&#8217;ve added overhead to your process &#8211; you now have to manage expectations and update your communications, EVERY time you change designs.</p>
<p>You introduce another problem &#8211; these Ishikawa diagrams are so easy to read, and you&#8217;re now managing your roadmap based on problems being solved in a given iteration/release &#8211; should you tell everyone?  Many product managers sidestep the &#8220;Do we make our roadmap public?&#8221; question because they don&#8217;t create an easy to consume roadmap.  With this approach, you do.  So you have to decide if it needs to be a secret.</p>
<h2>Zero-Overhead Planning</h2>
<p>Early in this article, I said &#8220;agile team members rail against anything that looks like overhead.&#8221;  Creating Ishikawa diagrams is zero-overhead.  Or nearly so.  99% of the work that is displayed through the Ishikawa is work that you have to do anyway, to have <a title="successful products are intentional products" href="http://tynerblain.com/blog/2008/05/19/successful-products/">an intentional approach to product creation</a>.  The only overhead that is introduced is in the creation of <a title="how to create an ishikawa diagram" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">the Ishikawa diagram</a>.  If your thoughts aren&#8217;t already organized this way, you&#8217;re in trouble.  It takes almost no time to create the diagram that reflects what you should already be thinking.</p>
<p>And that qualifies as low-overhead.  And high value.  That should win over any resistance from the team.</p>
<h2>Conclusion</h2>
<p>As a product manager, you have to synthesize market problems, and develop a product vision to solve those problems that is aligned with your strategy.  As someone who is &#8220;part of&#8221; or &#8220;working with&#8221; (whichever matches your situation) an agile development team, you need a way to provide context to your implementation team.  That context can easily be conveyed with an Ishikawa diagram, with almost no incremental effort.  Your team can easily consume the diagram, and it gives them the freedom to explore different solution designs.  It also enables you to communicate your plans with the rest of the company (and externally, if desired).</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Agile+Product+Management%3A+Providing+Context+http://bit.ly/LNLYM+" 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/10/01/agile-product-management-providing-context/&amp;t=Agile+Product+Management%3A+Providing+Context" 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/10/01/agile-product-management-providing-context/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Market Driven Competitive Advantage</title>
		<link>http://tynerblain.com/blog/2008/08/26/market-driven-advantage/</link>
		<comments>http://tynerblain.com/blog/2008/08/26/market-driven-advantage/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 03:54:05 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile product management]]></category>
		<category><![CDATA[enthiosys]]></category>
		<category><![CDATA[market driven]]></category>
		<category><![CDATA[tuned in]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=697</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F08%2F26%2Fmarket-driven-advantage%2F", "style": "big", "title": "Market Driven Competitive Advantage" });

Your strategy should be driven by the needs of the market.  Becoming market-driven is critical to intentional product success.  But it is not enough to understand your market.  You have to sustain your understanding, and take advantage of it, competitively.

Markets Evolve Over Time
We all acknowledge [...]]]></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%252F08%252F26%252Fmarket-driven-advantage%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Market%20Driven%20Competitive%20Advantage%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F08%2F26%2Fmarket-driven-advantage%2F", "style": "big", "title": "Market Driven Competitive Advantage" });</script></div>
<p><img src="http://www.smugmug.com/photos/359645395_oFcSZ-L.jpg" alt="mostly full glass" width="250" height="333" /></p>
<p>Your strategy should be driven by the needs of the market.  Becoming market-driven is critical to intentional product success.  But it is not enough to understand your market.  You have to sustain your understanding, and take advantage of it, competitively.</p>
<p><span id="more-697"></span></p>
<h2>Markets Evolve Over Time</h2>
<p>We all acknowledge that markets are not completely static.  If they were, there would be no impetus for innovation.  Customers change, their environment changes, and the competitive landscape changes.  All of these changes cause a market to change.  Even if a given market were static, you don&#8217;t have perfect information about it.  Your understanding of that market increases over time.</p>
<p><em>The market</em> is an abstract concept, and you have to make decisions about something tangible.  What is tangible is your <em>understanding of</em> the market.  And you make decisions based on your understanding of the market. You can visualize the market in a way that may cause you to rethink (or solidify) your approach to solving market problems.</p>
<p><img src="http://www.smugmug.com/photos/359586973_FCDye-L.gif" alt="market needs over time" width="450" height="297" /></p>
<p>In the chart above, we are showing that there is some amount of information (think of information as an understanding that we haven&#8217;t developed yet) about a market.  It represents the potential of what <em>could be</em> understood about the market.  Over time, the amount that can be understood increases.  Also note that there is already a non-zero amount of &#8220;understanding&#8221; at the start of the chart.  The market did not spontaneously spring forth from an oyster the moment you decided to look at it.</p>
<h2>You Affect Your Markets</h2>
<p>There is also an important dynamic to consider &#8211; you affect your markets by introducing solutions.</p>
<p><img src="http://www.smugmug.com/photos/359586979_LzGM9-L.gif" alt="influencing the market" width="450" height="384" /></p>
<p>Whenever someone introduces an innovative solution to a market problem, the market changes.  Solving that problem exposes another problem.  Or it may introduce another problem.</p>
<ul>
<li>When cars replaced horses, they introduced atmospheric polution problems.  Before that, we only had to worry about horse waste.</li>
<li>When airplanes solved the problem of traveling long distances in a short amount of time, more people began traveling further.  And those people discovered a need (desire) to stay connected (phone, internet, etc) while en-route.</li>
<li>When it became convenient to carry music around with you on a portable player, the problem of carrying <em>all of your music</em> around with you was discovered / created.</li>
</ul>
<p>You can argue that these problems were introduced because of innovative solutions, or that the problems were latent, and were only discovered because of the innovations.  It doesn&#8217;t matter.  What matters is that these problems were previously unaddressable, and now solutions to these problems have value.</p>
<h2>Your Knowledge of Your Markets</h2>
<p>Using the diagram above as a baseline of what <em>can be known</em>, and overlaying your knowledge looks like the following:</p>
<p><img src="http://www.smugmug.com/photos/359586988_coaQz-O.gif" alt="your knowledge of the market" width="450" height="385" /></p>
<p>At the moment when you decide to understand a market, you don&#8217;t know anything about it.  Your knowledge rapidly approaches what &#8220;can be known&#8221;, and assuming you have <a title="managing market data" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/">perfect research, elicitation, and synthesis skills</a>, you eventually understand all that can be understood about the needs of the market.</p>
<p>So much advice has been written about <a title="buyer personas and user personas" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">being market focused</a>, that it is easy to think that this is all you need.  <a title="converting from an mrd to a prd" href="http://tynerblain.com/blog/2006/02/09/mrd-to-prd-requirements-conversion/">As soon as you understand &#8220;everything&#8221; you define requirements</a> and start creating products.  <a title="study your market, not your customers" href="http://tynerblain.com/blog/2008/07/15/the-non-customer-is-always-right/">Being market focused</a> is extremely important.  But you have to sustain that focus.</p>
<h2>Competition in Your Market</h2>
<p>In the diagram above, you see the dynamics of your market.  You develop an understanding of your market, a competitor delivers an innovative solution to a problem, and you have to play catch-up.  Note &#8211; this is only talking about playing catch-up in <em>your understanding</em> of the market.  You also need to continue to develop new solutions for the market in order to capitalize on your understanding.</p>
<p>The next diagram shows what this will look like when there is active competition in the market.</p>
<p><img src="http://www.smugmug.com/photos/359586993_Nf6nZ-L.gif" alt="competitive market dynamics" width="450" height="394" /></p>
<p>The diagram above shows <a title="product differentiation is the key" href="http://tynerblain.com/blog/2006/05/24/differentiation-vs-improvement/">three disruptive events</a>.  <a title="ten tips for preventing innovation" href="http://tynerblain.com/blog/2006/03/06/top-ten-tips-for-preventing-innovation/">You innovate</a>, <a title="innovation magic square" href="http://tynerblain.com/blog/2006/03/28/magic-square-of-innovation/">someone else innovates</a>, and you innovate again.  Each time someone else innovates, they have an edge on understanding the market.  They just solved a problem, uncovering new problems that can be solved, and you have to gain that knowledge too &#8211; it wasn&#8217;t available (or didn&#8217;t exist) previously.</p>
<h2>Competitive Advantage</h2>
<p>Each time you innovate, you establish a temporary competitive advantage.</p>
<p><img src="http://www.smugmug.com/photos/359586997_xXG83-L.gif" alt="competitive advantage" width="416" height="378" /></p>
<p>When you introduce a novel solution to a problem, the market uncovers new problems.  Presumably, you have already thought about the next steps.  You have already engaged the market (through <a title="prototyping and iteration" href="http://tynerblain.com/blog/2006/02/21/software-requirements-specification-iteration-and-prototyping/">prototyping</a> and other <a title="active listening" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">elicitation activities</a>) to get feedback on your solution.  Hopefully, as part of that exercise, you&#8217;ve also explored &#8220;what&#8217;s next&#8221; and incorporated that into your plans.  This is the advantage you have created.  If you don&#8217;t explore &#8220;what&#8217;s next,&#8221; you waste that opportunity.</p>
<p>The opportunity won&#8217;t last forever.  Your competition will see your solution, talk to your customers, and otherwise explore &#8220;what&#8217;s next.&#8221;  It will take time, but they will catch up.  Over the long term, you benefit from exploiting a series of these opportunities.  Look at the iPod and the Zune.  Apple has delivered a series of disruptive changes, continually building on what they have learned.  Microsoft is playing catch-up with the Zune.  Each version of the Zune shares a lot of design cues and features with earlier iPods.  To Microsoft&#8217;s credit, they are trying to innovate too &#8211; like with the &#8220;squirt&#8221; technology that lets you share a song temporarily with another Zune user.  Either this is not a valuable problem, or the solution is not effective &#8211; because it has not taken off (in buzz, market share, or general clamoring for an iPod-based equivalent).</p>
<h2>Fast Follower Competition</h2>
<p>Some <a title="being effective as a second mover" href="http://tynerblain.com/blog/2006/02/28/second-mover-opportunities-bringing-a-gun-to-a-knife-fight/">competitors intentionally act as second movers</a>.  Instead of focusing their efforts on discovering problems or developing innovative solutions, they focus on playing catch-up very very well.</p>
<p><img src="http://www.smugmug.com/photos/359587004_nHRq5-O.gif" alt="fast follower" width="379" height="379" /></p>
<p>A fast-follower reduces (but does not eliminate) your temporary advantage.  At the same time, the fast follower creates their own advantage relative to every other competitor in the market.  This can be a very effective strategy, especially when there are multiple innovators in a single market.  The fast follower can follow the best ideas of each innovator, possibly even ending up with a better overall product than any of the innovators (who are slow followers of other companies).</p>
<p>Microsoft is clearly a follower of Mozilla when it comes to browsers.  The tabbed navigation concept introduced in Firefox was a game changer, at least for the tech-savvy who need to juggle multiple web pages at the same time.  Personally, I was thrilled to move from multiple Internet Explorer windows to a single Firefox window with multiple tabs.  IE7 has that capability now too.  I don&#8217;t know the browser market well enough to know if I would characterize Microsoft as a <em>fast</em> follower, but my guess is no.</p>
<p>After the post-World War 2 reconstruction in Japan, the Japanese automakers definitely acted as fast followers.  They did it with assistance from the US, and even moved past the US automakers by choosing to listen to Deming (a guru on efficiency and quality) instead of ignoring him like the US big 3 (automakers) did.  And it did indeed pay off for them &#8211; <a title="toyota unseats gm" href="http://www.usnews.com/blogs/flowchart/2008/6/9/how-toyota-could-become-the-us-sales-champ.html">Toyota is poised to unseat GM</a> as the number one automaker in the US for 2008.  There are certainly other factors at play, but the Japanese companies would never have had a chance if they had not been competitive in the first place.</p>
<h2>Business Agility</h2>
<p>Business agility is one of the hotter buzz-phrases these days.  The business-rules-automation market is thriving on the desire of businesses to become more agile.  Why does agility matter?  Because it can make you dramatically more competitive.</p>
<p><strong>Business Agility is not the same as agile development!</strong></p>
<p>Business Agility is a measure of the ability of a business to adapt to the changing needs of the market.  To adapt quickly, your company has to accomplish two things:</p>
<ul>
<li>Quickly identify and understand the changes in your market.</li>
<li>Quickly deliver new and improved solutions that address the changing needs of your markets.</li>
</ul>
<p>[How to quickly execute is covered in other articles in the <a title="business rules category" href="http://tynerblain.com/blog/category/business-rules/">business rules</a> (including their <a title="The impact of business rules on agility" href="http://tynerblain.com/blog/2007/07/12/business-rules-yield-agility/">impact on agility</a>) and <a title="agile articles" href="http://tynerblain.com/blog/category/software-development/agile/">agile development</a> categories on Tyner Blain.]</p>
<p><img src="http://www.smugmug.com/photos/359587014_yRG3q-O.gif" alt="business agility" width="450" height="394" /></p>
<p>In the diagram above, you (the red curve on the top) are innovating repeatedly.  You are also adapting to the changes in your market from other innovations (and other sources of change, not shown).  You are practicing agile product management.  Your competition (the green curve on the bottom) is not.  As this trend continues, you see that your <em>exploitable advantage</em> becomes a sustained advantage.  You will have an ever-increasing advantage as you stay tapped into your market.  If you are executing (to deliver product) and communicating (to educate), you will be able to leverage your insights into a position of thought leadership.  [Note: "thought leader" is a title that can <em>not</em> be self-annointed, it has to be earned and perceived within your market / community.]</p>
<p>The end result is that you will be consistently aware of unserved market needs that you can serve before your competitors can.  That translates into increased demand for your products, which you can use to grow share, grow profits, etc.</p>
<p>That&#8217;s why business agility matters.  It isn&#8217;t cost reduction that is important, its top-line growth.</p>
<h2>Agile Product Management</h2>
<p>Staying tapped into your market like this is a strategic component of agile product management.  While continuously staying tapped-in (or <a title="pragmatic marketing tuned in" href="http://www.pragmaticmarketing.com/tunedin">Tuned-In</a>), you regularly interact with your internal stakeholders to make agile development processes work.  Enthiosys has a great <a title="enthiosys whitepaper" href="http://www.enthiosys.com/apm-whitepaper/">introduction to agile product management</a> (free download with registration), if you&#8217;re getting frustrated with the many &#8220;empty presentations&#8221; about agile product management, then definitely check that one out &#8211; it has meat.  Relative to their <em>onion</em>, the topics in this article map to the <em>portfolio</em> and <em>product</em> layers.</p>
<p>If you aren&#8217;t already convinced of the value of a tight market focus, consider the following diagram, contrasting the impact of agile product management and traditional, <a title="waterfall and incremental processes" href="http://tynerblain.com/blog/2006/01/03/foundation-series-software-process-waterfall-process-versus-incremental-process/">waterfall</a> product management.</p>
<p><img src="http://www.smugmug.com/photos/359587019_SFibj-L.gif" alt="waterfall product management" width="450" height="303" /></p>
<ul>
<li>The red curve on the top (same as previous slides) represents an agile product manager staying tapped into her market.</li>
<li>The grey curve in the middle represents a product manager staying tapped into the market, but not as tightly.</li>
<li>The green curve on the bottom shows what happens when your organization is trapped in a waterfall delivery model.</li>
</ul>
<p>The green curve, instead of reflecting understanding, reflects the understanding <em>against which the team executes</em>.  When you lock in or &#8220;freeze&#8221; the requirements, then begin a sequential development process, you stop taking advantage of market insights.  You essentially decouple your implementation team from the market &#8211; &#8220;we know enough already.&#8221;  So even though your product manager may be learning more (the grey curve), you aren&#8217;t taking advantage of that knowledge, so it is adds no value.</p>
<p>As an agile product manager, working with an agile implementation team, you will run circles around your waterfall competition.  Not only will you establish thought leadership, but you will be creating a distinctive competence for your company.  Your ability to understand the market, and quickly respond to changes in the market with valuable solutions will differentiate your company.</p>
<p>You also effectively change the dynamics of your sales over time.  Your accelerated insights allow you to release products (or capabilities) earlier.  Here&#8217;s a diagram from an earlier article on the ROI of agile that highlights the impact of this:</p>
<blockquote><p>If we take the most conservative approach to modeling sales with an agile process, the graph would look like the following:</p>
<p><img title="agile product life cycle" src="http://sehlhorst.smugmug.com/photos/132613783-M.png" alt="agile product life cycle" /></p>
<p>The sales volume curve is shifted to the left without changing its shape. The exact same growth curve applies to the product (this is the conservative assumption). The <em>decline</em> in sales continues to decline. The difference is that our previous time horizon (which remains fixed) now includes additional sales.</p>
<p><a title="agile development roi" href="http://tynerblain.com/blog/2007/02/27/agile-development-roi-1/">Product Life Cycle and the ROI of Agile Development</a></p></blockquote>
<h2>Agile Without Product Management</h2>
<p>There are people who suggest that product management has no place in an agile environment.  Those people believe that markets <em>can&#8217;t</em> be understood until they are served.  They will argue that customers &#8220;don&#8217;t know what they want&#8221; based upon the feedback they get from prototypes.  Customers change their minds.  Yup.  But it isn&#8217;t that the customers don&#8217;t know what they want, nor is it that markets don&#8217;t have shared needs/problems/goals/requirements &#8211; they do.  Providing solutions to those problems drives next-level thinking, and the identification of new and different problems.</p>
<p>If you don&#8217;t have product management, <a title="product success by intentional design" href="http://tynerblain.com/blog/2008/05/19/successful-products/">you can only succeed through luck</a>.  Throw stuff against the wall and see what sticks.  If something sticks, you win.  This is better than a waterfall model that ignores the market (for long periods of time where release plans are &#8220;set in stone&#8221;).  But it falls well short of driving a very efficient, adaptable implementation team directly towards identifiable market needs.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Market+Driven+Competitive+Advantage+http://bit.ly/hTAtt+" 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/08/26/market-driven-advantage/&amp;t=Market+Driven+Competitive+Advantage" 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/08/26/market-driven-advantage/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Good Enough For Now</title>
		<link>http://tynerblain.com/blog/2008/06/02/good-enough-for-now/</link>
		<comments>http://tynerblain.com/blog/2008/06/02/good-enough-for-now/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 02:30:59 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Slightly off-topic]]></category>
		<category><![CDATA[agile philosophy]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=684</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F06%2F02%2Fgood-enough-for-now%2F", "style": "big", "title": "Good Enough For Now" });

Adam Bullied wrote a really good article about not losing motivation in the face of challenges.  His closing quote spun us off on a philosophical tangent about being &#8220;good enough.&#8221;

Good Advice
I&#8217;ve enjoyed several great conversations with Adam over the past couple years.  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%252F06%252F02%252Fgood-enough-for-now%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Good%20Enough%20For%20Now%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F06%2F02%2Fgood-enough-for-now%2F", "style": "big", "title": "Good Enough For Now" });</script></div>
<p><img src="http://sehlhorst.smugmug.com/photos/306244049_24wV2-L-0.jpg" alt="crystal" width="250" height="261" /></p>
<p>Adam Bullied wrote a really good article about not losing motivation in the face of challenges.  His closing quote spun us off on a philosophical tangent about being &#8220;good enough.&#8221;</p>
<p><span id="more-684"></span></p>
<h2>Good Advice</h2>
<p>I&#8217;ve enjoyed several great conversations with Adam over the past couple years.  I thank this blog as the catalyst for introduction to him and other really sharp folks, many of whom generously contribute to the discussion that launch themselves from some of our articles.  Thanks to all of you!</p>
<p>Adam&#8217;s article wrapped up into three general ideas for me:</p>
<ol>
<li>Good general advice (don&#8217;t get discouraged by external events).</li>
<li>Good product management advice (focus on the problem).</li>
<li>Pragmatic execution advice (be good enough).</li>
</ol>
<p>On the first point &#8211; just go read Adam&#8217;s article.  You&#8217;ll like his writing, and you&#8217;ll find a new blog to read regularly (if somehow you aren&#8217;t already).</p>
<p>On the second, Adam says the following (the links are ours):</p>
<blockquote><p>You need to just do a few things really well. In fact, things I’ve already mentioned:</p>
<ol>
<li>Ensure you are <a title="importance of solving problems" href="http://tynerblain.com/blog/2008/05/21/problems-are-everywhere/">solving a problem</a></li>
<li>Align things <a title="ishikawa diagram for viewing problems" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">from top to bottom</a></li>
<li>Execute — quickly and with confidence</li>
</ol>
<p>This “top-down” stuff I speak of is from the vision / problem identification, to the roadmap, to the requirements, to each release being pushed out the door.</p>
<p><cite><a title="encouragement" href="http://writethatdown.com/archives/2008/05/dont-get-discouraged">Don&#8217;t Get Discouraged</a>, Adam Bullied</cite></p></blockquote>
<h2>Good Enough (For Now)</h2>
<p>Adam&#8217;s third point, about being good enough, I believe, is an encouragement to make progress, and move the ball forward in the face of adversity.</p>
<p>Perhaps it&#8217;s my own character flaw, but my first instinct was to think of his comment out of context.  I&#8217;ve always believed that &#8220;good enough&#8221; is the enemy of great.  &#8220;Good enough&#8221; can be interpreted as &#8220;do less than you can.&#8221;  That&#8217;s not what I think Adam is saying, although that&#8217;s the thought that popped into my head at first.  Adam&#8217;s point is really a good one &#8211; don&#8217;t let the fact that you can&#8217;t make something perfect <em>today</em> prevent you from making it <em>better</em> today.  Tomorrow you can make it better still.  Add up enough tomorrows&#8230;</p>
<p>Maybe this distinction is why I like the underpinnings of agile (iterative) development.  Find the most important thing you can do <em>today</em> and do it.  Tomorrow, you will be smarter, having done something already and learned from it.  You&#8217;re in a position to better understand importance.  Use that learning to do the most important thing you can think of &#8211; even in the unlikely event that the most important thing you can do is refactor what you just did the day before.  Over time, things get better.</p>
<p><em>Good enough for now</em> means do the best thing you know how to do today.  Don&#8217;t hesitate because you suspect there is something even better you could do, if you could only think of it.</p>
<p>Maybe this nuance is not communicated well by some proponents of agile development.  Many smart people rail against the hyperbole of big-A Agile, and throw the baby out with the bathwater and discard small-a agile.</p>
<p>Present yourself with two possible approaches to deciding where you will live for the next fifty years.  The first approach is to decide now (but you have a month to do research and make your decision), and no matter what, you have to live there for fifty years.  The second approach is to decide now (and your answer must be given in the morning), but if you decide after a year that you want to live somewhere else, you can move.  And every year, you get to re-assess and stay or move.</p>
<p>I like this better than the classic &#8220;build a house&#8221; analogy, because it represents both the cost of change and the impermanence of decisions in a way that is more aligned with software development.  It also allows for some other analogies.  If you know that you may decide to move again in a year, you&#8217;ll make different investments in your new abode.  You may choose to live minimally to reduce the cost of moving again.  You may become an expert at moving.  And you can easily balance the cost of any particular move with the perceived benefit of making the move.  &#8220;Not worth it?&#8221;  stay where you are.  As you learn more about where you live (and where you might live), you develop a better appreciation of what is important to you.  My guess is that sometime well before the fifty year mark, you would have settled in on the &#8220;perfect&#8221; home.</p>
<p>Now what are the odds that the perfect home after several iterations of change is the exact same home you would pick with a month of research and no experiences?</p>
<p>Each home is good enough for now, and likely to be better than the last home (after all, you&#8217;re smarter each time you move than the time before).  And you stop moving when the opportunities to improve fall short of the cost of making changes.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Good+Enough+For+Now+http://bit.ly/aqA6z+" 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/06/02/good-enough-for-now/&amp;t=Good+Enough+For+Now" 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/06/02/good-enough-for-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Successful Products: Lucky or Intentional?</title>
		<link>http://tynerblain.com/blog/2008/05/19/successful-products/</link>
		<comments>http://tynerblain.com/blog/2008/05/19/successful-products/#comments</comments>
		<pubDate>Tue, 20 May 2008 03:03:47 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></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 gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[empirical processes]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[market identification]]></category>
		<category><![CDATA[product roadmaps]]></category>
		<category><![CDATA[product success]]></category>
		<category><![CDATA[rolling wave planning]]></category>
		<category><![CDATA[software product success]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=681</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F05%2F19%2Fsuccessful-products%2F", "style": "big", "title": "Successful Products: Lucky or Intentional?" });

Is your product successful because you were lucky, or because you were methodical and intentional?
Do you want to build a plan where you are dependent on good fortune, or do you want to make your own &#8220;luck?&#8221;  Both approaches work, but only one [...]]]></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%252F05%252F19%252Fsuccessful-products%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Successful%20Products%3A%20Lucky%20or%20Intentional%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F05%2F19%2Fsuccessful-products%2F", "style": "big", "title": "Successful Products: Lucky or Intentional?" });</script></div>
<p><img src="http://sehlhorst.smugmug.com/photos/298153581_QJz2t-L.jpg" alt="heads" width="250" height="187" /><img src="http://sehlhorst.smugmug.com/photos/298153556_t7Vug-L.jpg" alt="tails" width="250" height="187" /></p>
<p>Is your product successful because you were lucky, or because you were methodical and intentional?</p>
<p>Do you want to build a plan where you are dependent on good fortune, or do you want to make your own &#8220;luck?&#8221;  Both approaches work, but only one makes sense as an intention.  Slide 3 of your presentation to a venture capitalist should not say &#8220;And then we get lucky!&#8221;</p>
<p><span id="more-681"></span></p>
<h2>Product Success Is Not Easy</h2>
<p>Saeed Khan wrote a critique recently, in <a title="product success at on product management" href="http://onproductmanagement.wordpress.com/2008/05/19/product_success/"><em>On Product Management</em></a>, of an article by Phil Meyers on the <a title="chasing outcomes" href="http://www.tunedinblog.com/blog/2008/03/chasing-outcome.html"><em>Tuned In</em></a> blog.  Phil&#8217;s article is an analysis of the pending re-organization at Starbucks, and the one quote that Saeed keyed in on was:</p>
<blockquote><p>At the end of the day, its simple.  Create a product or service that your buyers want to buy and the rest takes care of itself.</p></blockquote>
<p>Saeed&#8217;s point is that it is not that easy.  A lot of hard work goes into creating a successful product.  And Saeed&#8217;s right.</p>
<p>Maybe Phil&#8217;s point is that the <em>executive</em> should not worry about the details, and trust in his team to do all the hard work.  But he doesn&#8217;t really come out and say that, so we can&#8217;t really back him up on that front.  Let&#8217;s give him the benefit of the doubt anyway.  There&#8217;s another point that Phil makes that is potentially disturbing:</p>
<blockquote><p>Looking at metrics like average same day sales and products per square foot lead you down some strange paths. Schultz even admitted as much in a letter from the board about a year ago in which he worried about the company &#8216;losing its core&#8217;.</p></blockquote>
<p>Yes, abandoning your goals to pursue your metrics is bad.  But don&#8217;t abandon your metrics to pursue your goals &#8211; unless all you want to do is get lucky.</p>
<p>You might argue that a company like <a title="animoto" href="http://animoto.com/">Animoto </a>got lucky when their product spread virally within <a title="facebook" href="http://www.facebook.com/home.php">Facebook</a> and their user base jumped from 25,000 to 700,000 users.  But if you listen to the <a title="net@nite animoto interview" href="http://twit.tv/natn49">interview</a> that Amber MacArthur did with co-founder Brad Jefferson, you will realize that it was only when they <em>tweaked</em> their product offering &#8211; a response to empirical analysis of product adoption metrics &#8211; did their success explode.  I would argue that they <em>made their luck</em> by being intentional.</p>
<h2>Empirical Processes</h2>
<p>When you can perfectly model your business analytically, you can measure the inputs and know (with certainty) the outputs.  As a college engineering student, I learned this.  Real world processes can never be perfectly modeled analytically.  As a professional engineer, I learned this too.  Real world processes are empirical.  The secret to great engineering is to apply analytics to those empirical processes to create disruptive innovation, and combine it with empirical controls that help you statistically predict the likely outputs.  The answer is simply that neither analytics nor empiricism <em>alone</em> can help you achieve greatness.</p>
<p>Business processes are also empirical in nature.  Even when you can devise an analytical model for the behavior of an <em>isolated</em> system, you have to acknowledge that <em>no real world system</em> is isolated.  You have to expect unexpected inputs into the system.  As Saeed points out, you have to apply analyses to make smart decisions when developing your process (or business model, or product).  And what Phil appears to discount is that you also need to apply empirical measurements to your process (or business or product) to control the expected results.</p>
<h2>Creating Successful Products Intentionally</h2>
<p>This article proposes that there are two paths to product success.  The first path is simple.  Cross your fingers, then get lucky.  The second path is harder.  Be intentional.</p>
<ol>
<li>Identify your market (and therefore your customers and competition).</li>
<li>Identify their problems, and select the ones you will solve.</li>
<li>Create a product roadmap (aka a &#8220;plan&#8221;) to solve those problems.</li>
<li>Design and implement solutions to the most valuable problems.</li>
<li>Get feedback on your solutions.</li>
<li>Incorporate your feedback into your plan (step 3) and repeat.</li>
<li>Revisit your market (step 1) and the problems you choose to solve (step 2) and repeat.</li>
</ol>
<p>Note: Step 7 should occasionally replace step 6, so that you stay focused on your market, and not just an out-of-date snapshot of what used to be important to your customers.</p>
<h2>1. Identify Your Market</h2>
<p>There are a lot of ways to pick a market to focus on.  You can chase demographics &#8211; there sure will be a lot of retired people in the US thanks to the <a title="wikipedia baby boomers" href="http://en.wikipedia.org/wiki/Baby_boomer">baby-boomers</a>.  You can go with what you know &#8211; years of paying attention to an industry presents ample opportunities to understand the market.  You can create an entirely new &#8211; blue ocean &#8211; market by solving problems people don&#8217;t even realize they have until you offer a solution.  Choosing a market is the subject of many books, not just an item in a list.</p>
<p>Once you choose a market, you need to <a title="market segmentation" href="http://tynerblain.com/blog/2006/04/25/market-segmentation-or-senseless-mistake/">segment the market</a> into groups of people who share the same problems and who value solutions to those problems similarly.  You can <a title="improve your market segmentation" href="http://tynerblain.com/blog/2006/11/01/how-to-apply-market-research-better/">apply market research to improve your market segmentation</a>.</p>
<h2>2. Select The Problems You Will Solve</h2>
<p>You use <a title="elicitation techniques" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">elicitation skills</a> to <a title="writing good problem statements" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">identify the problems that your customers face</a>.  And when you have to address multiple market segments, you can <a title="prioritization across market segments" href="http://tynerblain.com/blog/2008/04/09/improved-prioritization/">prioritize the problems across those market segments</a>.</p>
<h2>3. Create a Product Roadmap</h2>
<p>Once you&#8217;ve prioritized the problems you are going to solve, create a product roadmap.  <a title="product roadmaps should focus on problems" href="http://tynerblain.com/blog/2008/04/28/dont-build-a-stupid-product-roadmap/">Your product roadmap should show the problems you are solving</a>, and the order in which you will solve them.  When you define sequencing, you also must define your approach to <a title="scheduling product releases" href="http://tynerblain.com/blog/2007/03/01/scheduling-product-releases/">scheduling product releases</a>.</p>
<h2>4. Design and Implement Solutions</h2>
<p>There are two keys to successful execution of the plan you built with your product roadmap.  First &#8211; <a title="rolling wave planning" href="http://tynerblain.com/blog/2006/07/25/incremental-project-mgmt/">use rolling-wave planning to define near-term details</a> and long term vagaries.  Second &#8211; make sure you have <a title="intro to continuous integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> as a key component to managing quality throughout the process, instead of checking quality at the end (or even worse &#8211; <a title="The cost of ignoring quality" href="http://tynerblain.com/blog/2006/02/22/software-testing-series-measuring-the-cost-of-quality/">ignoring quality</a>).</p>
<h2>5. Get Feedback on Your Solutions</h2>
<p>This is half of why <a title="Is agile bad?" href="http://tynerblain.com/blog/2007/04/16/is-agile-bad-for-software/">agile (when done right) works</a> [Can you believe the discussion over the last year on this article is up to 27 comments?!].  Feedback is not just something you get when <a title="prototype feedback and other requirements gathering techniques" href="http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/">sharing a prototype with stakeholders</a>.  Feedback is also something you must get as part an <a title="incremental vs waterfall release processes" href="http://tynerblain.com/blog/2006/01/03/foundation-series-software-process-waterfall-process-versus-incremental-process/">incremental release methodology</a>.</p>
<p>You can even <a title="measuring the roi of design" href="http://tynerblain.com/blog/2007/07/30/measuring-the-roi-of-design/">measure the ROI of your designs</a>, and incorporate feedback at the design level.</p>
<h2>6. Incorporate Feedback Into Your Plan</h2>
<p>There&#8217;s no point in gathering feedback <a title="enabling and resisting change" href="http://http://tynerblain.com/blog/2007/07/09/enabling-and-resisting-change/">if your organization and your process are organized to resist changes to the plan</a>.  Contrary to what the Standish Group&#8217;s CHAOS study has always implied [and we've made this implicit mistake too], release schedules are not the primary measure of project success.  In <a title="defining success" href="http://www.ddj.com/architect/202800777?pgno=1">a fantastic article at <em>Dr. Dobb&#8217;s Journal</em></a>, Scott Ambler points out that in his survey results, almost two thirds of professionals find that doing the right thing is more important than meeting a project schedule.</p>
<blockquote><p>Schedule: 61.3 percent of respondents said that it is more important to deliver a system when it is ready to be shipped than to deliver it on time.</p></blockquote>
<p>Do the right thing.  If the right thing involves changing the schedule, that doesn&#8217;t make it wrong.  What makes this work is the fact that you are getting feedback early and often.  It is a risk mitigation strategy, designed to reduce the possibility that you will create an unsuccessful product.  It is not a strategy designed to keep your project on schedule no matter how mis-aligned you are to your market.</p>
<h2>7. Revisit What You Are Doing And Why</h2>
<p>If step 6 is small-scale course correction, this is large-scale course correction.  You may discover that solving a big problem for your customers exposes a new &#8220;biggest&#8221; problem that wasn&#8217;t there before.  By revisiting step 2, you can choose to tackle or ignore those newly discovered problems.</p>
<p>You may also discover that by leveraging your investments to date, you <a title="value maximization" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">dramatically improve the ROI</a> of solving problems in another valuable market segment.  This is because even if solutions to those problems have the same value, solutions to those problems now have <a title="5 tips for calculating costs and ROI" href="http://tynerblain.com/blog/2007/02/08/five-roi-calculation-tips/">much lower costs</a> (for you).  By revisiting step 1, you give yourself the opportunity to best manage your strategy, your resources, and your plans.</p>
<h2>Conclusion</h2>
<p>Product Success may have an element of luck, but you should never plan to hit the lottery.  Be intentional in what you will do, and a good plan, executed well and adapting to change, will get you there.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Successful+Products%3A+Lucky+or+Intentional...+http://bit.ly/z2rCw+" 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/05/19/successful-products/&amp;t=Successful+Products%3A+Lucky+or+Intentional..." 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/05/19/successful-products/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
