<?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; Requirements gathering</title>
	<atom:link href="http://tynerblain.com/blog/category/requirements/requirements-gathering/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Sun, 26 Feb 2012 15:00:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Important Problems &#8211; Comparing Products Part 4</title>
		<link>http://tynerblain.com/blog/2011/12/06/comparing-products-4/</link>
		<comments>http://tynerblain.com/blog/2011/12/06/comparing-products-4/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 17:11:20 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[comparing products]]></category>
		<category><![CDATA[design context]]></category>
		<category><![CDATA[incremental development]]></category>
		<category><![CDATA[market problems]]></category>
		<category><![CDATA[persona]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1548</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F12%2F06%2Fcomparing-products-4%2F", "shorturl": "http://bit.ly/ry84hk", "style": "big", "title": "Important Problems - Comparing Products Part 4" }); If you understand the important market problems, you can make a good product.  If you understand how important each problem is, for each group of customers, you can make a great product.  If you&#8217;re new to this series, go [...]]]></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%252F2011%252F12%252F06%252Fcomparing-products-4%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fry84hk%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Important%20Problems%20-%20Comparing%20Products%20Part%204%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F12%2F06%2Fcomparing-products-4%2F", "shorturl": "http://bit.ly/ry84hk", "style": "big", "title": "Important Problems - Comparing Products Part 4" });</script></div>
<p><img class="alignnone" title="Better like this?  Or better like this?" src="http://sehlhorst.smugmug.com/Other/blog/i-sMx4NMj/0/O/opthamologist.jpg" alt="" width="250" height="187" /></p>
<p>If you understand the important market problems, you can make a good product.  If you understand <em>how important</em> each problem is, for each group of customers, you can make a great product.  If you&#8217;re new to this series, go back and<a title="Comparing Products - Intro" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/"> start at the first article</a>, we&#8217;ll wait for you right here.</p>
<p><span id="more-1548"></span></p>
<h2>Overall Product Comparison Process</h2>
<p>This is a relatively long series.  Each article will start with a recap of the overall process.</p>
<p>Getting useful information from comparing products requires you to:</p>
<ol>
<li><a title="Comparing Products - Part 1 - Introduction &amp; Overview" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/">Introduction &amp; Overview (so that the step-numbers align with the article numbers)</a></li>
<li><a title="Comparing Products - Identify Your Customers" href="http://tynerblain.com/blog/2011/11/22/comparing-products-2/">Identify your customers.</a></li>
<li><a title="Comparing Products - Market Problems" href="http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/">Articulate the problems they care about solving.</a></li>
<li><strong>Determine how important solving each problem is, relative to the other problems, for your customers.</strong> (This article)</li>
<li><a title="Comparing Products Part 5 - Important Personas" href="http://tynerblain.com/blog/2011/12/15/comparing-products-5/">Characterize how important it is for you to solve the problems of each group of customers.</a></li>
<li><a title="Know Your Competition - Comparing Products Part 6" href="http://tynerblain.com/blog/2011/12/21/comparing-products-6/">Discover which (competitive) products your customers consider to be your competition.</a></li>
<li><a title="Rating Your Competition" href="http://tynerblain.com/blog/2012/01/12/comparing-products-7/">Assess how effectively each competitive product solves each important problem.</a></li>
<li><a title="Tally the Score" href="http://tynerblain.com/blog/2012/01/19/comparing-products-part-8/">Assess how effectively each competitive product solves each important problem, for each important group of customers.</a></li>
</ol>
<p>With this information, you can create a point of view about how your product compares to the others.</p>
<h2>Important Problems</h2>
<p>In the previous article on defining market problems, we identified 6 personas / contexts by which we would compare the kindle fire with other products.</p>
<p><img class="alignnone" title="personas in contexts" src="http://sehlhorst.smugmug.com/Other/blog/i-GR6tBdf/0/O/20111129Personas-in-Context.png" alt="" width="424" height="616" /></p>
<ol>
<li><strong>Tina </strong>- A hi-tech prosumer who is using the device to get smarter about the latest trends in her industry</li>
<li><strong>Tim </strong>- A hi-tech prosumer who is using the device to enjoy niche fiction content, particularly comics, e-zines and self-published works</li>
<li><strong>Kenny </strong>- A typical kindle user who is using the device for his work in the finance space, studying proposals and business plans, etc</li>
<li><strong>Karla </strong>- A typical kindle user and voracious reader who is using the device to eliminate the large pile of books on her nightstand</li>
<li><strong>Chris </strong>- A basic consumer who would is studying business in college</li>
<li><strong>Christina </strong>- A basic consumer who is in a book club, and who is always reading the latest best seller</li>
</ol>
<p>The reason it was important to identify contexts is that the important aspect of personas is to identify groups of users with homogeneous perspectives on the relative value of solutions to particular problems &#8211; and the three personas previously identified would place different values on the solutions, depending on the context in which they were using the device.</p>
<h2>Revisiting the Market Problems</h2>
<p>We also identified a set of problems that these personas would want to solve.</p>
<ol>
<li><strong>Read Anywhere</strong> &#8211; Be able to read content in multiple physical environments / on multiple devices, and not lose my place in the book.</li>
<li><strong>Annotate</strong> &#8211; Be able to annotate / highlight what I’m reading for future review.</li>
<li><strong>Talk About It</strong> &#8211; Be able to have conversations with other people who are reading what I’m reading.</li>
<li><strong>Find More to Read</strong> &#8211; Make it easier for me to find other content that I would like to read.</li>
<li><strong>Subscribe</strong> &#8211; Be able to subscribe to magazines / newspapers / blogs / serial publications.</li>
<li><strong>More From My Network </strong>- Be able to read what people I trust are reading.</li>
</ol>
<p>This process is iterative, and in reviewing the 6 problems above, a valid question is &#8211; are problems (4) and (6) different versions of the same problem?  When writing requirements, <a title="Writing Design-Free Requirements" href="http://tynerblain.com/blog/2009/11/03/design-free-requirements/">it is important to specify the problems and not the design</a>.  This is a tricky one, as <a title="Requirements vs. Design" href="http://tynerblain.com/blog/2006/02/11/requirements-vs-design-which-is-which-and-why/">it blurs the line between requirements and design</a>.  Reasonable people can make either of the following interpretations:</p>
<ul>
<li>The market requirement is to &#8220;find more to read&#8221; by any means necessary &#8211; it could be through receiving recommendations from the user&#8217;s network, or it could be based on some not-specified &#8220;black box&#8221; heuristic and scoring algorithm.  These two requirements are duplicates.</li>
<li>Yes, ultimately the user is trying to find more to read, but this is actually <em>too abstract</em> &#8211; consider the goal of &#8220;enjoy using the device,&#8221; which is also the ultimate goal, and too abstract to be useful in guiding the product creation.  <a title="Trust Pyramid customer model" href="http://tynerblain.com/blog/2011/04/06/trust-pyramid-a-customer-model/">Asking people you trust for recommendations</a> is a well established practice for finding reading material, and people make the distinction that it is inherently different from, and provides unique value relative to other approaches (like finding similar products, or &#8220;people who bought <em>this</em> also bought <em>this other thing</em>&#8220;).</li>
</ul>
<p>Based on research I&#8217;ve done for previous clients (primarily on findability and recommendations in an eCommerce context), my personal perspective is that these problems are distinct, and should be treated differently.  This is one of those <em><a title="The Art of Product Management at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/1439216061/tynerblain-20/">Art of Product Management</a></em> situations, where different product managers can, will, and should reach different conclusions.  For this analysis, the problems will be treated distinctly, and the data that I invent will reflect that I believe these problems would manifest with different importance for different personas in different contexts.</p>
<p>In contrast to the above analysis, problem (1) conflates the two notions of &#8220;multiple devices&#8221; and &#8220;multiple environments.&#8221;  People familiar with eInk technologies and Amazon&#8217;s <em>Whispersync</em> technology may see these as independent solutions to reading in direct sunlight, and moving from device to device respectively.</p>
<p>I&#8217;ve combined these two ideas, primarily because of the influence of <a title="Multiscreen Strategies" href="http://www.slideshare.net/preciousforever/patterns-for-multiscreen-strategies">this presentation about multi-screen strategies</a> from <a title="Precious Design Consultancy" href="http://precious-forever.com/">Precious </a>, a design and strategy consultancy.</p>
<p><img class="alignnone" title="Multiscreen Patterns from Precious" src="http://precious-forever.com/wp-content/uploads/multiscreen-patterns-medium.png" alt="" width="500" height="352" /> [image from <a title="Multiscreen Strategies" href="http://precious-forever.com/2011/05/26/patterns-for-multiscreen-strategies/?PHPSESSID=69vhf1d9imfu7ucq6aimiiscf0">Precious article</a>]</p>
<p>My interpretation is that the notion of device shifting is something that is intentional &#8211; use the right device for the right environment &#8211; and not arbitrary.  Based on that, and the technologies that enable reading in different physical environments &#8211; like direct sunlight or a dimly lit room &#8211; should be evaluated as part of implementing a device-shifting strategy, and not independently.</p>
<p>Combining these two (in this example) is an opinion-based decision, just as keeping problems (4) &amp; (6) distinct is an opinion based decision.  If the data you gather in identifying problems leads you to combine or separate those problems, do so.</p>
<h2>Gathering the Data</h2>
<p>In the previous article on<a title="Identifying Market Problems" href="http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/"> identifying market problems</a>, I indicated that you are using a mix of qualitative and quantitative data-collection techniques to identify the problems.  It is during those activities that you also quantify the relative importance of solving these problems.</p>
<p><a title="Innovation Games" href="http://innovationgames.com/">Innovation Games </a>are a particularly engaging way to gather this type of information [disclosure: while I haven't formally done work for the company, I have worked with and know and respect the founder <a title="Luke Hohmann on Twitter" href="http://twitter.com/#!/lukehohmann">Luke Hohmann</a> , and likely will work with him again in the future].  I&#8217;m including them here because they have worked for me.  A couple examples:</p>
<ul>
<li><strong><a title="20/20 Vision Game" href="http://innovationgames.com/2020-vision/">20/20 Vision</a></strong> &#8211; get customers to put solutions to the problems into relative order (for them).  Effectively, a card-sorting exercise.</li>
<li><strong><a title="Speed Boat Innovation Game" href="http://innovationgames.com/speed-boat/">Speedboat</a></strong> &#8211; the <em>relative priority</em> insight you get from this game comes when people put anchors at different depths, indicating the severity of a particular problem.</li>
<li><strong><a title="Whole Product Innovation Game" href="http://innovationgames.com/whole-product-game/">Whole Product</a></strong> &#8211; this brainstorming game can also be used to identify what people perceive to be <em>Must Be</em> (table-stakes) capabilities of your product.</li>
</ul>
<p>Surveys can also be used to gather data when you need to get feedback from larger numbers of people, or are operating in an environment that is less collaborative.  A simple approach &#8211; ask the question &#8220;How important is it to you to solve problem X?&#8221;  Read up on <a title="Likert Scales" href="http://en.wikipedia.org/wiki/Likert_scale">Likert scale</a>s to understand the dangers of asking this type of question, and determine if you need to bring in someone who is an expert at survey design to minimize the impact of <em>bad survey design</em> in your results.</p>
<h2>Quantifying the Results</h2>
<p>Using the word, <em>quantifying</em>, may not be wholly accurate here &#8211; it implies something scientific, when really you are synthesizing the data you have received, in order to eventually determine the relative importance of solving (or improving your solution of) specific market problems.  A made-up word like <em>numberifying</em> might be better.  If <em>quantifying, </em>used in this context, causes your head to explode, please comment below &#8211; I suspect this might be a hot-button for folks, but I&#8217;m not really sure if it is.</p>
<p><img class="alignnone" title="Quantified Problems by Persona" src="http://sehlhorst.smugmug.com/Other/blog/i-L6vZsWr/0/O/20111206Persona-Problem.png" alt="" width="450" height="128" /> [<a title="Quantified Problems by Persona" href="http://sehlhorst.smugmug.com/Other/blog/i-HjD4GMq/0/O/20111206Persona-Problem.png">larger image</a>]</p>
<p>The above table shows hypothetical data representing the &#8220;quantified&#8221; relative importance of having a solution for each problem, to each persona / context.</p>
<p>For example, Kenny wants to use a device to review and annotate proposals and business plans &#8211; internal company documents.  He can do this on any of a number of devices, but the ability to do it &#8220;anywhere,&#8221; as long as he can annotate, is what really matters to him.  He&#8217;s not at all interested in capabilities to find more to read, discuss what he&#8217;s reviewing, or subscribe to new content.</p>
<p>For Christina, however, the act of reading is more social than private.  She is not worried about making notes in what she reads or subscribing to new content &#8211; she&#8217;s reading books and talking about them with her friends.</p>
<h2>Gaining Insights</h2>
<p><img class="alignnone" title="Elastic user doll" src="http://sehlhorst.smugmug.com/photos/176167352-M.jpg" alt="" width="250" height="300" /></p>
<p>We&#8217;re not to the point in the series where we can actually compare competing products effectively yet, but you can already start to get insights.  Imagine you are designing a product for Christina.  Your business case is about going after the &#8220;Oprah book club&#8221; audience, and Christina is your target user.  You already know which problems are important to her, and more importantly, which problems are <em>not</em> important to her.  You can completely eliminate the subscription and annotation capabilities from your product and create something that Christina would love.</p>
<p>This step alone allows you to avoid the <em><a title="Elastic Users are Bad" href="http://tynerblain.com/blog/2007/07/23/elastic-users/">elastic user problem</a></em>.</p>
<p>Usually, you aren&#8217;t able to design a product for just one user.  You can&#8217;t be <em>all things</em> to <em>all people</em>.  This is part of the analysis you have to do to determine what to build first &#8211; identifying the relative importance of problems to each persona.  The next step is to figure out the relative importance of each persona.  Combining the two allows you to understand the <em>overall</em> relative importance of each problem.</p>
<p><strong>Summary</strong></p>
<p>Creating a great product for your customers means not only knowing who your customers are, but also knowing which problems they want to solve, and among those problems, which ones it is most important to solve or solve first.  When comparing your product to competitive products, the best measure is one that compares the products based on the most important problems for each group of customers.</p>
<p>Recapping the overall flow of this series of articles on product comparison</p>
<blockquote><p>Getting useful information from comparing products requires you to:</p>
<ol>
<li><a title="Comparing Products introduction" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/">Introduction and Overview (so that the step-numbers align with the article numbers)</a></li>
<li><a title="Comparing Products - Who Are Your Customers" href="http://tynerblain.com/blog/2011/11/22/comparing-products-2/">Identify your customers.</a></li>
<li><a title="Comparing Products Part 3 - Market Problems" href="http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/">Articulate the problems your customers care about solving.</a></li>
<li><strong>Determine how important solving each problem is, relative to the other problems, for your customers.</strong> (This article)</li>
<li><a title="Comparing Products Part 5 - Important Personas" href="http://tynerblain.com/blog/2011/12/15/comparing-products-5/">Characterize how important it is for you to solve the problems of each group of customers.</a></li>
<li><a title="Know Your Competition - Comparing Products Part 6" href="http://tynerblain.com/blog/2011/12/21/comparing-products-6/">Discover which (competitive) products your customers consider to be your competition.</a></li>
<li><a title="Rating Your Competition" href="http://tynerblain.com/blog/2012/01/12/comparing-products-7/">Assess how effectively each competitive product solves each important problem.</a></li>
<li><a title="Tally the Score" href="http://tynerblain.com/blog/2012/01/19/comparing-products-part-8/">Assess how effectively each competitive product solves each important problem, for each important group of customers.</a></li>
</ol>
<p>With this information, you can create a point of view about how your product compares to other products.</p></blockquote>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Important+Problems+%E2%80%93+Comparing+Products+Part+4+http%3A%2F%2Fbit.ly%2Fry84hk+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/2011/12/06/comparing-products-4/&amp;t=Important+Problems+%E2%80%93+Comparing+Products+Part+4" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2011/12/06/comparing-products-4/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>Market Problems &#8211; Comparing Products Part 3</title>
		<link>http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/</link>
		<comments>http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 19:51:25 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[comparing products]]></category>
		<category><![CDATA[design context]]></category>
		<category><![CDATA[incremental development]]></category>
		<category><![CDATA[market problems]]></category>
		<category><![CDATA[persona]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1531</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F11%2F29%2Fcomparing-products-part-3-market-problems%2F", "shorturl": "http://bit.ly/vh6OJI", "style": "big", "title": "Market Problems - Comparing Products Part 3" }); Comparing products without an understanding of the important market problems by which to compare the products is a waste of time.  This is the third in a series on comparing products - jump back to the introduction if you [...]]]></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%252F2011%252F11%252F29%252Fcomparing-products-part-3-market-problems%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2Fvh6OJI%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Market%20Problems%20-%20Comparing%20Products%20Part%203%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F11%2F29%2Fcomparing-products-part-3-market-problems%2F", "shorturl": "http://bit.ly/vh6OJI", "style": "big", "title": "Market Problems - Comparing Products Part 3" });</script></div>
<p><img class="alignnone" title="Horses pulling a carriage" src="http://sehlhorst.smugmug.com/Other/blog/i-VPpdMsB/0/O/white-horses.jpg" alt="" width="250" height="187" /></p>
<p>Comparing products without an understanding of the important market problems <em>by which to compare the products</em> is a waste of time.  This is the third in a series on comparing products -<a title="Comparing Products - Introduction" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/"> jump back to the introduction</a> if you haven&#8217;t already read the previous articles.  Go ahead, we&#8217;ll wait, then come back.</p>
<p><span id="more-1531"></span></p>
<h2>Overall Product Comparison Process</h2>
<p>This is a relatively long series.  Each article will start with a recap of the overall process.</p>
<p>Getting useful information from comparing products requires you to:</p>
<ol>
<li><a title="Comparing Products - Part 1 - Introduction &amp; Overview" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/">Introduction &amp; Overview (so that the step-numbers align with the article numbers)</a></li>
<li><a title="Comparing Products - Identify Your Customers" href="http://tynerblain.com/blog/2011/11/22/comparing-products-2/">Identify your customers.</a></li>
<li><strong>Articulate the problems they care about solving.</strong> (This article)</li>
<li><a title="Comparing Products - Important Problems" href="http://tynerblain.com/blog/2011/12/06/comparing-products-4/">Determine how important solving each problem is, relative to the other problems, for your customers.</a></li>
<li><a title="Comparing Products Part 5 - Important Personas" href="http://tynerblain.com/blog/2011/12/15/comparing-products-5/">Characterize how important it is for you to solve the problems of each group of customers.</a></li>
<li><a title="Comparing Products Part 6 - Know Your Competition" href="http://tynerblain.com/blog/2011/12/21/comparing-products-6/">Discover which (competitive) products your customers consider to be your competition.</a></li>
<li><a title="Rating Your Competition" href="http://tynerblain.com/blog/2012/01/12/comparing-products-7/">Assess how effectively each competitive product solves each important problem.</a></li>
<li><a title="Tally the Score" href="http://tynerblain.com/blog/2012/01/19/comparing-products-part-8/">Assess how effectively each competitive product solves each important problem, for each important group of customers.</a></li>
</ol>
<p>With this information, you can create a point of view about how your product compares to the others.</p>
<p>Too many product comparisons are actually mislabeled <em>positioning papers</em>, highlighting differences, and putting one product in the best possible light.  An honest product comparison must compare products in the context of problems that customers are willing to pay to solve.  Those are the <em>important</em> market problems.</p>
<h2>Important Market Problems</h2>
<p><img class="alignnone" title="Model T Grill" src="http://sehlhorst.smugmug.com/Other/blog/i-7hkQ35r/0/O/model-T.jpg" alt="" width="250" height="187" /></p>
<p>Probably everyone reading this has heard the Henry Ford quip about how if he had listened to his customers, he would have built <em>faster horses</em>.  A great marketing sound-bite, but not actually true.  The market problem that cars initially addressed wasn&#8217;t &#8220;get there faster&#8221;, the market problem was &#8220;spent fuel&#8221; disposal (for horses) in major cities &#8211; <a title="New Yorker summary" href="http://www.newyorker.com/arts/critics/books/2009/11/16/091116crbo_books_kolbert">2.5 million pounds per day in New York City</a> (hat tip to <a title="Super Freakonomics at Amazon" href="http://www.amazon.com/exec/obidos/ASIN/0060889586/tynerblain-20/">Super Freakonomics</a> for the first reference I saw).  If cars had generated as much manure as horses, do you think they would have been as successful?</p>
<p><img class="alignnone" title="seashell" src="http://sehlhorst.smugmug.com/Other/blog/i-Gq8MbBF/0/O/seashell.jpg" alt="" width="250" height="232" /></p>
<p>The first step in identifying the <em>important</em> market problems is to identify a set of market problems that <em>might be important. </em>Then you can form an opinion about which ones are important, based on which problems are important to the potential customers in the markets on which you are focusing.  Identifying problems is an unconstrained activity, like collecting seashells on a beach.  There will always be more shells.</p>
<p><img class="alignnone" title="infinite seashells" src="http://sehlhorst.smugmug.com/Other/blog/i-7MQd5jC/0/O/seashells.jpg" alt="" width="187" height="250" /></p>
<p>You will find shells that aren&#8217;t very pretty or are broken.  You will find some shells that are &#8220;perfect&#8221;, and there will always be some shells that exist, that are &#8220;perfect&#8221; that you won&#8217;t find.  The tough part is knowing when to stop looking for shells and move forward with the ones that you&#8217;ve already found.  You have to decide when your shell collection is &#8220;good enough.&#8221;  You can&#8217;t have a collection that includes all of the seashells, you don&#8217;t want a meager collection with too few shells, and you want the best shells you can find to be the ones you display on your coffee table.</p>
<p><img class="alignnone" title="seashell collection" src="http://sehlhorst.smugmug.com/Other/blog/i-svTSkmg/0/O/seashell-collection.jpg" alt="" width="250" height="187" /></p>
<p>This is a good example of the debate between <em>big up-front design (BUFD) &amp; big up-front requirements (BUFR)</em> and incremental product development.  In <em><a title="The Design of Design" href="http://tynerblain.com/blog/2010/07/06/the-design-of-design/">The Design of Design</a></em>, Frederick Brooks provides a great discussion about this debate between rationalism and empiricism.  The best approach I&#8217;ve found to date is to use a combination of agile and waterfall techniques to strike a balance between <em>good enough</em> and <em>right now</em>.</p>
<p>The best approach that I&#8217;ve found to do this to combine incremental development techniques to the activities of product management, combined with <a title="How to use timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">timeboxing </a>to impose practical, artificial constraints on the process.  An agile product management process looks roughly like the following:</p>
<p><img class="alignnone" title="Agile product management process" src="http://sehlhorst.smugmug.com/Other/blog/i-Hv2zF55/0/O/20111129Product-Management.png" alt="" width="450" height="296" /> [<a title="Larger agile product management process" href="http://sehlhorst.smugmug.com/Other/blog/i-FFmhqFH/0/O/20111129Product-Management.png">larger version</a>]</p>
<p>The steps of market research, analysis, and synthesis are the activities you perform.  Data is what you collect, and insights are what you form.  Analysis of data also leads you to perform more research.  Synthesis of those insights into a cohesive vision for your product will lead you back to more analysis and more research.  Note that this process has no ending &#8211; it goes on forever &#8211; or for as long as you are trying to solve these particular market problems.</p>
<p>As an example &#8211; in the previous article we identified a set of personas for our Kindle Fire example:</p>
<blockquote><p>For this series of articles, I will pretend that three personas were developed, in order to demonstrate this approach to comparing products:</p>
<ol>
<li><strong>Hi-Tech Prosumers</strong> &#8211; people who get excited about convergence, highly value additional multimedia capabilities, live a multi-device existence, and are acutely aware of competitive products.</li>
<li><strong>Typical Amazon Kindle Users</strong> &#8211; people who placed high value on the reading experience, the convenience of being able to easily get new content, and the absence of a subscription fee.</li>
<li><strong>Basic Consumers</strong> &#8211; people who read primarily on paper media, have recently started consuming multimedia on their computers, and anticipate becoming part of the &#8220;post pc era.&#8221;</li>
</ol>
<p>I will also invent additional data as we explore the rest of the product comparison process.<br />
<cite><a href="http://tynerblain.com/blog/2011/11/22/comparing-products-2/">Comparing Products Part 2 &#8211; Who Are Your Customers?</a></cite></p></blockquote>
<p>However, defining requirements for those personas risks creating a product that only satisfies the basest of goals &#8211; the lowest common denominators.  These examples don&#8217;t take into account the context of use &#8211; e.g. <em>why</em> is someone reading on their device? &#8211; and thus we are at risk of not creating the right product for any of them.  Even introducing two simple contexts</p>
<ul>
<li><strong>Education </strong>- Reading for work or school (directed study) or to gain knowledge about a topic (undirected study)</li>
<li><strong>Entertainment </strong>- Reading for pleasure, the literary equivalent of watching a movie</li>
</ul>
<p>You&#8217;re probably not going to want to take notes on the uses of foreshadowing and allegory when reading for entertainment.  It may be critically important to annotate key concepts and ideas when reading for education.</p>
<p>This single distinction should be clanging a bell in your head &#8211; it is very easy for one product to be <em>better than another</em> in one context of usage than in the other.  Looking at the three example personas from the previous article, there is not a good way to say &#8220;educational use is more important&#8221; for one group of people than for another.  If we iterate and refine our list of <a title="Personas for Goal Driven Development" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">personas</a> it will lead to a better comparison of products.</p>
<p><img class="alignnone" title="Personas in context" src="http://sehlhorst.smugmug.com/Other/blog/i-GR6tBdf/0/O/20111129Personas-in-Context.png" alt="" width="424" height="616" /></p>
<ol>
<li><strong>Tina </strong>- A hi-tech prosumer who is using the device to get smarter about the latest trends in her industry</li>
<li><strong>Tim </strong>- A hi-tech prosumer who is using the device to enjoy niche fiction content, particularly comics, e-zines and self-published works</li>
<li><strong>Kenny </strong>- A typical kindle user who is using the device for his work in the finance space, studying proposals and business plans, etc</li>
<li><strong>Karla </strong>- A typical kindle user and voracious reader who is using the device to eliminate the large pile of books on her nightstand</li>
<li><strong>Chris </strong>- A basic consumer who would is studying business in college</li>
<li><strong>Christina </strong>- A basic consumer who is in a book club, and who is always reading the latest best seller</li>
</ol>
<h2>Identifying Possibly Important Problems</h2>
<p>Now that we have a (better) idea of the customers for whom we are solving market problems, we need to create a list of <em>candidate</em> problems that <em>might be worth solving</em>.  I am not an expert on user research &#8211; so there may very well be a better way to do this, and hopefully someone will share that with us in the comments section &#8211; but here&#8217;s how I&#8217;ve learned to do it.  It is at least &#8220;good enough.&#8221;  The approach I&#8217;ve used is a 3-step process.</p>
<ol>
<li>Seed the Cloud &#8211; Start with what you think you know already</li>
<li>Refine the List &#8211; Validate and enhance that list through qualitative interviews</li>
<li>Empirical Validation &#8211; Assess the relative importance of those problems through quantitative research</li>
</ol>
<h2>Seeding the Cloud</h2>
<p>I like to start by capturing my initial ideas in a mindmap or <a title="Concept Maps" href="http://tynerblain.com/blog/2005/11/25/concept-maps-great-tool-for-eating-the-elephant-brainstorming-ideas-for-a-new-product/">concept map</a> &#8211; an ad hoc, semi-structured view of ideas.</p>
<p><img class="alignnone" title="mindmap of ereader uses" src="http://sehlhorst.smugmug.com/Other/blog/i-2WchjNL/0/O/mindmap-small.png" alt="" width="450" height="141" /> [<a title="larger mindmap of ereader concepts" href="http://sehlhorst.smugmug.com/Other/blog/i-Hdv5HjT/0/O/mindmap.png">larger image</a>]</p>
<p>I will then drive some <a title="Brainstorming Ideas" href="http://tynerblain.com/blog/2006/01/17/brainstorming-making-something-out-of-everything/">brainstorming</a> (<a title="Analysis of the effectiveness of brainstorming" href="http://tynerblain.com/blog/2006/06/19/brainstorming-stirs-the-pot/">more on brainstorming</a>) or <a title="Idea Seeding as Brainstorming Alternative" href="http://tynerblain.com/blog/2006/12/06/idea-seeding/">idea-seeding</a> or Innovation Games exercises to develop a refined list of market problems that might be worth solving.  These processes may lead to other artifacts and usually result in updates to my mindmap.  These exercises bring others into the exploration, so that it isn&#8217;t <em>The World According to Scott</em> &#8211; but it is still the world as seen &#8220;from the inside.&#8221;</p>
<p><strong>Refine The List</strong></p>
<p>What we&#8217;ve done at this point, while creating a set of questions worth asking, possibly, is still heavily biased as an inside-out view of the market.  It may be informed by previous research and synthesis of ideas, but it still reflects what <em>we</em> think about the market, not what customers in the market thinks about their problems.</p>
<p>The next step is to gather qualitative information from customers and potential customers that represent your target personas.</p>
<p>Anecdotally, this is the same process for <a title="Innovation and product management" href="http://tynerblain.com/blog/2011/03/02/product-managers-innovation/">driving outside-in innovation</a> from a product management perspective.</p>
<p><img title="outside-in innovation" src="http://sehlhorst.smugmug.com/Other/blog/20110302innovation/1203585600_pRRHK-O.png" alt="" width="445" height="447" /></p>
<p>Mostly-open-ended conversations with people that are reflective of your personas is how I transform from an inside-out view to an outside-in view.  I&#8217;m not asking people &#8220;what they want&#8221; (remember the faster horse), I&#8217;m getting validation that the problems they face are the ones I think I understand (waste disposal).  This usually uncovers additional problems I have not thought of, and discounts problems I may have thought were important.  Ethnographic research provides this type of information &#8211; and when I&#8217;m working with a team that does this work, I utilize it.  Usually, I&#8217;m not, so I will find representative users and ask them questions, or observe their behavior.  Essentially, I&#8217;m playing the 80/20 game &#8211; some insight is better than no insight.</p>
<h2>Empirical Validation</h2>
<p>At this stage, you still only have a list of <em>possibly important market problems</em>, but now you have much more confidence that the list is valid and mostly complete.  You also have some qualitative insights into the relative importance of problems to be solved (maybe you did a card-sorting exercise, or created<a title="Interrelation Digraphs" href="http://tynerblain.com/blog/2006/11/06/digraph-prioritization/"> interrelation digraphs</a>, or played <a title="20-20 Vision innovation game" href="http://innovationgames.com/2020-vision/">the 20-20 Vision game</a>, to get those inputs).</p>
<p>Now you can gather empirical data, to gain some statistical significance to your analysis.  You can do surveys that help you characterize and profile user behavior.  You can even do analysis of social networks, to see which problems resonate and why particular products get good (or bad) word of mouth.</p>
<p>Amplified Analytics has a <a title="amplified analytics" href="http://www.slideshare.net/GregoryPipzlchoice/customer-intelligence-social-media">presentation on slideshare showing how they can mine statistically significant information about features in the context of products</a>. [Hat tip to Gregory, for the pointer to this].</p>
<p><img class="alignnone" title="feature analysis" src="http://sehlhorst.smugmug.com/Other/blog/i-Sjj5K8t/0/O/amplified-analytics-graph.png" alt="" width="450" height="277" /></p>
<p>I would suggest using a similar approach to try and understand which problems people face (and solve) versus which features they prefer (as solutions).  But the same applies.  I&#8217;ve had good results creating surveys and using Google Docs to aggregate results that allow me to characterize problems, (reported) behavioral patterns &#8211; like frequency of use, and (reported) relative importance of solving particular problems (like performance times for specific actions), and quantifying data-characteristics (e.g. how many emails someone sends, and to how many different people, in a given day).</p>
<h2>Example Problem List</h2>
<p>Given that we&#8217;re not <em>actually</em> doing a rigorous (and free) analysis of the Kindle, I get to &#8220;pretend&#8221; that I did research following the examples above, resulting in the following list of market problems, that are of (at least some) interest to our target personas.  We&#8217;ll use this list moving forward in the rest of the series.</p>
<ol>
<li>Be able to read content in multiple physical environments / on multiple devices, and not lose my place in the book.</li>
<li>Be able to annotate / highlight what I&#8217;m reading for future review.</li>
<li>Be able to have conversations with other people who are reading what I&#8217;m reading.</li>
<li>Make it easier for me to find other content that I would like to read.</li>
<li>Be able to subscribe to magazines / newspapers / blogs / serial publications.</li>
<li>Be able to read what people I trust are reading.</li>
</ol>
<h2>Summary</h2>
<p>It is important to be <a title="The ONE Idea of Your Product" href="http://tynerblain.com/blog/2010/04/14/one-idea-product-management/">creating a product with an identity</a>.  That means knowing for whom the product is designed, and for which uses.  You have to know who your users are, and which problems they want to solve.  If you&#8217;re going to compare products, you should compare them based on their suitability as solutions to these important problems.</p>
<p>Recapping the overall flow of this series of articles on product comparison</p>
<blockquote><p>Getting useful information from comparing products requires you to:</p>
<ol>
<li><a title="Comparing Products introduction" href="http://tynerblain.com/blog/2011/11/15/comparing-products-1/">Introduction and Overview (so that the step-numbers align with the article numbers)</a></li>
<li><a title="Comparing Products - Know Your Customers" href="http://tynerblain.com/blog/2011/11/22/comparing-products-2/">Identify your customers.</a></li>
<li><strong>Articulate the problems your customers care about solving. </strong>(This article)</li>
<li><a title="Comparing Products - Important Problems" href="http://tynerblain.com/blog/2011/12/06/comparing-products-4/">Determine how important solving each problem is, relative to the other problems, for your customers.</a></li>
<li><a title="Comparing Products Part 5 - Important Personas" href="http://tynerblain.com/blog/2011/12/15/comparing-products-5/">Characterize how important it is for you to solve the problems of each group of customers.</a></li>
<li><a title="Know Your Competition - Comparing Products Part 6" href="http://tynerblain.com/blog/2011/12/21/comparing-products-6/">Discover which (competitive) products your customers consider to be your competition.</a></li>
<li><a title="Rating Your Competition" href="http://tynerblain.com/blog/2012/01/12/comparing-products-7/">Assess how effectively each competitive product solves each important problem.</a></li>
<li><a title="Tally the Score" href="http://tynerblain.com/blog/2012/01/19/comparing-products-part-8/">Assess how effectively each competitive product solves each important problem, for each important group of customers.</a></li>
</ol>
<p>With this information, you can create a point of view about how your product compares to other products.</p></blockquote>
<h2>Attributions</h2>
<ul>
<li>Thanks Stéphane Vandenwyngaert for the <a title="Model T photo" href="http://www.sxc.hu/photo/128194">Model T</a> photo.</li>
<li>Thanks michaelaw for the <a title="smiling coffee drinker" href="http://www.sxc.hu/photo/1287009">smiling coffee drinker</a> photo.</li>
<li>Thanks Dora Pete for the <a title="Self Portrait of a Woman" href="http://www.sxc.hu/photo/1181971">self-portrait</a> photo.</li>
<li>Thanks Benjamin Earwicker for the <a href="http://www.sxc.hu/photo/1141475">spontaneous</a> photo.</li>
</ul>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Market+Problems+%E2%80%93+Comparing+Products+Part+3+http%3A%2F%2Fbit.ly%2Fvh6OJI+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/2011/11/29/comparing-products-part-3-market-problems/&amp;t=Market+Problems+%E2%80%93+Comparing+Products+Part+3" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2011/11/29/comparing-products-part-3-market-problems/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Everything Old is New Again</title>
		<link>http://tynerblain.com/blog/2011/02/03/everything-old-is-new-again/</link>
		<comments>http://tynerblain.com/blog/2011/02/03/everything-old-is-new-again/#comments</comments>
		<pubDate>Thu, 03 Feb 2011 23:54:19 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Ishikawa Diagram]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[market driven]]></category>
		<category><![CDATA[migration continuum]]></category>
		<category><![CDATA[migration projects]]></category>
		<category><![CDATA[project goals]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1434</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F02%2F03%2Feverything-old-is-new-again%2F", "shorturl": "http://bit.ly/hyO0sa", "style": "big", "title": "Everything Old is New Again" }); A lot of teams that I&#8217;ve worked on and with get hung up when thinking about defining requirements for &#8220;migration projects&#8221; and &#8220;system upgrades.&#8221;  There&#8217;s some intangible barrier to being market focused when it comes to improving existing internal systems.  Every [...]]]></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%252F2011%252F02%252F03%252Feverything-old-is-new-again%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FhyO0sa%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Everything%20Old%20is%20New%20Again%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F02%2F03%2Feverything-old-is-new-again%2F", "shorturl": "http://bit.ly/hyO0sa", "style": "big", "title": "Everything Old is New Again" });</script></div>
<p><img class="alignnone" title="blindfolded programmers" src="http://sehlhorst.smugmug.com/Other/blog/blindfolded-typists/1176759477_Ltfqp-O.jpg" alt="" width="250" height="180" /></p>
<p>A lot of teams that I&#8217;ve worked on and with get hung up when thinking about defining requirements for &#8220;migration projects&#8221; and &#8220;system upgrades.&#8221;  There&#8217;s some intangible barrier to being <em>market focused</em> when it comes to improving <em>existing internal systems</em>.  Every <em>new</em> product represents a solution to an existing problem.  Why do so many projects move forward with teams that are blind to the actual requirements?</p>
<p><span id="more-1434"></span></p>
<h2>New Products</h2>
<p><img class="alignnone" title="tangled cassette tape" src="http://sehlhorst.smugmug.com/Other/blog/cassette-small/1176536700_4yVVB-O.jpg" alt="" width="250" height="187" /></p>
<p>Even &#8220;revolutionary&#8221; products like the iPod are just addressing existing market problems.  Part of what makes this statement true is looking at things from a market perspective &#8211; thinking about the <em>valuable</em> problems that people are willing to pay to solve.  Even if the iPod were the first mp3 player (<a title="The first mp3 player" href="http://reviews.cnet.com/4520-6450_7-5622055-1.html">it wasn&#8217;t</a>), it would still only be an improvement.  The first mp3 player was not <em>new</em>, it provided an improved way to listen to your music on the go.  You could put your whole music library in your pocket.  Much better than a stack of cassettes melting in the glove box of your car, or a tape getting caught on your keys and unraveled when you pull it out of your backpack.</p>
<p>What&#8217;s important, and difficult (especially for people with technology backgrounds), is to think about it in terms of what people are trying to accomplish &#8211; not <em>how</em> they are trying to accomplish it.  In a business process view, it is the difference between process (why) and procedure (how).</p>
<p>There&#8217;s <a title="continuum of migration projects" href="http://tynerblain.com/blog/2006/03/15/organizing-a-software-migration-project/">a continuum of migration projects</a>, ranging from <em>completely new</em> to <em>identical </em>processes.  Neither extreme <em>technically</em> exists &#8211; think of it as a range from infinite change in the existing process to 1 / (infinite change) in the existing process.</p>
<p><img class="alignnone" title="migration project continuum" src="http://sehlhorst.smugmug.com/photos/59244846-M.png" alt="" width="501" height="196" /></p>
<p>Near the &#8220;completely new process&#8221; /<em>infinite change</em> end of the spectrum are processes that are completely new <em>to you</em>.  Remember, you&#8217;re solving a problem, perhaps in a very innovative way, that people are already solving some other way.  You&#8217;re just providing a better solution approach.</p>
<p>Near the <em>identical process</em> end of the spectrum are projects are &#8220;pin-compatible&#8221; platform migrations and near-sighted legacy system migrations.  Moving from an old gas-guzzling car to a new, more efficient model is a good example.  I mention &#8220;near sighted&#8221; because that old system was designed to meet an old set of market needs, so the new system will, by definition, not meet current market needs &#8211; it will only meet the old market needs.  Pragmatically, when considering organizational change, it may make sense to do your system upgrade in two stages: migrate the systems (&#8220;nearly identical process&#8221;) and deal with all the gotchas of migration <em>first</em>, then start re-engineering the processes and optimizing the procedures to address new market needs (major and minor process changes, respectively) <em>second</em>.</p>
<p>Set aside the possible, possibly rational rationale* to migrate the implementation first, and the functionality second.  Consider that a deployment and logistics detail and get back to the problem at hand.  Most of the times I&#8217;ve been involved in system migrations, they have been initiated as cost-savings platform projects.  Over the last few years, more often the migration project gets prioritized as a means to an end &#8211; &#8220;doing <em>new thing X</em> is prohibitively expensive on the old system.&#8221;  That opens the door to talking about goals.</p>
<p style="padding-left: 30px;">* Couldn&#8217;t pass that one up.</p>
<h2>Capturing Goals</h2>
<p>On a recent project to migrate part of a company&#8217;s operations from one platform to another (system consolidation, after an acquisition), I created the following <a title="Ishikawa Diagrams of Goals" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">Ishikawa diagram</a> to represent the goals for the migration project.</p>
<p><img class="alignnone" title="migration project goals" src="http://sehlhorst.smugmug.com/Other/blog/blurred-ishikawa/1176737644_DctZG-O.png" alt="" width="450" height="259" /></p>
<p>Even a &#8220;don&#8217;t change anything&#8221; project has real underlying goals.  Once you discover them, you open the door to having conversations about making things <em>better</em>.  Might be a &#8220;do it later&#8221; situation, but often, there is an opportunity to grab some of the <em>low-hanging fruit</em> during the system implementation.</p>
<p>The most important reason to capture the goals when &#8220;everyone already knows the goals&#8221; &#8211; aside from the fact that that is never true &#8211; is to make sure decisions are being made eyes-open.</p>
<p>Requirements live outside of the timeline of a particular project.  Once you&#8217;ve identified those requirements (aka market needs / company strategy), the next question is to determine which of those goals <em>this</em> project is intended to support or advance.  That question drives a lot of clarity into strategic thinking, and those answers drive a lot of clarity into project execution.</p>
<p><img class="alignnone" title="blind typists" src="http://sehlhorst.smugmug.com/Other/blog/blindfolded-typists/1176759477_Ltfqp-O.jpg" alt="" width="250" height="180" /></p>
<p>When you don&#8217;t share the context of the goals of the project, you are effectively blindfolding your team.  You prevent them from discovering opportunities to make things better.  You prevent them from making the <em>right </em>choice, when decisions are otherwise (without the context of goals) arbitrary.</p>
<p>For example, we talk about <a title="satisficing" href="http://tynerblain.com/blog/2008/11/12/satisficing-sprints/">satisficing </a>as a means to know when to ship &#8211; when it is &#8220;good enough.&#8221;  Without context, the <em>opinion</em> of &#8220;good enough&#8221; comes from someone on the team, without guidance.  In an agile environment, with <em>self-directed</em> teams, you&#8217;re making a trust-based decision to explicitly empower the team to make those decisions.  Don&#8217;t you want to give them some information, to help them make that decision?</p>
<h2>Conclusion</h2>
<p>This article really only explores <em>part</em> of the process of making real, large, projects happen in large environments.  That is a topic I&#8217;ll be talking about in a couple months.  You won&#8217;t get a sense of sated accomplishment from reading just <em>this</em> article &#8211; too much of the end-to-end, start-to-finish of real projects is unaddressed.</p>
<p>You will, however, know how to start the project.  Define the goals.  Someone will tell you the goal is to &#8220;Copy what the old system did.  We don&#8217;t have time to re-engineer.  Why are you bothering me?  Let me know if I need to find someone who can get the job done.&#8221;</p>
<p>Now you know how to respond.</p>
<p>**Attributions</p>
<p>Thanks <a title="foxtongue on flickr" href="http://www.flickr.com/photos/foxtongue/">foxtongue </a>for the blindfolded typists photo</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Everything+Old+is+New+Again+http%3A%2F%2Fbit.ly%2FhyO0sa+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/2011/02/03/everything-old-is-new-again/&amp;t=Everything+Old+is+New+Again" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2011/02/03/everything-old-is-new-again/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Provocateurs Gather the Best Requirements</title>
		<link>http://tynerblain.com/blog/2010/11/05/provocateurs/</link>
		<comments>http://tynerblain.com/blog/2010/11/05/provocateurs/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 14:23:09 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<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[Requirements gathering]]></category>
		<category><![CDATA[requirements elicitation]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1389</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F11%2F05%2Fprovocateurs%2F", "shorturl": "http://bit.ly/avUAVy", "style": "big", "title": "Provocateurs Gather the Best Requirements" }); Ask someone what they want, and they&#8217;ll tell you they want a faster horse.  Provoke them, and they&#8217;ll tell you they have a &#8216;get there faster&#8217; problem, an &#8216;equine waste disposal&#8217; problem, and issues with total cost of ownership. Thought Provoking [...]]]></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%252F11%252F05%252Fprovocateurs%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FavUAVy%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Provocateurs%20Gather%20the%20Best%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F11%2F05%2Fprovocateurs%2F", "shorturl": "http://bit.ly/avUAVy", "style": "big", "title": "Provocateurs Gather the Best Requirements" });</script></div>
<p><img class="alignnone" title="provoking" src="http://sehlhorst.smugmug.com/Other/blog/provoke/1078498774_rUc9g-O.jpg" alt="" width="250" height="187" /></p>
<p>Ask someone what they want, and they&#8217;ll tell you they want a faster horse.  Provoke them, and they&#8217;ll tell you they have a &#8216;get there faster&#8217; problem, an &#8216;equine waste disposal&#8217; problem, and issues with total cost of ownership.</p>
<h2><span id="more-1389"></span><em>Thought</em> Provoking</h2>
<p>If your <a title="top ten requirements elicitation techniques" href="http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/">requirements elicitation</a> session looks like the photo above, <em>you&#8217;re doing it wrong</em>.  However, just asking people what they want and confirming that you heard what they said is also not enough.  <a title="Top 10 Active Listening Tips" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">Active listening is important</a>, but to capture great requirements, you also have to provoke thought about <em>why</em> someone is expressing a &#8220;requirement.&#8221;</p>
<p><a title="Adrian Reed on Twitter" href="http://twitter.com/#!/ukadrianreed">Adrian Reed</a> wrote a great article this week (hat tip to <a title="Kevin Brennan on Twitter" href="http://twitter.com/#!/bakevin/">Kevin Brennan</a>) on <a title="asking provoking questions" href="http://www.bridging-the-gap.com/asking-provocative-questions-to-encourage-lateral-thinking/">asking provoking questions</a> that leverage <a title="Lateral Thinking" href="http://en.wikipedia.org/wiki/Lateral_thinking">lateral thinking</a> techniques to get better insight into the true requirements.  Adrian presents eight questions, such as &#8220;Imagine if we fast-forward to 2 years after the implementation of this project, what will the organisation look like?&#8221;  Some of his questions remind me a lot of the ideas behind Enthiosys&#8217; <em><a title="Innovation Games" href="http://innovationgames.com/">Innovation Games</a></em> (and <a title="Innovation Games" href="http://www.amazon.com/dp/0321437292?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0321437292&amp;creative=373489&amp;camp=211189">Luke Hohmann&#8217;s <em>Innovation Games</em> book</a>).  The <em>remember the future</em>, and <em>product box</em> games immediately come to mind.</p>
<h2>Unprovoked Thoughts</h2>
<p>Most good subject matter experts I&#8217;ve met, when asked about the important problems to be solved, try and be really helpful and incorporate elements of <em>solutions</em> in their descriptions of <em>problems</em>.  They will say things like &#8220;the system must integrate with [other system] to do X.&#8221;  They may even ultimately be right, that this particular system integration is a constraint, and that &#8220;X&#8221; is the only acceptable (by policy) way to achieve &#8220;Y.&#8221;  But usually, neither constraint is a <em> requirement</em> &#8211; it is a <em>solution approach</em>.</p>
<p>Subject matter experts who are not as good at having and sharing insights about their domain often <a title="Problem manifestations and underlying problems" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">confuse problem manifestations with their underlying problems</a>.  By analogy, it is requesting treatment for a runny nose, when the problem the you have is the flu.  You can dry up your nose and still feel horrible.</p>
<h2>Provoking Questions Reveal Real Problems</h2>
<p>Adrian&#8217;s questions are designed to help you understand that you&#8217;re treating the flu, and not a runny nose.  Requirements gathering is a lot like diagnosis of a medical malady.  You have to discover the real problems.  The problems that people are willing to pay to solve.  You have to uncover the latent problems that are &#8220;hidden&#8221; behind problem manifestations.</p>
<p>In a (rare for me) American football analogy &#8211; the problem manifestation is that your quarterback is completing 1 of 20 forward passes.  Replacing the quarterback and receivers will not solve the problem.  The problem is that your offensive line is not able to give the quarterback sufficient time to throw higher-probability-of-success passes.</p>
<p>Asking questions that force people to describe their objectives differently is a good way to bypass solution-design answers.  It also creates chinks in the armor of problem manifestations.  <em>Completing more passes</em> is not the future you&#8217;re looking for, <em>winning more games</em> is the goal.  When you&#8217;re treating your flu, your goal is not to be sick &#8211; but with a dry nose.  Your goal is to be well.  When you ask someone to remember the future, they will will describe being <em>not sick</em>, not being <em>dry-nosed</em>.  The product box will be a description of a winning team.</p>
<p>Check out Adrian&#8217;s list of questions, and ask yourself, how do you get to the root causes?  <a title="Ishikawa Diagrams" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">Ishikawa diagrams (also known as <em>cause and effect</em> or <em>fishbone</em> diagrams)</a> provide a great visualization tool if you&#8217;re a spatial thinker or a whiteboard-talker.  In the example below, you can quickly see that <em>spending too much on fuel</em> is part of the real problem &#8211; that the <em>cost of operation is too high</em>.  You can likewise see that under-inflated tires are a source of poor fuel economy.  Check out the Ishikawa article for an explanation, or this article on <a title="providing context" href="http://tynerblain.com/blog/2008/10/01/agile-product-management-providing-context/">providing context</a> (with Ishikawa diagrams), and this article on <a title="buyers and users" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">buyer and user personas</a> for more examples of problem decomposition.</p>
<p><img class="alignnone" title="Ishikawa Diagram Example" src="http://sehlhorst.smugmug.com/photos/302635390_W2GiV-O.jpg" alt="" width="450" height="269" /></p>
<p>If you&#8217;ve got any examples of problem-statement-turned-problem, chime in below&#8230;</p>
<p> </p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Provocateurs+Gather+the+Best+Requirements+http%3A%2F%2Fbit.ly%2FavUAVy+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/11/05/provocateurs/&amp;t=Provocateurs+Gather+the+Best+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/11/05/provocateurs/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>A Prototype is Worth a Thousand Lines of Code</title>
		<link>http://tynerblain.com/blog/2010/10/25/a-prototype-is-worth-a-kloc/</link>
		<comments>http://tynerblain.com/blog/2010/10/25/a-prototype-is-worth-a-kloc/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 15:09:35 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Interaction design]]></category>
		<category><![CDATA[Interface Design]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agile interaction]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[process prototyping]]></category>
		<category><![CDATA[prototypes]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[uml as prototype]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1385</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F10%2F25%2Fa-prototype-is-worth-a-kloc%2F", "shorturl": "http://bit.ly/aMAQo4", "style": "big", "title": "A Prototype is Worth a Thousand Lines of Code" }); A picture is worth a thousand words.  A prototype is worth a thousand lines of code.  Two key elements of product management &#8211; and of agile development are elicitation and feedback.  Low fidelity artifacts can significantly improve [...]]]></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%252F10%252F25%252Fa-prototype-is-worth-a-kloc%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FaMAQo4%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22A%20Prototype%20is%20Worth%20a%20Thousand%20Lines%20of%20Code%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F10%2F25%2Fa-prototype-is-worth-a-kloc%2F", "shorturl": "http://bit.ly/aMAQo4", "style": "big", "title": "A Prototype is Worth a Thousand Lines of Code" });</script></div>
<p><img class="alignnone" title="quick sketch" src="http://sehlhorst.smugmug.com/Other/blog/dillution-by-channels-2-tiny/1062982837_3eE4V-O.jpg" alt="" width="250" height="152" /></p>
<p>A picture is worth a thousand words.  A prototype is worth a thousand lines of code.  Two key elements of product management &#8211; and of agile development are elicitation and feedback.  Low fidelity artifacts can <em>significantly</em> improve both.  Polished, codified prototypes can create problems that <em>prevent</em> you from getting the benefits of communication.</p>
<p><span id="more-1385"></span></p>
<h2>Prototyping Anti-Pattern</h2>
<p>David Bernstein has three good quick-read articles about prototyping in the agile zone.  The first one depicts the primary anti-pattern of prototyping &#8211; <strong>mis-set expectations</strong>.</p>
<p> </p>
<blockquote><p>As I was walking him through the different screens I could see he was starting to get uneasy. As I talked I could see him becoming paler and tenser, as if he saw a ghost. After a while I asked him if he was ok. He finally said, “You mean to tell me that I just wrote you a check for over $100,000 for less than a week of work?”</p>
<p><cite><a title="prototyping leads to mis-set expectations" href="http://agile.dzone.com/news/prototyping-caveat">Prototyping Caveat</a></cite></p>
</blockquote>
<p>The second article is quick reminder of one of the goals of a prototype.</p>
<blockquote><p>The purpose of a prototype is to elicit feedback from others or verify a design approach will work. When doing this we generally only concern ourselves with the “happy path” through our code.</p>
<p><cite><a title="A Prototype is Not a Product" href="http://agile.dzone.com/news/prototype-not-product">A Prototype is Not a Product</a></cite></p>
</blockquote>
<p>David&#8217;s third article explores a little more about the mis-setting of expectations, and provides a good parallel from the film industry.</p>
<blockquote><p>Prototypes are rough sketches without the robustness of a final product and it is often confusing to users when we show them a half-baked version of their project for feedback, even though they know it is not yet finished.</p>
<p><cite><a title="Agile Prototyping on a Napkin" href="http://agile.dzone.com/news/agile-prototyping-napkin">Agile Prototyping on a Napkin</a></cite></p>
</blockquote>
<p>David&#8217;s advice is (good and) primarily about using low-fidelity prototypes to avoid disrupting the elicitation and feedback process.  Folks in the user experience community have known this for a long time, and adapted their processes accordingly.  Back in 2006, I wrote about <em><a title="Low fidelity prototyping" href="http://tynerblain.com/blog/2006/12/08/prototype-fidelity/">prototype fidelity</a></em> as part of exploring ways to use this insight in <a title="Requirements Gathering - 10 Techniques" href="http://tynerblain.com/blog/2006/11/21/ten-requirements-gathering-techniques/">requirements gathering</a>.  Prototyping, in particular, is a great way to <a title="eliciting implicit requirements" href="http://tynerblain.com/blog/2006/11/17/gathering-implicit-requirements/">elicit <em>implicit</em> requirements</a> &#8211; those unspoken (&#8220;you should have asked!&#8221;) requirements that your customer or stakeholder <em>assumed</em> you knew, or didn&#8217;t think to tell you.</p>
<h2>Multiple Levels of Interaction</h2>
<p>David focused on the initial &#8220;will this approach work?&#8221; elements of getting feedback on a design &#8211; and by inference, some low-fidelity user acceptance testing that the proposed approach will meet your customer&#8217;s requirements.  <a title="Follow Jan on Twitter" href="http://twitter.com/#!/JanMiksovsky">Jan Miksovsky</a> wrote an excellent article (also in 2006) that provides excellent guidance on <a title="Using Crude Sketches" href="http://miksovsky.blogs.com/flowstate/2006/10/using_crude_ske.html">how much fidelity to build into your prototype</a>, <em>depending on where you are in the design process</em>.  This is important &#8211; the type of feedback you need at different stages of your design process varies.  Jan proposes that the first prototypes be rough sketches, just as David points out.  Jan goes on to show how and when to add additional fidelity to your prototypes (read Jan&#8217;s article to see his great visual examples).  Like I said, the user experience community has known about this for a long time.</p>
<h2>Prototypes Are For Two-Way Communication</h2>
<p>The key element, and the reason for creating prototypes, is to get two-way communication.  A prototype is not just a status update about your design.</p>
<p><strong>A prototype is the start of a conversation.</strong></p>
<p><img class="alignnone" title="collaboration" src="http://sehlhorst.smugmug.com/Other/blog/collaboration/1063052453_72GGi-O.jpg" alt="photo of people collaborating" width="250" height="166" /> [thanks <a title="image credit" href="http://www.flickr.com/photos/uninen/2671178552/sizes/o/in/photostream/">uninen</a> for the image]</p>
<p>Prototyping is not only useful for design conversations, it is critical to understanding your requirements.  Yes, a prototype will you get feedback about the design-execution of your proposed solution.  More importantly, a prototype can help you make sure you&#8217;re solving the right market problems.</p>
<h2>Prototypes Are More Than Interface Mock-Ups</h2>
<p>The first thing we think about, and everything you&#8217;ve read so far in this article, is about getting feedback on the user interface of the product.  <a title="elicitation techniques" href="http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/">Prototypes are also useful for gathering business rules*</a>, understanding system complexity, and defining, clarifying, and validating requirements.</p>
<p style="padding-left: 30px;">*In that article, I show prototypes as &#8220;not being useful&#8221; for gathering business rules.  At that time, I was thinking in terms of interface mock-ups only, not other prototypes.</p>
<p>Use interface mock-ups when you need feedback about user interaction.  Use other artifacts when you need feedback about other aspects of your product.  You can use prototypes as an <a title="top ten active listening tricks" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">active-listening technique</a> when gathering market data too.  There are <a title="back of the napkin and communication" href="http://tynerblain.com/blog/2009/05/06/pictures-power-whitepapers/">lots of ways to draw stuff to help with communication</a>.</p>
<p>I&#8217;ve regularly used flow charts to prototype processes.  Within those flow-charts, which are initially prototypes of how the product will behave, are decision diamonds.  Those decision diamonds <em>prototype</em> the enforcement of business rules within the to-be-created product.  In the spirit of DRY (don&#8217;t repeat yourself), a quick polishing of your process diagram can serve as a persistent artifact of the requirements.  Just like a user interface mock-up.</p>
<p>In more complicated scenarios, I&#8217;ve also used <a title="UML statecharts" href="http://tynerblain.com/blog/2007/03/21/use-case-vs-statechart/">UML statecharts</a> and data flow diagrams to prototype behavior.</p>
<p>In the section on <a title="up-front planning and release cadence" href="http://tynerblain.com/blog/2010/10/20/cadence-versus-risk/">up-front planning in last week&#8217;s article on risk management and release cadence</a>, I talked about the <em>mental leap</em> that people need to make to envision a product that doesn&#8217;t yet exist.  Prototypes are like big springboards that help people leap that chasm of imagination.</p>
<p><img class="alignnone" title="leaping dude" src="http://sehlhorst.smugmug.com/Other/blog/leap/1063089185_8d7Hv-O.jpg" alt="" width="250" height="156" /></p>
<p><strong>Important Safety Tip</strong></p>
<p>Don&#8217;t use the wrong prototype (mock-up, flow chart, etc) for the wrong conversation or with the wrong stakeholder.  Showing when and where business rules are being enforced (in the process being designed) is great for getting feedback about your interpretation and potential embodiment of those rules.  It will be a disaster if you try and have this conversation with someone who is not the owner of those policies &#8211; like a representative user.  Sometimes, policies are &#8220;owned&#8221; by non-technical people who struggle to read diagrams.  You may have to walk them through how the diagram works.  They&#8217;re smart &#8211; they&#8217;ll get it.</p>
<p>Just remember &#8211; use the right prototype to emphasize the right ideas, and elicit the right feedback.</p>
<p> </p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+A+Prototype+is+Worth+a+Thousand+Lines+of+Code+http%3A%2F%2Fbit.ly%2FaMAQo4+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/10/25/a-prototype-is-worth-a-kloc/&amp;t=A+Prototype+is+Worth+a+Thousand+Lines+of+Code" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/10/25/a-prototype-is-worth-a-kloc/feed/</wfw:commentRss>
		<slash:comments>28</slash:comments>
		</item>
		<item>
		<title>The High Costs of Building the Wrong Product</title>
		<link>http://tynerblain.com/blog/2010/06/21/building-the-wrong-product/</link>
		<comments>http://tynerblain.com/blog/2010/06/21/building-the-wrong-product/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 14:15:12 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[1-10-100 rule]]></category>
		<category><![CDATA[bad product management]]></category>
		<category><![CDATA[cost of quality]]></category>
		<category><![CDATA[requirements bugs]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1229</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F06%2F21%2Fbuilding-the-wrong-product%2F", "shorturl": "http://bit.ly/bmtQmO", "style": "big", "title": "The High Costs of Building the Wrong Product" }); As product managers, we talk about creating the right solutions with our products. Understanding the very real problems our customers face, understanding the very real opportunities our markets present, and manifesting that understanding in a product roadmap. Other [...]]]></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%252F06%252F21%252Fbuilding-the-wrong-product%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbmtQmO%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22The%20High%20Costs%20of%20Building%20the%20Wrong%20Product%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F06%2F21%2Fbuilding-the-wrong-product%2F", "shorturl": "http://bit.ly/bmtQmO", "style": "big", "title": "The High Costs of Building the Wrong Product" });</script></div>
<p><img class="alignnone" title="Bug" src="http://sehlhorst.smugmug.com/photos/51917869-M.jpg" alt="A Praying Mantis" width="250" height="187" /></p>
<p>As product managers, we talk about creating the right solutions with our products.  Understanding the very real problems our customers face, understanding the very real opportunities our markets present, and manifesting that understanding in a product roadmap.</p>
<p>Other than being &#8220;not as good,&#8221; how expensive is it to build the wrong product?<br />
<span id="more-1229"></span></p>
<h2>The Cost of Poor Quality</h2>
<p><img class="alignnone" title="frayed cable" src="http://sehlhorst.smugmug.com/Other/blog/frayed-cable/908182336_gJtUG-O.jpg" alt="A frayed Steel cable" width="250" height="179" /></p>
<p>There&#8217;s an analog to the market dynamics of making poor product decisions &#8211; executing with poor quality.  Many research studies  and articles have identified the market impacts of poor quality.  This has become so well accepted that people today cite it like a law of physics (<a title="cost of quality" href="http://www.tylogix.com/Articles/The_Dollars_and_Sense_of_Software_Quality_Control_V011.htm">one example here</a> based on <a title="boehm in 1988" href="http://faculty.ksu.edu.sa/ghazy/Cost_MSc/R6.pdf">this 1988 IEEE research</a> by Barry Boehm and Philip Papaccio) as the &#8220;1-10-100 rule.&#8221;  The primary conclusion of that research is that ten dollars spent on fixing bugs:</p>
<ul>
<li>Costs and saves $10 when you catch (and fix) the bug during implementation.</li>
<li>Avoids $100 in costs when you catch the bug during QA and send the product back to development (then test again).</li>
<li>Avoids $1,000 in costs versus waiting until your customers catch the bug in the field, causing the team to remedy the problems, rush out a patch release, and/or go to heroic lengths to manage a PR problem.</li>
</ul>
<p>This is an opportunity in front of your product team &#8211; a 100x payback from investing in quality during the development process.  Of course, be pragmatic about it -<a title="measuring the cost of quality" href="http://tynerblain.com/blog/2006/02/22/software-testing-series-measuring-the-cost-of-quality/"> if the cost of testing exceeds the cost of bugs, don&#8217;t test</a>.</p>
<p>This is not a solved problem, by any stretch, but the solutions and methods to solve this problem are well understood now.  In fact, a <a title="boehm and Basili on cost of quality" href="http://www.cs.umd.edu/projects/SoftEng/ESEG/papers/82.78.pdf">2001 article by Barry Boehm and Victor Basili</a> shows that in some cases, the labor costs to resolve bugs can be as low as 5:1 &#8211; when considering a subset of smaller systems, when using more &#8220;agile&#8221; processes.  That lowered ratio does not take into account the lost market opportunities and the costs of cleaning up <em>collateral</em> damage to your product &#8211; just the immediately realizable (and measurable) costs of resolution.</p>
<p>One very real problem, when talking about &#8220;bugs&#8221; is in defining what a &#8220;bug&#8221; is.  And <a title="Where bugs come from - software development process analysis" href="http://tynerblain.com/blog/2006/01/22/where-bugs-come-from/">the definition of a bug is a matter of perspective</a>.  A developer can reasonably assert that &#8220;if it meets the spec it is not a bug, it is working as designed.&#8221;  What if the spec is wrong?  The developer may not be guilty, but collectively, your team screwed up.  There&#8217;s a &#8220;bug&#8221; in the requirements.</p>
<h2>What Is A Requirements Bug?</h2>
<p><img class="alignnone" title="flawed revenue projection" src="http://sehlhorst.smugmug.com/Other/blog/Revenue-300x234/908184921_okRC5-O.png" alt="A very unlikely hockey stick revenue forecast graph" width="300" height="234" /></p>
<p>Now things are getting interesting.</p>
<p>If you wrote a requirement that you interpret as &#8220;A&#8221; and your developers interpret as &#8220;B&#8221; &#8211; you definitely have a bug &#8211; the team won&#8217;t build the right product.  For each $1 you could spend making sure you have bug-free requirements, you could:</p>
<ul>
<li>Make sure you have a shared understanding of the documented requirements through <a title="Eliciting with Active Listening" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">active listening</a> before development begins ($1).  Following the <a title="The Rules of Writing Good Requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">Rules of Writing Requirements</a> will help prevent this miscommunication.</li>
<li>Wait until the engineering team is ready to demo their progress ($10).  They will have to build it again, because they built the wrong stuff.</li>
<li>Wait until development is complete and QA is validating that the code meets the spec ($100).  This gets tricky if you are thinking &#8220;A&#8221;, the developers are thinking &#8220;B&#8221;, and QA is thinking &#8220;C.&#8221;</li>
<li>In classic throw-it-over-the-wall mode, wait until the product is launched, and it is the wrong product ($1000).  Assuming &#8220;A&#8221; was the right problem to solve, the cost of entering the market with a solution to &#8220;B&#8221;, leaving &#8220;A&#8221; unaddressed, is impressively high.</li>
</ul>
<p>This gets interesting because the above assumes that &#8220;A&#8221; was the right problem to solve.  What if &#8220;G&#8221; was <a title="Writing Valuable Requirements" href="http://tynerblain.com/blog/2009/07/29/valuable-requirements/">the right problem to solve</a>, and &#8220;A&#8221; was <a title="market data is more important than feature requests" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/">the </a><em><a title="market data is more important than feature requests" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/">wrong</a></em><a title="market data is more important than feature requests" href="http://tynerblain.com/blog/2008/08/19/managing-market-data/"> market problem</a>?  Even if everything (else) is working perfectly &#8211; you document requirements for &#8220;A&#8221;, the engineering team creates a marvelous &#8220;A&#8221; and it launches without implementation errors &#8211; you still fail, and incur the 1,000x cost of a failed product launch.</p>
<p>There is an even larger opportunity in front of your product team &#8211; a 1,000x payback on discovering and choosing to solve the right problems for your customers and markets.</p>
<ul>
<li>Would Palm still be independent if the Pre had solved a compelling problem?</li>
<li>Why did Intuit have to buy Mint.com &#8211; could they have embraced the same customers with Quicken?</li>
<li>What is Garmin going to do now that &#8220;free&#8221; GPS mapping and turn-by-turn directions are becoming ubiquitous? If it is &#8220;more of the same,&#8221; how much are they wasting?</li>
</ul>
<h2>Wrapping Up</h2>
<p><img class="alignnone" title="Wrapping" src="http://sehlhorst.smugmug.com/Other/blog/wrapping-paper/908188628_begak-O.jpg" alt="Wrapping paper rolls" width="250" height="181" /></p>
<p>I&#8217;m not aware of any studies that show that &#8220;requirements bugs&#8221; fit the same 1/10/100/1000 cost explosion model that &#8220;implementation bugs&#8221; exhibit.  Emotionally, it &#8220;feels about right&#8221; to me &#8211; it passes my &#8220;sniff test.&#8221;</p>
<p>There are times when days of research would have been required to avoid or redirect a few hours of implementation effort on projects I&#8217;ve worked on.  And I&#8217;ve seen man-years invested solving problems that didn&#8217;t involve much more research.</p>
<p>My intuition from products and teams I&#8217;ve worked with is that it probably averages out somewhere around 10x.</p>
<p>What does your gut (or your data &#8211; if you have some, post a link below!) tell you?</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+The+High+Costs+of+Building+the+Wrong+Product+http%3A%2F%2Fbit.ly%2FbmtQmO+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/06/21/building-the-wrong-product/&amp;t=The+High+Costs+of+Building+the+Wrong+Product" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/06/21/building-the-wrong-product/feed/</wfw:commentRss>
		<slash:comments>51</slash:comments>
		</item>
		<item>
		<title>Business Goals and Requirements</title>
		<link>http://tynerblain.com/blog/2010/03/11/goals-and-requirements/</link>
		<comments>http://tynerblain.com/blog/2010/03/11/goals-and-requirements/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 17:11:00 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[business goals]]></category>
		<category><![CDATA[business requirements]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1181</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F03%2F11%2Fgoals-and-requirements%2F", "style": "big", "title": "Business Goals and Requirements" }); One of my colleagues got into a debate with one of his colleagues about the differences between goals and requirements.  His opponent fired the following salvo: &#8220;[That] is not a business requirement in any company of the world&#8230;&#8221; What you call your requirements is less [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2010%252F03%252F11%252Fgoals-and-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Business%20Goals%20and%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F03%2F11%2Fgoals-and-requirements%2F", "style": "big", "title": "Business Goals and Requirements" });</script></div>
<p><img class="alignnone" title="warehouse inventory level" src="http://sehlhorst.smugmug.com/Other/blog/warehouse/807733348_FDXS6-O.jpg" alt="Inventory in a warehouse" width="250" height="187" /></p>
<p>One of my colleagues got into a debate with one of his colleagues about the differences between goals and requirements.  His opponent fired the following salvo: &#8220;[That] is not a business requirement in any company of the world&#8230;&#8221;</p>
<p>What you <em>call </em>your requirements is less important than <em>how you communicate</em> them.</p>
<h2><span id="more-1181"></span>Labels</h2>
<p>I&#8217;ve worked with a lot of companies that use different <em>labels</em> to describe their descriptions of the problems that need to be solved. This is not another article about requirements versus specification (specification = design constraint, btw).</p>
<blockquote><p>If you&#8217;re not a long time reader who&#8217;s followed the debates and discussions on this topic in the past, check out these articles and comments, where we&#8217;ve had some great discussions on that topic &#8211; with particular thanks to <a title="Roger, on Twitter" href="http://twitter.com/rcauvin">Roger Cauvin</a> for keeping the debate front and center.</p>
<ul>
<li><a title="debating the difference between requirements and design" href="http://tynerblain.com/blog/2006/02/11/requirements-vs-design-which-is-which-and-why/">Requirements Versus Design: Which is Which and Why</a></li>
<li><a title="Article acknowledging different perspectives on 'requirements'" href="http://tynerblain.com/blog/2006/05/11/requirements-documents-one-mans-trash/">Requirements Docs &#8211; One Man&#8217;s Trash is&#8230;</a></li>
</ul>
<p>The central theme is that the debate about &#8220;what versus why&#8221; centers around differences in people&#8217;s perspective on the problem.</p>
<p><img class="alignnone" title="What versus Why versus How" src="http://sehlhorst.smugmug.com/photos/69105260-M.png" alt="Diagram of different perspectives on the same artifacts" width="482" height="420" /></p></blockquote>
<p>This challenge is not really about that (but it makes for good background).  The complaint my colleague received was really a critique of the way that the <em>why</em> of a set of requests was communicated and labeled.</p>
<h2>Actionable Goals</h2>
<p>Companies have strategic goals (increase shareholder value, gain market share, etc) that serve to guide the investments and activities of the organization.  However, for the teams that are creating products, those goals are too vague to be actionable.  I guess this is where <em>my</em> set of labels comes in.  I don&#8217;t think the labeling of a goal <em>as a goal</em> (versus labeling it <em>as a requirement</em>) is abstractly important, however, when people value making a distinction, here&#8217;s how I do it.</p>
<p>A <em>goal </em>is something your business (or user) is trying to achieve.  It is too abstract to have a single valid solution approach.  Once your business stakeholder(s) decide on a strategy by which they will achieve that goal, the business will define <em>requirements </em>for the actionable project(s) that execute this strategy.  This is an ideation step that lives inside the &#8220;why&#8221; box from a business analyst&#8217;s perspective.  Here&#8217;s an example:</p>
<h2>Warehouse Manager</h2>
<p><img class="alignnone" title="businesswoman" src="http://sehlhorst.smugmug.com/Other/blog/ok/807760870_z87Fe-O.jpg" alt="business woman giving thumbs-up sign" width="166" height="250" /></p>
<p>You&#8217;re in the IT department of a large company.  You&#8217;ve been assigned to support the warehouse manager (or COO, or vice president of order fulfillment or whatever).  Your warehouse manager is responsible for procuring the products that your company sells, keeping inventory on hand, and delivering those products to customers when they have been purchased.</p>
<p>Your warehouse manager is measured (or promoted) based on her performance relative to the following:</p>
<ul>
<li>The time that a customer has to wait between placing an order and receiving the product.</li>
<li>The cost impact of warehouse operations on the products.</li>
</ul>
<p>Your warehouse manager focuses on these two metrics because of your company&#8217;s goals &#8211; provide good customer service, be profitable, and grow revenue.  Those abstract goals influence product pricing &#8211; it must be low enough to grow revenue in the target markets, and be high enough to be profitable.  Since market pressures drive pricing decisions, typically a profitability target will then create cost-reduction pressures (profitability also influences pricing decisions, selection of markets, positioning within that market, etc).  A customer service strategy can also include a &#8220;you get your product quickly&#8221; component &#8211; as it does in this example.</p>
<p>Your warehouse manager now comes to you and says &#8220;I have an initiative to lower costs.&#8221;</p>
<p><strong>Is this a goal or is it a business requirement?</strong></p>
<p>Ultimately, it doesn&#8217;t matter what you call it, but for you to <em>actually do something</em> you need to know more.  That&#8217;s why <em>my</em> approach is to call it a goal.  Your warehouse manager&#8217;s problem is to lower costs.  You need to <a title="Problem decomposition with Ishikawa Diagrams" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">decompose that problem to understand</a> how you (and your team) can do something to help her achieve that goal.  The reason you have to do that is that you need <a title="Defining good problem statements" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">a problem statement at the right level of abstraction</a>.</p>
<p>In <a title="Top elicitation techniques" href="http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/">elicitation conversations</a> with your warehouse manager, you learn that all of the costs of operating the warehouse are allocated to the different business units, who operate as profit centers.  The warehouse operates as a cost center.  The warehouse manager treats each business unit as a customer, and provides a service of &#8220;fulfilling product orders&#8221; in exchange for funds that cover the costs of operation.  The allocation of costs is done per product that appears in the warehouse.  Since allocation is per product, it could be something like $1.30 per product in &#8220;warehouse costs.&#8221;  There are multiple sources of those costs (that are then allocated per product), and there are multiple ways to approach reducing the <em>cost per product</em>.</p>
<p>Your warehouse manager develops a strategy (probably a &#8220;mini-strategy&#8221; from the company&#8217;s perspective) to lowering costs.  She rules out &#8220;sell more products&#8221; as an approach, because she can&#8217;t control that.  She also can not affect her fixed costs (rent, depreciation, labor).</p>
<p>Eventually you discover that there is another cost hidden in the provisioning model &#8211; products are purchased, they sit in the warehouse for a while, then they are sold and delivered, and eventually money is collected from customers to pay for the products.  Your company has to pay in advance for the products, and doesn&#8217;t get their money back until funds are collected from the customers.  That money is &#8220;tied up in inventory&#8221; when it could have been invested otherwise &#8211; so there is a cost associated with high inventory levels, that directly correlates with the amount of inventory in stock.  When a new version / revision of a product is introduced, your inventory may become obsolete (it is definitely devalued).  And since markets are moving targets, your prospects of selling a product change over time &#8211; a risk that you will not be able to sell all of your inventory.</p>
<p>At the end of the day, the amount of inventory you have on hand has a cost.  The more you have, the more it costs.  A rule of thumb I heard 20 years ago was that inventory costs could be as high as 1/3 of the cost of the product for each year you keep it around.  If that is true, that is something like 0.5% added cost for every week the product is in inventory.  Here&#8217;s something the warehouse manager can potentially control.</p>
<p>Currently, your warehouse manager has 8 weeks of inventory on hand (on average) for products, which allows her to ship quickly.  She realizes she is adding 4% to the cost of the product.  She decides that if she can cut those costs in half, she will be a heroine.</p>
<p><img class="alignnone" title="business woman triumphs" src="http://sehlhorst.smugmug.com/Other/blog/hooray/807760868_acWdi-O.jpg" alt="image of businesswoman in victory" width="166" height="250" /></p>
<p>Her <em>business requirement</em> is to reduce inventory levels from 8 weeks (on average) to 4 weeks (on average).  She also has a constraint that no more than 1% of orders be delayed by more than a day (due to running out of inventory).</p>
<p>Now you have requirements that are <a title="writing unambiguous requirements" href="http://tynerblain.com/blog/2006/06/12/writing-unambiguous-requirements/">unambiguous </a>and <a title="verifiable and measurable requirements" href="http://tynerblain.com/blog/2006/06/13/writing-verifiable-requirements/">measurable</a>.</p>
<h2>Conclusion</h2>
<p>Don&#8217;t trap yourself in worrying about the labeling of goals / requirements, but if you have to work with someone who does find that really important, before you call it a <em>requirement</em>, make sure it is at the right level of abstraction.  And of course, make sure you <a title="The rules of writing requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">follow the rules of writing requirements</a>.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Business+Goals+and+Requirements+http%3A%2F%2Fbit.ly%2FbLsZp2+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/03/11/goals-and-requirements/&amp;t=Business+Goals+and+Requirements" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/03/11/goals-and-requirements/feed/</wfw:commentRss>
		<slash:comments>11</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 [...]]]></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>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Most+Engaging+Articles+of+2009+http%3A%2F%2Fbit.ly%2F4QJ30i+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/feed/</wfw:commentRss>
		<slash:comments>6</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 [...]]]></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>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Stakeholders+in+a+Barrel+http%3A%2F%2Fbit.ly%2FdWsjGe+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Hidden Business Rule Example</title>
		<link>http://tynerblain.com/blog/2008/09/23/hidden-business-rule-example/</link>
		<comments>http://tynerblain.com/blog/2008/09/23/hidden-business-rule-example/#comments</comments>
		<pubDate>Wed, 24 Sep 2008 04:26:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Process Flow]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[enterprise decision management]]></category>
		<category><![CDATA[hidden business rule example]]></category>
		<category><![CDATA[hidden business rules]]></category>
		<category><![CDATA[process flow example]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=704</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F09%2F23%2Fhidden-business-rule-example%2F", "style": "big", "title": "Hidden Business Rule Example" }); A business process is not just a sequence of steps.  A business process is a series of decisions and actions.  Some decisions are obvious and can be actively managed.  Some decisions are hidden, and until you discover them, you can&#8217;t manage or improve them.  [...]]]></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%252F09%252F23%252Fhidden-business-rule-example%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Hidden%20Business%20Rule%20Example%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F09%2F23%2Fhidden-business-rule-example%2F", "style": "big", "title": "Hidden Business Rule Example" });</script></div>
<p><img class="alignnone" title="hidden" src="http://sehlhorst.smugmug.com/photos/379162662_SF7Ev-L.jpg" alt="Little girl hiding by covering her face" width="250" height="167" /></p>
<p>A business process is not just a sequence of steps.  A business process is a series of decisions and actions.  Some decisions are obvious and can be actively managed.  Some decisions are hidden, and until you discover them, you can&#8217;t manage or improve them.  Here is a real-world example of the discovery of a hidden enterprise decision.</p>
<p><span id="more-704"></span></p>
<h2>Enterprise Decision Management</h2>
<p>Over the past couple of years, I&#8217;ve collaborated with and become friends with <a title="Neil and James' book" href="http://www.smartenoughsystems.com/">James Taylor</a>, an enterprise decision management guru.  He and Neil Raden wrote <em>the</em> book, <a title="smart enough systems at amazon" href="http://www.amazon.com/dp/0132347962?tag=tbrb-20&amp;link_code=as3&amp;creativeASIN=0132347962&amp;creative=373489&amp;camp=211189"><em>Smart (Enough )Systems</em></a> , you should get it if you don&#8217;t already have it.    It is sitting on my desk right now, and every time I pick it up I have to mark another page with a post-it note so I can find that good idea again later.  If you aren&#8217;t convinced, listen to this <a title="smart enough systems interview" href="http://tynerblain.com/blog/2007/06/25/smart-enough-systems/">interview with James</a> about their book.</p>
<p>James and I developed <a title="rules and requirements in software at ibrf" href="http://tynerblain.com/blog/2007/09/06/10th-ibrf/">a presentation, <em>Getting It Right: Rules and Requirements in Software</em></a> last fall for the International Business Rules forum.  Below is a slideshare of a shortened version of the presentation, delivered to the Austin IIBA this spring.</p>
<div id="__ss_479352" style="width: 425px; text-align: left;"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" title="Getting It Right" href="http://www.slideshare.net/ssehlhorst/getting-it-right-479352?type=powerpoint">Getting It Right</a><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=getting-it-right-20080619-1214103759615632-8&amp;stripped_title=getting-it-right-479352" /><embed type="application/x-shockwave-flash" width="425" height="355" src="http://static.slideshare.net/swf/ssplayer2.swf?doc=getting-it-right-20080619-1214103759615632-8&amp;stripped_title=getting-it-right-479352" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View SlideShare <a style="text-decoration:underline;" title="View Getting It Right on SlideShare" href="http://www.slideshare.net/ssehlhorst/getting-it-right-479352?type=powerpoint">presentation</a> or <a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/tyner">tyner</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/blain">blain</a>)</div>
</div>
<p>A large portion of that talk was dedicated to discovering hidden business rules within use cases.  The reason we dedicated so much time to rules discovery is that the first step to managing decisions across your enterprise is to discover and <a title="isolating rules from requirements" href="http://tynerblain.com/blog/2007/09/11/why-separate-rules-from-requirements/">isolate those decisions</a>!  In this article, we will look at an example of a decision hidden within a simple business process.</p>
<h2>A Simple Business Process</h2>
<p>The following is a simple real-world business process.  The details of the steps in the process have been modified to clarify this example.</p>
<p><img class="alignnone" title="Simple customer search process" src="http://sehlhorst.smugmug.com/photos/379161150_BRKJ6-O.gif" alt="" width="310" height="574" /></p>
<p>The process flow example above depicts an automated process that involves searching internal systems for an existing customer (record).  There are three possible outcomes from the search, shown above from left to right: no results are returned from the search, a single result is returned, or multiple results are returned.  When no results are returned, a new customer (record) is created, and the automated process continues.  When a single result is returned, that customer is used and the process continues.  When multiple results are returned, a new customer (record) is created and used, but the automated process is interrupted and a manual intervention is required before the process can continue.</p>
<p>This third path confused me when it was initially presented to me this way by the subject matter expert who explained the process to me. The business creates a new customer (record) even when multiple results are found because they don&#8217;t have time to determine which result is the right one, within the automated process.  They would rather create a duplicate customer (record), continue with the automated process, and clean up the mess later.  That&#8217;s much better than losing a sale (a very real risk because of delays due to manual oversight.</p>
<p>As part of this <a title="elicitation techniques for rules and requirements" href="http://tynerblain.com/blog/2007/09/13/elicitation-techniques-2/">elicitation session</a>, I applied a variation on <a title="active listening tips" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">active listening</a> by talking to the diagram above (on a whiteboard) and enhancing it.</p>
<h2>Impacts and Decisions</h2>
<p>One technique that is effective in reaching agreement, generally, is to inspire the other person to &#8220;have your idea&#8221; so that it becomes their idea.  Once I understood the process above, I realized that there was an implicit decision in the process.  Instead of making the statement &#8211; &#8220;you have a hidden decision in your process&#8221; and then hoping the business stakeholder (also in the room) would care, I chose to start with the impact.  Presenting the impact of a hidden decision first might expose that decision and trigger acknowledgment of the hidden decision by the stakeholders.  The following diagram shows how I first modified the flow on the whiteboard.</p>
<p><img class="alignnone" title="impact of decision on process flow" src="http://sehlhorst.smugmug.com/photos/379161161_Rk7DQ-L.gif" alt="" width="434" height="574" /></p>
<p>The subject matter experts had told me that when there is a manual intervention in the otherwise automated process, the process is sometimes abandoned.  Imagine customers walking away from an online sale because (for some reason) the sale cannot be completed without an unexpected delay.  I represented this with the &#8220;Abandon Process?&#8221; decision in the flow.  This decision was never drawn before, because it is the customer&#8217;s decision, and it can not be controlled by the business.</p>
<p>I also pointed out that the business makes money only through the last step in the process, &#8220;Continue Automated Process.&#8221;  My goal was to accentuate that this abandonment decision has a very real value.  The stakeholder and subject matter experts agreed &#8211; this was something they had told me previously.  But they had never drawn it directly within their process.</p>
<p>As it turns out, this did not trigger any additional insights.  It did however, set the stage for describing the relevance of the hidden decision.</p>
<h2>The Hidden Decision</h2>
<p>After setting the stage, I updated the process flow diagram to expose the hidden decision.</p>
<p><img class="alignnone" title="Example of a hidden decision in a process flow" src="http://sehlhorst.smugmug.com/photos/379161208_6FwGv-L.gif" alt="" width="396" height="600" /></p>
<p>The hidden decision is the decision of picking one of the many search results (top right corner of the diagram).  Your first response may be that the business is not picking any of the results.  My response is that choosing <em>none</em> of the provided results is a choice, just as picking any one of them would be.</p>
<p>This view of the process highlights that <em>if</em> the business could automatically choose a &#8220;best&#8221; result when searching returns multiple results, the business would avoid the risk of abandoned processes due to manual oversight.</p>
<p>With the current process, the business stakeholder acknowledged that the hidden business rule is &#8221; pick none of the results 100% of the time&#8221;.  With current project schedules, there is nothing that can be done about that in time for the immediate software release (of the software that embodies this process).</p>
<p>Before our meeting was over, the business stakeholder added determination of future-state business rules to define the &#8220;how do we pick one?&#8221; decision to the deliverables for the next release.</p>
<h2>A Smart (Enough) Decision</h2>
<p>James and Neil (I would guess) will tell you that ideally, the decision (should we pick one, and which one should we pick) should be informed by the process.  A feedback loop can be created where we identify the customers (the people who might abandon the process), and determine statistically which ones are most likely to abandon the process.  For those people, it is especially important that we be able to &#8220;pick one&#8221; from a set of search results, thus completely avoiding the opportunity to abandon the process.  For those people who are unlikely to abandon the process, the &#8220;pick one&#8221; decision is less important.</p>
<p>If it were easy to &#8220;pick one&#8221;, we would consider changing the way search is handled to never return multiple results.  In this real world example, that is not an option (I&#8217;m intentionally not sharing the reasons, to avoid disclosing too much).  The only option in this case is for the business to respond intelligently (enough) when presented with multiple search results.</p>
<h2>Conclusion</h2>
<p>This process flow example has two primary outcomes &#8211; generate profits, or don&#8217;t generate profits.  The first modification of the process flow makes that possibility explicit.  That allows for an analysis to determine if there are any hidden decisions in the flow (there are) that impact the outcomes of the flow.  There may be other hidden decisions, but they do not impact the profitability of this process, so they were not explored.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Hidden+Business+Rule+Example+http%3A%2F%2Fbit.ly%2FfHOKh6+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/09/23/hidden-business-rule-example/&amp;t=Hidden+Business+Rule+Example" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/09/23/hidden-business-rule-example/feed/</wfw:commentRss>
		<slash:comments>4</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 [...]]]></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>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Market+Driven+Competitive+Advantage+http%3A%2F%2Fbit.ly%2FbsHoFS+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/08/26/market-driven-advantage/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>How Do You Manage Market Data?</title>
		<link>http://tynerblain.com/blog/2008/08/19/managing-market-data/</link>
		<comments>http://tynerblain.com/blog/2008/08/19/managing-market-data/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 05:35:28 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[feature requests]]></category>
		<category><![CDATA[market needs]]></category>
		<category><![CDATA[market segmentation]]></category>
		<category><![CDATA[personas]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=696</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F08%2F19%2Fmanaging-market-data%2F", "style": "big", "title": "How Do You Manage Market Data?" }); Great product management starts with an insightful understanding of your market.  Not just understanding a customer, and not even understanding all of your customers, but understanding your target market.  What works for you? The Needs of The Many&#8230; Mr. Spock was on [...]]]></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%252F19%252Fmanaging-market-data%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22How%20Do%20%3Ci%3EYou%3C%2Fi%3E%20Manage%20Market%20Data%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F08%2F19%2Fmanaging-market-data%2F", "style": "big", "title": "How Do <i>You</i> Manage Market Data?" });</script></div>
<p><img src="http://www.smugmug.com/photos/355387314_vRjSL-L.jpg" alt="bigfoot.  yes, really." width="200" height="241" /></p>
<p>Great product management starts with an insightful understanding of your market.  Not just understanding a customer, and not even understanding all of your customers, but understanding your target market.  What works for you?</p>
<p><span id="more-696"></span></p>
<h2>The Needs of The Many&#8230;</h2>
<p><img src="http://www.smugmug.com/photos/355241108_PwKrX-S.jpg" alt="spock" width="290" height="300" /></p>
<p>Mr. Spock was on the right track in <a title="wrath of khan quotes" href="http://www.imdb.com/title/tt0084726/quotes"><em>Wrath of Khan</em></a>, when he said &#8220;logic clearly dictates that the needs of the many outweigh the needs of the few.&#8221;  And Captain Kirk apparently took Pragmatic Marketing&#8217;s training, since he responded, &#8220;Or the one.&#8221;  [That was their original mantra circa 1982, before the more common "Your opinion, while interesting, is irrelevant."]</p>
<p>It isn&#8217;t just the crew of the starship Enterprise that believes an understanding of your target market is critical to product success.  I believe it, Pragmatic&#8217;s folks teach it, every good product manager I&#8217;ve run across embodies this belief.  [Note: Steve Yegge has <a title="business requirements are worthless" href="http://steve-yegge.blogspot.com/2008/08/business-requirements-are-bullshit.html">a very intense article</a> where (I think) he believes it too, but believes that it is futile to try and understand a market that doesn't include you.]</p>
<h2>Tools and Techniques</h2>
<p>We have a lot of articles here that help you communicate &#8216;an understanding of the market needs&#8217; with your implementation team &#8211; where implementation equals development AND testing.</p>
<ol>
<li> Documenting <a title="MRD" href="http://tynerblain.com/blog/2006/01/24/from-mrd-to-prd-the-key-to-defining-a-spec/">market needs</a> (existing and new markets)</li>
<li>Making <a title="stakeholder value matrix" href="http://tynerblain.com/blog/2007/10/25/stakeholder-value-matrix/">strategic decisions</a> to <a title="converting from an MRD to a PRD" href="http://tynerblain.com/blog/2006/02/09/mrd-to-prd-requirements-conversion/">address those needs</a></li>
<li><a title="managing stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">Engaging with stakeholders</a> to <a title="validate needs with stakeholders" href="http://tynerblain.com/blog/2006/07/06/requirement-completeness-validation-with-use-cases/">validate needs</a></li>
<li><a title="requirements prioritization articles" href="http://tynerblain.com/blog/category/requirements/prioritization/">Prioritizing</a> / <a title="using timeboxes to plan releases" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">planning product releases</a> / <a title="build a good product roadmap" href="http://tynerblain.com/blog/2008/04/28/dont-build-a-stupid-product-roadmap/">roadmaps</a> to <a title="release schedules and use cases" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">align a release schedule with targeted needs</a></li>
<li><a title="more on stakeholder goals" href="http://tynerblain.com/blog/2007/10/18/stakeholder-goals-2/">Engaging</a> with <a title="visualizing stakeholders" href="http://tynerblain.com/blog/2007/03/13/visualize-stakeholder-analysis/">stakeholders</a> to <a title="communicating intent with stakeholders" href="http://tynerblain.com/blog/2006/07/14/communicating-intent-with-stakeholders/">clarify needs</a></li>
<li><a title="five requirements gathering tips" href="http://tynerblain.com/blog/2006/01/14/top-five-requirements-gathering-tips/">Gathering </a>and <a title="writing good requirements" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">documenting requirements</a> details and <a title="requirements traceability and the impact of change on use cases" href="http://tynerblain.com/blog/2006/07/24/the-impact-of-change-and-use-cases/">inter-dependencies</a></li>
<li><a title="verify requirements correctness" href="http://tynerblain.com/blog/2006/07/10/verify-correct-requirements/">Validating feasibility</a> / <a title="communicate intent with development and test" href="http://tynerblain.com/blog/2006/07/17/communicating-intent-with-implementers/">communication of intent with implementation</a> (development and test) teams</li>
<li><a title="prototyping" href="http://tynerblain.com/blog/2006/02/21/software-requirements-specification-iteration-and-prototyping/">Prototyping</a> and eliciting user feedback</li>
</ol>
<p>To name a few.  We&#8217;ve also written about several techniques you can use</p>
<ul>
<li><a title="how to interview when gathering requirements" href="http://tynerblain.com/blog/2006/01/15/how-to-interview-when-gathering-requirements/">Gathering requirements via interviews</a></li>
<li><a title="ten active listening skills" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">Applying (and improving) your active listening skills</a></li>
<li><a title="how to create personas" href="http://tynerblain.com/blog/2006/03/22/how-to-create-personas-for-goal-driven-development/">Persona development</a>, and differentiation of user goals from corporate goals (<a title="buyer personas and user personas" href="http://tynerblain.com/blog/2008/07/22/buyers-and-users/">and from buyer goals</a>)</li>
</ul>
<h2>The Missing Link</h2>
<p><img src="http://www.smugmug.com/photos/355387314_vRjSL-L.jpg" alt="bigfoot" width="200" height="241" /></p>
<p>With all the current hub-bub about the bigfoot hoax (&#8220;I think I&#8217;m going to have a heart attack and die from not surprise!&#8221; &#8211; <a title="aladdin quotes" href="http://www.imdb.com/title/tt0103639/quotes">Iago, Aladdin</a>), I couldn&#8217;t pass up this mug shot.</p>
<p>Collecting the customer-need data, with something more than anecdotal evidence, is tricky.  One of the premises of the agile movement is that you can&#8217;t, so don&#8217;t waste time trying.  I&#8217;ve always approached it by gathering anecdotal data, <a title="cause and effect" href="http://tynerblain.com/blog/2008/05/27/cause-and-effect-diagrams/">looking for root causes</a> to create <a title="bad problem statements" href="http://tynerblain.com/blog/2008/05/12/your-problem-statement/">problem statements</a>, and then working to map back to personas &#8211; dangerously extrapolating trends from a handful of datapoints.  And it seems to work.  But it doesn&#8217;t scale.  There must be a better way.</p>
<p>I had a great conversation with someone who asked the Austin PMM yahoo group what tools they used for tracking &#8220;customer feature requests.&#8221;  [Thanks again, btw, if you're reading this.]  The requestor was looking for something <em>less</em> than Feature Plan.  Just a mechanism for tracking feature requests.</p>
<p>Here&#8217;s the problem.  <strong>A feature request is to a market requirement as a gorilla suit in a block of ice is to a frozen captured Bigfoot</strong>.  Tracking and managing feature requests isn&#8217;t what we actually need to do.  Tracking and managing market requirements is what we need to do.</p>
<h2>What Do You Do?</h2>
<p><img src="http://sehlhorst.smugmug.com/photos/51655408_DGhh2-L.jpg" alt="microphone" width="250" height="187" /></p>
<p>OK, so you manage a product that is sold by a sales team.  Those sales people, and account managers get feature requests all the time.  Or you have a SaaS product, and you built in a feedback mechanism.  A 2006 survey of SaaS vendors found that the ratio of feature requests to bug reports was on average, 5 to 1.  That&#8217;s a lot of feature requests.  Your process should look like the following:</p>
<ol>
<li>Review feature requests.</li>
<li>Do something, possibly using some tool(s).</li>
<li>Determine market needs, prioritize markets (or needs), and update your roadmap&#8230;</li>
</ol>
<p>Share what and how you do it.  Some questions I would ask if you were teaching me how:</p>
<ul>
<li>Assuming you map &#8216;features X, Y, and Z&#8217; to an actual &#8216;requirement A&#8217;, how do you chunk those inputs &#8211; by persona, by market segment, something else?</li>
<li>Do you have a way to automate any of the analysis (e.g. mapping a market need to a segment or persona)?</li>
<li>If you had a magic wand, what would make that job easier?</li>
<li>Any lessons-learned / advice for new product managers?</li>
<li>How do you close the feedback loop with the customers who originally submitted all of those feature requests?</li>
</ul>
<p>Thanks in advance for any responses!</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+How+Do+%3Ci%3EYou%3C%2Fi%3E+Manage+Market+Data%3F+http%3A%2F%2Fbit.ly%2Fe3lsKK+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/19/managing-market-data/&amp;t=How+Do+%3Ci%3EYou%3C%2Fi%3E+Manage+Market+Data%3F" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/08/19/managing-market-data/feed/</wfw:commentRss>
		<slash:comments>8</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 [...]]]></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>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Successful+Products%3A+Lucky+or+Intentional%3F+http%3A%2F%2Fbit.ly%2FgVLce9+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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%3F" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/05/19/successful-products/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Recycling An Active Listening Article</title>
		<link>http://tynerblain.com/blog/2008/03/31/active-listening-redux/</link>
		<comments>http://tynerblain.com/blog/2008/03/31/active-listening-redux/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 02:04:24 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Administrivia]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[active listening]]></category>
		<category><![CDATA[active listening skills]]></category>
		<category><![CDATA[active listening tips]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[supercharged active listening]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/31/active-listening-redux/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F31%2Factive-listening-redux%2F", "style": "big", "title": "Recycling An Active Listening Article" }); We&#8217;re dedicating our &#8220;blogging time&#8221; this week to doing some infrastructure upgrades &#8211; we have to address some security issues on the site. Until we get through these changes, we&#8217;ll be recycling some of our existing content. For our recent readers, it will [...]]]></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%252F03%252F31%252Factive-listening-redux%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Recycling%20An%20Active%20Listening%20Article%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F31%2Factive-listening-redux%2F", "style": "big", "title": "Recycling An Active Listening Article" });</script></div>
<p><img title="recycling" alt="recycling" src="http://sehlhorst.smugmug.com/photos/174257363_XH3Ya-L.jpg" /></p>
<p>We&#8217;re dedicating our &#8220;blogging time&#8221; this week to doing some infrastructure upgrades &#8211; we have to address some security issues on the site.  Until we get through these changes, we&#8217;ll be recycling some of our existing content.  For our recent readers, it will be &#8220;new to you&#8221; and for our long time readers, we appreciate your patience.  Today we look at one of our better received articles on active listening.</p>
<p><span id="more-655"></span></p>
<h3><a title="active listening tips" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">Ten Supercharged Active Listening Skills To Make You More Successful</a> [15 Mar 2007]</h3>
<p><img title="listening attentively" alt="listening attentively" src="http://sehlhorst.smugmug.com/photos/60941547-S.jpg" /></p>
<p>Active listening is about more than gaining understanding. Active listening is about giving. Giving assurance that you understand someone’s needs. Giving confidence that you will address those needs. Giving feedback and acknowledgement that someone’s input is valuable. If you haven’t tried active listening, you may think it is a passive, receptive activity. Here are ten active listening skills that will help you, your customers and your team.</p>
<p>Our <a title="active listening skills" href="http://tynerblain.com/blog/2007/03/15/ten-active-listening-skills/">active listening article</a> goes into details on the following 10 Active Listening Tips:</p>
<ol>
<li>Acknowledging</li>
<li>Restating</li>
<li>Reflecting</li>
<li>Interpreting</li>
<li>Summarizing</li>
<li>Probing</li>
<li>Giving Feedback</li>
<li>Supporting</li>
<li>Checking Perceptions</li>
<li>Being Quiet</li>
<li>[Bonus] Extending</li>
</ol>
<p>I hope you enjoy them and put them to good use &#8211; they really do make a difference</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Recycling+An+Active+Listening+Article+http%3A%2F%2Fbit.ly%2FfEMYBk+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/31/active-listening-redux/&amp;t=Recycling+An+Active+Listening+Article" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/31/active-listening-redux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uncovering Requirements With UML Class Diagrams Part 5</title>
		<link>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/</link>
		<comments>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 03:16:20 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling requirements]]></category>
		<category><![CDATA[ooa]]></category>
		<category><![CDATA[requirements class diagram]]></category>
		<category><![CDATA[uml class diagram for analysis]]></category>
		<category><![CDATA[uml class diagrams]]></category>
		<category><![CDATA[uml requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F19%2Frequirements-class-diagrams-5%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 5" }); In this article, we build on our ability to represent straight forward business relationships in UML class diagrams. These relationships describe how two objects are related to each other. Representing relationships in class diagrams helps us to better understand 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%252F03%252F19%252Frequirements-class-diagrams-5%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uncovering%20Requirements%20With%20UML%20Class%20Diagrams%20Part%205%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F19%2Frequirements-class-diagrams-5%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 5" });</script></div>
<p><img title="digging" alt="digging" src="http://www.smugmug.com/photos/267929036_P8Scw-L.jpg" /></p>
<p>In this article, we build on our ability to represent straight forward business relationships in UML class diagrams.  These relationships describe how two objects are related to each other.  Representing relationships in class diagrams helps us to better understand the domain and helps us to uncover hidden requirements.  Occasionally, we have to deal with more complex relationships that involve more than two objects to properly describe.  This does not happen as frequently, but when it does, our modeling efforts are more likely to uncover overlooked requirements.  In this article we learn how to describe relationships that involve more than two objects.</p>
<p><span id="more-650"></span></p>
<h2>Catching Up On UML Class Diagrams</h2>
<p>If you navigated to this page first, it is the fifth in a series introducing UML Class Diagrams for requirements elicitation.</p>
<ol>
<li><a title="Representing business concepts with uml class diagrams" href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/">Uncovering Requirements With UML Class Diagrams Part 1</a>: Discusses how to represent objects and entities from a business perspective.</li>
<li><a title="simple relationships in uml class diagrams" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">Uncovering Requirements With UML Class Diagrams Part 2</a>: Discusses simple relationships between objects or entities.</li>
<li><a title="using class diagrams for aggregation and compositing" href="http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/">Uncovering Requirements With UML Class Diagrams Part 3</a>: Discusses combining objects into collections and concepts.</li>
<li><a title="inheritance in class diagrams" href="http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/">Uncovering Requirements With UML Class Diagrams Part 4</a>: Defines generalization (inheritance) and how to use it.</li>
<li>Uncovering Requirements With UML Class Diagrams Part 5: This article</li>
</ol>
<p>Jump back to the other articles and get up to speed if you need. We’ll wait for you here. As a reminder, in this series, we’re specifically focusing on using UML class diagrams for uncovering requirements &#8211; as part of analysis, not design. We’re talking about what the business needs, not how the solution will work.</p>
<h2>Understanding Details <em>About</em> The Relationship</h2>
<p>One reason you may want to deal with more than two objects is obvious only after you change your way of thinking.  So far, you&#8217;ve been thinking about objects (classes) and relationships (associations).  Sometimes, when you need to understand the details of the relationship, you should think about the relationship <em>as an</em> object.  It is both a relationship AND an object.  And you draw this with an association class.  We&#8217;ll walk through an example that illustrates the idea clearly, then we&#8217;ll look at the steps needed to create a relationship that is also an object.</p>
<p>Consider that you are gathering requirements to support software for tracking court cases &#8211; perhaps a <a title="Definition of Mashup" href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">mashup</a> site that combines the latest public record lawsuits with entries from <a title="LinkedIn" href="http://www.linkedin.com/">LinkedIn</a> (<a title="Scott Sehlhorst Profile" href="http://www.linkedin.com/in/sehlhorst">my profile</a>) and <a title="directory of companies" href="http://www.crunchbase.com/">Crunchbase</a>.</p>
<p><img title="linkedin" alt="linkedin" src="http://www.smugmug.com/photos/267958853_EhiJs-L.jpg" /></p>
<p><img title="crunchbase" alt="crunchbase" src="http://www.smugmug.com/photos/267958858_5AfiX-L.jpg" /></p>
<p>As part of your requirements gathering, you need to understand how these court cases work &#8211; so you start with a class diagram.</p>
<p>First &#8211; identify the main players in the lawsuits:</p>
<p><img title="litigants" alt="litigants" src="http://www.smugmug.com/photos/267935482_B2BHB-L.gif" /></p>
<p>Both a plaintiff and a defendant are litigants, as they are involved in lawsuits.</p>
<p><img alt="uml class diagram of suing" title="uml class diagram of suing" src="http://www.smugmug.com/photos/267935487_mMND6-L.gif" /></p>
<p>That represents a simple relationship.  A plaintiff sues one or more defendants.  When you show this diagram to one of your stakeholders, she likes that you captured that one plaintiff can sue more than one defendants.  She also likes that you can determine &#8220;who is the plaintiff suing&#8221; as well as &#8220;who is suing a given defendant.&#8221;</p>
<p>You point out one small problem &#8211; it is not clear if the plaintiff can only sue multiple defendants one-at-a-time, or if the plaintiff can sue multiple defendants in the same lawsuit.  You get the answer (multiple defendants can be sued at the same time), and as you start to scratch your head about how to represent it, your stakeholder interrupts (they do that):</p>
<p>&#8220;We need to be able to show lawsuits with a &#8220;most recent&#8221; view, and a &#8220;largest&#8221; (in dollar amount) view on the main page of the site!&#8221;  You realize that your diagram doesn&#8217;t work, and you make a note to yourself about the multiple-defendants issue.<br />
You need a way to capture information <em>about the suit</em>.  Suddenly, instead of a verb (sues), you need a noun (suit).  You need to reason <em>about</em> the relationship.  So you update your class diagram.</p>
<p><img alt="lawsuit" title="lawsuit" src="http://www.smugmug.com/photos/267935499_Uc4oJ-L.gif" /></p>
<p>Your updated diagram now shows that a single plaintiff, <em>in the context of a single suit</em>, can sue multiple defendants.  You also capture that you need to know the trial date and the dollar amount <em>of the suit</em>.  You erase that note to yourself, because your diagram now clearly indicates that one lawsuit involves multiple defendants.  You make another note to yourself that it is not clear if a plaintiff can be involved in more than one suit with the same defendants (he can).  You&#8217;ll deal with that later.</p>
<p>What you&#8217;ve drawn is something (the suit) that is both a relationship <em>and</em> an object.  In UML class diagrams, this is called an association class.</p>
<h2>Creating An Association Class in a Visio UML Class Diagram</h2>
<p>To create an association class, you use the <em>Association Class</em> shape in the Visio UML Static Structure stencil.</p>
<p><img title="association class visio shape" alt="association class visio shape" src="http://www.smugmug.com/photos/267935473_ozEC8-L.jpg" /></p>
<p>Drag the association class onto the page.</p>
<p><img title="default visio uml association class" alt="default visio uml association class" src="http://www.smugmug.com/photos/267947206_E9Bpw-L.gif" /><br />
By now, you realize that you need to suppress the <em>end names</em> in the display.  Right click on the shape and select &#8220;Shape Display Options&#8230;&#8221;:</p>
<p><img title="shape display options menu" alt="shape display options menu" src="http://www.smugmug.com/photos/264377116_QZicY-L.jpg" /></p>
<p>And disable the display of the end names:</p>
<p><img title="shape display options dialog" alt="shape display options dialog" src="http://www.smugmug.com/photos/267935492_4Q7cg-L.jpg" /></p>
<p>Now your shape will look like this:</p>
<p><img title="updated uml association class" alt="updated uml association class" src="http://www.smugmug.com/photos/267935477_ReNwJ-L.gif" /></p>
<p>You can manipulate the shape and its placement in two different ways.  You can select and drag either line end (to connect to another shape in the diagram)</p>
<p><img title="dragging line ends" alt="dragging line ends" src="http://www.smugmug.com/photos/267948569_p4gup-L.jpg" /></p>
<p>Or you can drag the &#8220;class&#8221; portion (the box) of the shape to wherever you want to place it.  [Note: When you drag the class, it <em>looks like</em> you are disconnecting the line from the shapes and messing everything up.  It is not happening.  When you release the mouse button, the class will be where you put it, and the line will still be where it was before.]  There is a dashed-line that connects the class (the box) to the association (the line).  Visio automatically updates that for you &#8211; you never have to worry about it.  In fact, if you don&#8217;t like it where it is, you can&#8217;t do anything about it either.</p>
<p>You could use the rotate-handle (the green circle on top) to rotate the box, but please don&#8217;t.  Class diagrams, by convention, are drawn with everything aligned with the page.  To get the line on top, just drag the line ends above the shape (or drag the shape below the line ends).</p>
<p>You use the same rules for showing directions with an association class that you do with a regular association.  If the business needs to think in one direction &#8211; &#8220;Who has the plaintiff sued?&#8221; then show that arrow.  If the business wants to think in the other direction &#8211; &#8220;Who has sued a particular defendant?&#8221; then show the opposite arrow too.</p>
<h2>Even More Complex Relationships</h2>
<p>The cool shape above lets you draw a three-way relationship.  It is most handy when you need to understand something about the relationship itself &#8211; treating the relationship as a noun instead of a verb.  You can create relationships in UML class diagrams that involve more than three objects.  These are called <em>N-Ary Associations</em>.  The &#8220;N-Ary&#8221; part is geek-speak for &#8220;binary, trinary, quaternary, etc&#8221; &#8211; any number is valid.</p>
<p>Earlier, we glossed over one question &#8211; &#8220;Can a single plaintiff, related to multiple defendants in the context of a single suit, also be related to those defendants by another suit?&#8221;  You can use an n-ary association to depict this.</p>
<p>In the Visio UML Static Structure stencil, select the <em>N-Ary Link</em> shape.</p>
<p><img alt="visio uml class diagram n-ary shape" title="visio uml class diagram n-ary shape" src="http://www.smugmug.com/photos/267966421_8kVwQ-L.jpg" /></p>
<p>Drag it onto the page</p>
<p><img alt="n-ary shape default" title="n-ary shape default" src="http://www.smugmug.com/photos/267965465_da3Xh-L.jpg" /></p>
<p>It looks a bit like a decision diamond from a flow chart, but with handles.  Drag it to where you want it to be in your diagram and then start connecting the line ends to the related classes.</p>
<p><img alt="connecting uml classes with an n-ary link" title="connecting uml classes with an n-ary link" src="http://www.smugmug.com/photos/267965454_ycQBB-L.jpg" /></p>
<p>After you&#8217;ve connected the ends (or before, but after is easier), double click on the shape to bring up the properties dialog.</p>
<p><img alt="visio uml n-ary link properties dialog" title="visio uml n-ary link properties dialog" src="http://www.smugmug.com/photos/267965473_5e44a-L.jpg" /></p>
<p>You&#8217;ll see three &#8220;Link Ends&#8221; &#8211; just rename them to show the multiplicity of the connections.  You will end up with a final diagram that shows:</p>
<p><img title="final lawsuit relationship" alt="final lawsuit relationship" src="http://www.smugmug.com/photos/267965460_4yVYd-L.gif" /></p>
<p>One plaintiff can sue one or more defendants in one or more suits.  You could (and I will) argue that this is even more ambiguous than the previous diagram.</p>
<ul>
<li>Who does the suing?  Is it the plaintiff, the defendant, or the suit itself?</li>
<li>Are they even suing?  Perhaps the relationship is just &#8220;they are all in the same room at the same time.&#8221;</li>
<li>When a plaintiff sues multiple defendants, is it one defendant per suit, with multiple suits?  Can it be?  Must it be?</li>
</ul>
<p>Personally, I never use an n-ary association when modeling complex relationships.  I much prefer the association class.</p>
<h2>A Simpler But Busier Alternative UML Class Diagram</h2>
<p>You never <em>have to</em> use an association class.  You can always represent the situation with three classes and two associations as the following diagram shows:</p>
<p><img title="alternate uml class diagram associations" alt="alternate uml class diagram associations" src="http://www.smugmug.com/photos/267977294_63Mxk-L.gif" /></p>
<p>Instead of an association class, you create a single class (suit) that represents the noun, and you break up the single association (suing) into two association (attacks with, defends against).  In some ways, this is more precise than using an association class.  You can tell from the diagram above that</p>
<ul>
<li>A single plaintiff attacks with one or more lawsuits.</li>
<li>One or more defendants defend against a single lawsuit.  Therefore, there could be two suits between the same plaintiff and the same defendants at the same time.</li>
</ul>
<p>What you lose is a notion that the suit <em>establishes the context of the relationship</em> between the plaintiff and the defendant(s).  Ultimately it is a judgment call about which form to use (the association class or the normal class with two associations).  If understanding the specific multiplicity data is important, you should use the two-association diagram.  If it is not, I personally feel that the association class provides clarifying context.</p>
<h2>Next Up</h2>
<p>In the first five parts of this series we’ve covered</p>
<ul>
<li>Using classes to represent business objects and entities.</li>
<li>Using simple associations (relationships) to demonstrate how objects are dependent or how they relate to one another.</li>
<li>Using composition and aggregation to show how objects are treated when grouped together.</li>
<li>Using generalization and inheritance hierarchies to show how similar, related objects can behave differently.</li>
<li>Using association classes and n-ary associations to express more complex relationships.</li>
</ul>
<p>If you understand all of these concepts, you are ready to create UML class diagrams of the business domain and concepts.  You are ready to use these tools to uncover otherwise hidden requirements.  If you want to study some of the more arcane details around UML class diagrams, you should be ready to read Scott Ambler&#8217;s articles.</p>
<ul>
<li><a title="uml class diagrams" href="http://www.agilemodeling.com/artifacts/classDiagram.htm">UML 2 Class Diagrams</a> &#8211; an explanation, in detail, of how and what and why to draw things a particular way</li>
<li><a title="styling your class diagrams" href="http://www.agilemodeling.com/style/classDiagram.htm">UML 2 Class Diagram Guidelines</a> &#8211; advice on how to make your diagrams consumable and appealing</li>
</ul>
<p>Just keep in mind that Scott jumps right into complex topics (which you are now ready for), and also includes tips and advice that are only relevant when creating class diagrams of implementation designs.  Just filter that stuff out.  Or come up with a way to leverage those details to the modeling of business ideas, and share them here.</p>
<p>Thanks for following along this far, and if you have any questions or would like to see us cover anything else about using UML class diagrams for uncovering requirements, add a comment below.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Uncovering+Requirements+With+UML+Class+Diagrams+Part+5+http%3A%2F%2Fbit.ly%2FhMAWBq+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/19/requirements-class-diagrams-5/&amp;t=Uncovering+Requirements+With+UML+Class+Diagrams+Part+5" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Uncovering Requirements With UML Class Diagrams Part 4</title>
		<link>http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/</link>
		<comments>http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 02:00:59 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling requirements]]></category>
		<category><![CDATA[ooa]]></category>
		<category><![CDATA[requirements class diagram]]></category>
		<category><![CDATA[uml class diagram for analysis]]></category>
		<category><![CDATA[uml class diagrams]]></category>
		<category><![CDATA[uml requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F17%2Frequirements-class-diagrams-4%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 4" }); The hardest part of gathering requirements effectively is uncovering the requirements that people don&#8217;t immediately tell you. You have to ask the right questions. And one of the best ways to find the right questions to build a class diagram [...]]]></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%252F03%252F17%252Frequirements-class-diagrams-4%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uncovering%20Requirements%20With%20UML%20Class%20Diagrams%20Part%204%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F17%2Frequirements-class-diagrams-4%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 4" });</script></div>
<p><img alt="dozer" title="dozer" src="http://www.smugmug.com/photos/266136527_CRPmU-L.jpg" /></p>
<p>The hardest part of gathering requirements <em>effectively</em> is uncovering the requirements that people don&#8217;t immediately tell you.  You have to ask the right questions.  And one of the best ways to find the right questions to build a class diagram of the business domain.  This article continues our introduction to class diagrams.</p>
<p><span id="more-649"></span></p>
<h2>Catching Up on UML Class Diagrams</h2>
<p>If you’ve found this article first, there are three that came before it.</p>
<ol>
<li><a title="Representing business concepts with uml class diagrams" href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/">Uncovering Requirements With UML Class Diagrams Part 1</a>: Discusses how to represent objects and entities from a business perspective.</li>
<li><a title="simple relationships in uml class diagrams" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">Uncovering Requirements With UML Class Diagrams Part 2</a>: Discusses simple relationships between objects or entities.</li>
<li><a title="using class diagrams for aggregation and compositing" href="http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/">Uncovering Requirements With UML Class Diagrams Part 3</a>: Discusses combining objects into collections and concepts.</li>
<li>Uncovering Requirements With UML Class Diagrams Part 4: This article.</li>
</ol>
<p>So jump back to the other articles and get up to speed. We’ll wait for you here. As a reminder, in this series, we’re specifically focusing on using UML class diagrams for uncovering requirements &#8211; as part of analysis, not design. We’re talking about what the business needs, not how the solution will work.</p>
<h2>Generalization: A Dog <em>Is A</em> Mammal</h2>
<p>We&#8217;ve looked at objects and relationships between them.  We&#8217;ve looked at the special association relationships that give us aggregation and composition.  Generalization is another form of relationship, but not one that tells us how different objects interact &#8211; one that helps us better describe objects.  We could talk about a dog, and create an object that represents a dog.  But what if we also wanted to talk about a horse?  They have some things in common, because they are both mammals.  Generalization allows us to talk about mammals too.  That&#8217;s fine, but let&#8217;s use a business example instead of a classroom example.</p>
<p>The key to this generalization relationship is to think about the phrase &#8220;is a.&#8221;  A dog <em>is a</em> mammal.  Don&#8217;t confuse this with combining objects into an aggregation.  A pack <em>has a</em> bunch of dogs in it.  A zoo <em>has a</em> bunch of mammals (and other animals) in it.  But a dog is not a specialized pack.  It is a specialized mammal.</p>
<p><strong>Remember <em>&#8220;&#8230;is a</em>&#8230;&#8221;</strong></p>
<p>This relationship carries special meaning &#8211; all things (characteristics, behaviors, etc) that are true about the general object are true about the specialized object.  But all things about the specialized object are not necessarily true about the general object.</p>
<ul>
<li>All mammals have hair, therefore all dogs have hair.</li>
<li>All mammals have live babies (they do not eggs), therefore all dogs have live babies (puppies).</li>
<li>All dogs are pack animals, but all mammals are not (elephants are, but shrews are not).</li>
</ul>
<p>Technical folks usually call this <em>inheritance</em> &#8211; the specialized object <em>inherits</em> all of the properties and behavior of the generalized object.  <em>Inherit </em>is almost as good of a word to use as <em>generalizes</em>.  Where <em>inheritance </em>really helps as a term is it allows us to think in terms of <em>parents and children</em> objects.  The mammal is a <em>parent</em> and the dog is a <em>child</em> of mammal.  The terms <em>parent</em> and <em>child </em>make it much less cumbersome to talk about generalization relationships.</p>
<h2>Understanding Insurance Policies With Generalization</h2>
<p>Consider that you&#8217;re working on a project for a life insurance company.  In your first <a title="interviewing techniques" href="http://tynerblain.com/blog/2006/01/15/how-to-interview-when-gathering-requirements/">conversation with a subject matter expert</a>, you hear five different terms for describing insurance policies.  At a convenient pause, you stop the interview, walk over to a white board, and draw <a title="drawing uml class diagram objects" href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/">class diagram objects</a> for each of the five items.</p>
<p><img title="insurance policies in disarray" alt="insurance policies in disarray" src="http://www.smugmug.com/photos/266357139_mBtpR-L.gif" /></p>
<p>You ask your expert how all these objects are related to each other.  She explains that all life insurance policies are either term policies (they last for a fixed term of time) or permanent policies (they last for as long as the premiums are paid).</p>
<p>You recognize this as a <em>generalization</em> relationship.</p>
<ul>
<li>Every Term Policy <em>is a</em> Life Insurance Policy</li>
<li>Every Permanent Policy <em>is a</em> Life Insurance Policy</li>
</ul>
<p>Your SME also informs you that permanent policies, as a form of investment, are always one of two special types &#8211; whole life policies and variable insurance policies.  Whole life policies have a fixed return for a fixed premium.  Variable policies invest your premium in market securities, and the amount of money available at the time of payment depends upon the performance of the policy.  More <em>generalization</em> relationships.</p>
<ul>
<li>Every Whole Life Policy <em>is a</em> Permanent Policy</li>
<li>Every  Variable Insurance Policy <em>is a</em> Permanent Policy*</li>
</ul>
<p>[*As far as I know.  If there is such a thing as a variable term life insurance policy, my apologies - just assume that your company does not sell one.]</p>
<p>You draw the generalization relationships on the white board, and you move forward in eliciting requirements.  This drawing is known as a <em>hierarchy</em>.</p>
<p><img alt="insurance policy hierarchy" title="insurance policy hierarchy" src="http://www.smugmug.com/photos/266357144_xfmde-L.gif" /></p>
<h2>Drawing Generalization Relationships in Visio</h2>
<p>You use the <em>generalization</em> shape in visio to create generalization (inheritance) relationships between classes in your class diagram.</p>
<p><img alt="generalization shape in static structure visio stencil" title="generalization shape in static structure visio stencil" src="http://www.smugmug.com/photos/266357130_4NdiY-L.jpg" /></p>
<p>As you drag it onto the page, it looks like the following:</p>
<p><img alt="dragging inheritance arrow onto visio page" title="dragging inheritance arrow onto visio page" src="http://www.smugmug.com/photos/266357135_xAxgF-L.jpg" /></p>
<p>The shape is an arrow with a closed (but not filled) arrowhead on one end.  You connect that arrowhead to the <em>parent</em> class &#8211; the more-general of the two.  The tail is connected to the <em>child</em> class &#8211; the more-specific of the two.</p>
<p><img alt="showing a single inheritance relationship in a uml class diagram" title="showing a single inheritance relationship in a uml class diagram" src="http://www.smugmug.com/photos/266357143_Qf4Lx-L.gif" /></p>
<p>Once you draw all the relationships, your Visio class diagram will look like the following:</p>
<p><img alt="Insurance policies in an inheritance relationship" title="Insurance policies in an inheritance relationship" src="http://www.smugmug.com/photos/266357144_xfmde-L.gif" /></p>
<p>Now you&#8217;re prepared to understand the other information your subject matter experts are sharing, in the context by which the business is describing their requirements.</p>
<p>This hierarchy makes sense, but it seems to be completely different from all the other class diagram stuff we&#8217;ve done.  How can you combine these different views?  It is the combination of them that really brings out the value.</p>
<h2>Relationships, Classes, and Inheritance</h2>
<p>The first thing to realize is that <a title="class diagram associations" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">association relationships</a>, <a title="composition and aggregation associations within uml class diagrams" href="http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/">composition relationships</a>, and inheritance relationships can all happily co-exist within the same UML class diagram.  In fact, much of the insight you gain into uncovering requirements only comes when you combine these different analyses within a diagram.</p>
<p>The structure we looked at above provides a good description of how a company manages the policies that they write.  What you are likely to want to document are requirements around selling those policies.  Each time a policy is sold, an <em>agreement</em> is created.  That agreement is a copy of the policy sold (at the time of selling it), with the insured person&#8217;s name filled in.  You can imagine the policy to be a form with blanks that need to be filled in.  Each time a policy is sold, someone makes a copy of the &#8220;official&#8221; policy, fills in the blanks &#8211; name of insured, policy dates, etc &#8211; and then it becomes an agreement.</p>
<p>Introducing the term <em>agreement</em> allows the business to treat the two ideas separately.  A policy defines the agreements that can be sold at any given time.  An agreement is one policy, as sold to an insured person (customer).</p>
<p><img alt="agreement small" title="agreement small" src="http://www.smugmug.com/photos/266462111_6J2c7-S.gif" /> [<a title="larger policy diagram" href="http://www.smugmug.com/photos/266462111_6J2c7-O.gif">click for larger diagram</a></p>
<p>As you can see from the diagram, we have the same hierarchy for describing insurance policies.  We've added some other objects and relationships.</p>
<p><strong>Objects</strong></p>
<ul>
<li>Agreement.  A policy written by an agent for an insured person.  The agreement is written in a specific state.</li>
<li>Agent.  An agent is someone who sells insurance policies (agreements).  The agent lives in a specific state.</li>
<li>Insured Person.  Someone who purchases an insurance policy (agreement).  The person lives in a specific state.</li>
<li>Insurance License.  An official document that allows someone to sell policies in a specific state for a period of time.</li>
<li>NASD License.  A special license from the National Association of Securities Dealers that allows someone to sell variable insurance policies.</li>
</ul>
<p><strong>Relationships</strong></p>
<ul>
<li>A life insurance policy <em>is used as a template for an</em> agreement.</li>
<li>An agreement <em>is written by an</em> agent.</li>
<li>An agreement <em>is held by </em>an insured person</li>
<li>An agent <em>holds one or more</em> insurance licenses.</li>
</ul>
<p>From the diagram, we can understand that an agent sells an agreement to an insured person.  That agreement is based on a life insurance policy.  The agent holds at least one license to sell insurance.</p>
<p>Notice the relationship between the <em>agreement </em>class and the<em> life insurance policy</em> class.  The life insurance policy is at the top of an inheritance hierarchy.  Each other type of insurance policy (term, whole life, etc) is just a specialization of life insurance policy.  The diagram depicts that the agreement can be one of any of the different types of insurance policy.  And therefore, an agent can sell any of the types, and an insured person can hold an agreement of any of the types of insurance policy.</p>
<p>When reviewing these relationships, you discover that this is an <em>overly</em> simplified representation.  You capture the additional information and update your diagram.</p>
<h2>More Complex Class Diagram</h2>
<p>As part of reviewing the diagram, you discover that <em>variable</em> insurance policies are treated very differently than other insurance policies.</p>
<ul>
<li>An agent must have a different type of license (an NASD) license to sell variable insurance.  Because of this, the business treats these agents as being special - they are called "Broker / Agents" and are subject to many different internal policies and procedures.  Some of those policies represent enforcement of legal regulations, and others are internal policies.</li>
<li>A broker / agent can sell both variable and fixed (non-variable) insurance policies.</li>
<li>A variable policy is a combination of a fixed policy and an investment.  As such, the business thinks about those customers as <em>investors</em>, and not just <em>insured people</em>.  This distinction is really only relevant to sales people and marketing - who will use different approaches to sell to people who want investments.</li>
</ul>
<p>You update your class diagram to look like the following:</p>
<p><img title="variable insurance small" alt="variable insurance small" src="http://www.smugmug.com/photos/266480800_DJPsu-S.gif" /> [<a title="larger complex diagram" href="http://www.smugmug.com/photos/266480800_DJPsu-O.gif">click for larger diagram</a>]</p>
<p>This diagram is much more complicated.</p>
<ul>
<li>We enhanced the hierarchy for insurance licenses to reflect that broker/agents need a different type of license (NASD license) to sell insurance.</li>
<li>An <em>insured person</em> holds a fixed agreement, where an <em>investor</em> holds a variable agreement.</li>
<li>An agent can only write a fixed agreement, where a broker/agent can write any type of agreement (fixed or variable).</li>
</ul>
<p>The diagram is  <em>almost</em> too complex to absorb within a UML tutorial.  If you were writing these requirements, and did not create a similar diagram, you would be in trouble.  In the best case, you would end up with an implementation that met all the requirements, but did not use a good implementation design (due to lack of context).  It is more likely that either you would miss some requirements, or your implementation or test team would miss some.</p>
<p>The diagrams that have had the most impact, in our experience, are diagrams that have a similar level of complexity.</p>
<h2>Next Up</h2>
<p>In the first four parts of this series we&#8217;ve covered</p>
<ul>
<li>Using classes to represent business objects and entities.</li>
<li>Using simple associations (relationships) to demonstrate how objects are dependent or how they relate to one another.</li>
<li>Using composition and aggregation to show how objects are treated when grouped together.</li>
<li>Using generalization and inheritance hierarchies to show how similar, related objects can behave differently.</li>
</ul>
<p>All of the tools you&#8217;ve learned so far deal with <em>binary</em> associations &#8211; an agent sells a policy, a book club reviews books.  In the next article, we will look at relationships that involve more than two classes.</p>
<p><a title="uml class diagram association classes and n-ary associations" href="http://tynerblain.com/blog/2008/03/19/requirements-class-diagrams-5/">Uncovering Requirements With UML Class Diagrams Part 5: Complex Relationships</a></p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Uncovering+Requirements+With+UML+Class+Diagrams+Part+4+http%3A%2F%2Fbit.ly%2FgAC5eQ+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/17/requirements-class-diagrams-4/&amp;t=Uncovering+Requirements+With+UML+Class+Diagrams+Part+4" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uncovering Requirements With UML Class Diagrams Part 3</title>
		<link>http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/</link>
		<comments>http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 03:40:47 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling requirements]]></category>
		<category><![CDATA[ooa]]></category>
		<category><![CDATA[requirements class diagram]]></category>
		<category><![CDATA[uml class diagram for analysis]]></category>
		<category><![CDATA[uml class diagrams]]></category>
		<category><![CDATA[uml requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F13%2Frequirements-class-diagrams-3%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 3" }); UML Class Diagrams are very effective at uncovering requirements. They give us insight into how the business thinks about objects and their relationships. And from that understanding, we think to ask questions we might otherwise overlook. In this part 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%252F2008%252F03%252F13%252Frequirements-class-diagrams-3%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uncovering%20Requirements%20With%20UML%20Class%20Diagrams%20Part%203%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F13%2Frequirements-class-diagrams-3%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 3" });</script></div>
<p><img title="digging" alt="digging" src="http://www.smugmug.com/photos/265493886_dXET4-L.jpg" /></p>
<p>UML Class Diagrams are very effective at uncovering requirements.  They give us insight into how the business thinks about objects and their relationships.  And from that understanding, we think to ask questions we might otherwise overlook.  In this part of our series, we look at how to represent when one object is made up of other objects.  The two types of relationships we explore are composition and aggregation.</p>
<p><span id="more-647"></span></p>
<h2>Catching Up on UML Class Diagrams</h2>
<p>If you&#8217;ve found this article first, there are two that came before it.</p>
<ol>
<li><a title="Representing business concepts with uml class diagrams" href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/">Uncovering Requirements With UML Class Diagrams Part 1</a>: Discusses how to represent objects and entities from a business perspective.</li>
<li><a title="simple relationships in uml class diagrams" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">Uncovering Requirements With UML Class Diagrams Part 2</a>: Discusses simple relationships between objects or entities.</li>
<li>Uncovering Requirements With UML Class Diagrams Part 3: This article.</li>
</ol>
<p>So jump back to the other articles and get up to speed.  We&#8217;ll wait for you here.  As a reminder, in this series, we&#8217;re specifically focusing on using UML class diagrams for uncovering requirements &#8211; as part of analysis, not design.  We&#8217;re talking about what the business needs, not how the solution will work.  UML class diagrams can be used for both, and most tutorials are written for<a title="scott ambler's technical tutorial" href="http://www.agilemodeling.com/artifacts/classDiagram.htm"> programmers doing design work</a>.  This one is written for people who work with requirements.</p>
<h2>Relationships of Combination</h2>
<p>When a collection of bananas are combined, we call them a bunch.  Crows exist in a murder, and lions in a pride.  Teams are made up of players.  It is a deck of cards.  An order is a collection of line items.  We have always had the notions of both individual items (or people) and combinations existing as an interesting entity.  Sometimes we treat them the same &#8211; you can eat a banana or a bunch.  You can feed a lion or a pride.  Sometimes, we deal with the combined entity.  You shuffle a deck, you fulfill an order.</p>
<p>Understanding this type of relationship can be very important to understanding what your customer (aka &#8220;the business&#8221;) needs.  You are describing the <em>mental model</em> of the business.  Business people think about fulfilling an order, not &#8220;fulfilling all of the items on the order.&#8221;  A user may want to archive the history (all the previous versions) of a file, or she may just want to keep the most recent version.  Thinking about these concepts helps you uncover the requirements.</p>
<p>There are two <a title="funny jargon video" href="http://tynerblain.com/blog/2006/02/15/jargon-gone-amuck/"><em>jargon</em></a> terms &#8211; aggregation and composition &#8211; that apply when we talk about multiple things as one combined thing.  They have precise meanings.</p>
<ul>
<li>Composition &#8211; when one item is <em>part of</em> another item, the relationship is composition.</li>
<li>Aggregation &#8211; when one item <em>can be included in</em> another item, the relationship is aggregation.</li>
</ul>
<p>If that doesn&#8217;t make sense, this &#8220;formal&#8221; distinction will really mess you up:</p>
<blockquote><p>Composition is a stronger form of aggregation where the whole and parts have coincident lifetimes, and it is very common for the whole to manage the lifecycle of its parts.</p>
<p><cite>Scott Ambler</cite></p></blockquote>
<p>Here are some examples that may simplify things:</p>
<h2>Composition</h2>
<ul>
<li>A building is composed of one or more rooms (a room is part of a building)</li>
<li>A plane is composed of a fuselage, one or more engines, and one or more wings (a wing is part of a plane)</li>
<li>An order is composed of one or more line items (a line item is part of an order)</li>
</ul>
<h2>Aggregation</h2>
<ul>
<li>A team includes more than one players</li>
<li>A library includes more than one books</li>
<li>A market includes one or more customers</li>
</ul>
<p>Ambler&#8217;s definition makes sense, when you think about these examples.  You could shut down a library without destroying the books &#8211; likewise, you could kick one of the players off a team and the team would still exist.  That&#8217;s what he means by <em>coincident lifetimes</em>.</p>
<h2>Drawing a Composition Relationship With Visio</h2>
<p>To draw a composition relationship in Visio, you use the <em>composition</em> shape from the UML Static Structure stencil.</p>
<p><img title="composition shape" alt="composition shape" src="http://www.smugmug.com/photos/265492984_eKQ9V-L.jpg" /></p>
<p>When you first drop this shape on the page to connect two classes, it looks like the following:</p>
<p><img title="an order is made up of line items" alt="an order is made up of line items" src="http://www.smugmug.com/photos/265492992_yKHGd-L.gif" /></p>
<p>There is a solid black diamond on one end (the first end) and nothing on the other end.  In UML, this is stating that an order is <em>composed of</em> line items.  By default, Visio shows the &#8220;end names&#8221; as it did with the association shape.  You can fix it the same way we did before.  Right click on the line and select <em>shape display options</em>.</p>
<p><img title="shape display options context menu item" alt="shape display options context menu item" src="http://www.smugmug.com/photos/264377116_QZicY-L.jpg" /></p>
<p>Then make the same modification we did before, to show the shape name and suppress the display of the &#8220;end names.&#8221;</p>
<p><img title="shape display options dialog" alt="shape display options dialog" src="http://www.smugmug.com/photos/264377118_7UN7a-L.jpg" /></p>
<p>Now you have the kind of display you want.  Note the check marks at the bottom of the dialog &#8211; you only have to make this change once per class diagram.  Unfortunately, Visio does not remember this change, so you have to do it once for every diagram (every new file, and every new tab within the same file).  Annoying.<br />
<img title="order to line item composition" alt="order to line item composition" src="http://www.smugmug.com/photos/265492996_dEy7k-L.gif" /></p>
<p>Double click on the line to update the information about <em>this</em> composition relationship.</p>
<p><img title="visio uml class diagram composition properties dialog" alt="visio uml class diagram composition properties dialog" src="http://www.smugmug.com/photos/265492980_2zGKm-L.jpg" /></p>
<p>You will end up with the following (we re-arranged it to make it easier to read):</p>
<p><img title="completed composition diagram" alt="completed composition diagram" src="http://www.smugmug.com/photos/265492999_YaJFT-L.gif" /></p>
<h2>Drawing an Aggregation Relationship With Visio</h2>
<p>Drawing an aggregation relationship is almost the same as a composition relationship with Visio &#8211; it just requires an additional step.</p>
<p><img title="book club" alt="book club" src="http://www.smugmug.com/photos/265492967_QbH5q-L.gif" /></p>
<p>In this example, a book club reviews books.  You want to show that the book club <em>includes</em> members.  Note &#8211; members can come and go without causing the book club to be disbanded.  You can think of aggregation as <em>membership</em> in a combined entity.</p>
<p>First, use the composition shape again (the same as above), and update the properties as we just did.  You will see</p>
<p><img title="composition as aggregation" alt="composition as aggregation" src="http://www.smugmug.com/photos/265492976_D5MHN-L.gif" /></p>
<p>The Visio stencil does not include a special <em>aggregation</em> shape, so we will cheat by changing the formatting of the <em>composition</em> shape.  Select (in the menu at the top of the window) format > line&#8230;</p>
<p><img title="format line menu item" alt="format line menu item" src="http://www.smugmug.com/photos/265492988_24LVC-L.jpg" /></p>
<p>And in the dialog, you will change the display of the &#8220;Begin&#8221; end-point.</p>
<p><img title="aggregation" alt="aggregation" src="http://www.smugmug.com/photos/265492981_qTAMs-L.jpg" /></p>
<p>Aggregation is represented in UML Class Diagrams with the same diamond-shape as composition.  The difference is that the shape is &#8220;empty&#8221; instead of being a solid black diamond.  Click &#8220;Apply&#8221; and &#8220;OK&#8221; and you end up with what you want:</p>
<p><img title="aggregation relationship for members in a book club" alt="aggregation relationship for members in a book club" src="http://www.smugmug.com/photos/265515915_CRatX-L.gif" /></p>
<p>Note: If you change the format of the composition line first, and then change the properties (&#8220;Joins&#8221; etc), Visio will reset the line end to be a solid diamond again.  It resets.  Annoying.  If you copy an aggregation line, the copy reverts to the solid diamond again too.  Very annoying.</p>
<h2>Next Up</h2>
<p>Up to this point, you&#8217;ve learned how to define classes (and attributes), simple relationships (A book club reviews books, and a member reads books), and combinations of items as compositions and aggregations (an order is composed of line items, and a book club aggregates members).</p>
<p>Next, we will cover hierarchies, usually thought of as &#8220;Is a&#8221; relationships.  A Sales Rep is an employee, and an employee is a person.</p>
<p><a title="inheritance in class diagrams" href="http://tynerblain.com/blog/2008/03/17/requirements-class-diagrams-4/">Uncovering Requirements With UML Class Diagrams Part 4</a>: Generalization (inheritance) and how to use it.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Uncovering+Requirements+With+UML+Class+Diagrams+Part+3+http%3A%2F%2Fbit.ly%2FhPfvoV+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/13/requirements-class-diagrams-3/&amp;t=Uncovering+Requirements+With+UML+Class+Diagrams+Part+3" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uncovering Requirements With UML Class Diagrams Part 2</title>
		<link>http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/</link>
		<comments>http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 04:26:32 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling requirements]]></category>
		<category><![CDATA[ooa]]></category>
		<category><![CDATA[requirements class diagram]]></category>
		<category><![CDATA[uml class diagram for analysis]]></category>
		<category><![CDATA[uml class diagrams]]></category>
		<category><![CDATA[uml requirements]]></category>
		<category><![CDATA[visio]]></category>
		<category><![CDATA[visio uml]]></category>
		<category><![CDATA[visio uml stencil]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F10%2Frequirements-class-diagrams-2%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 2" }); We continue our exploration of UML Class Diagrams with this article that explores how to represent basic business relationships in a class diagram. Drawing these relationships can dramatically clarify requirements documents. Using a class diagram to supplement other requirements documents [...]]]></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%252F03%252F10%252Frequirements-class-diagrams-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uncovering%20Requirements%20With%20UML%20Class%20Diagrams%20Part%202%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F10%2Frequirements-class-diagrams-2%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 2" });</script></div>
<p><img alt="front loader" title="front loader" src="http://sehlhorst.smugmug.com/photos/264358008_sQVyu-L-0.jpg" /></p>
<p>We continue our exploration of UML Class Diagrams with this article that explores how to represent basic business relationships in a class diagram.  Drawing these relationships can dramatically clarify requirements documents.  Using a class diagram to supplement <a title="requirements documents" href="http://tynerblain.com/blog/2006/01/20/document-proliferation/">other requirements documents</a> provides for a centralized reference that enables a <em>shared understanding</em> of the problem domain.  That <a title="writing unambiguous requirements" href="http://tynerblain.com/blog/2006/06/12/writing-unambiguous-requirements/">understanding prevents mistakes</a> in interpreting requirements.</p>
<p><span id="more-646"></span></p>
<h2>Getting Up To Speed</h2>
<p>We started this <a title="Class diagrams" href="http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/">discussion of class diagrams</a> last week.  In it, we presented the notion of a class.  When <a title="stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">a stakeholder cares about</a> a concept, idea, or thing, we represent it as a class.</p>
<p><img alt="customer class" title="customer class" src="http://www.smugmug.com/photos/262849856_uMzVU-L.gif" /></p>
<p>The business cares about customers.  And customers have addresses and credit ratings.</p>
<h2>Classes and Attributes</h2>
<p>How do you know when something should be an attribute, and not another class?  In our example above, think about <em>Customer</em> and <em>Address</em> and <em>Credit Rating</em>.  One way to make a distinction is to say that if an attribute has other attributes, it should be a class.  A credit rating is just a number.  But an address is a compound object made up of multiple attributes.</p>
<p><img alt="customer address 1" title="customer address 1" src="http://www.smugmug.com/photos/264377102_ZH2j7-L.gif" /></p>
<p>An address can have multiple lines of street address information, as well as city, state, zip code and country information.  That is a good indicator that it is <em>likely to be</em> a class of its own.  If we were to represent an address as attributes of a customer, we would have to include each of the &#8220;sub attributes&#8221; as a separate attribute of customer.  That feels bad, from a design standpoint.</p>
<p>The distinction is one of design, but generally speaking, if the concept stands on its own, it should be its own class.  An address is <em>related to</em> the customer.  A credit rating is <em>a property of</em> a customer.</p>
<h2>Simple Relationships</h2>
<p>How do we show a relationship between a customer and an address?</p>
<p><img alt="customer lives at address" title="customer lives at address" src="http://www.smugmug.com/photos/264377128_e6uKa-L.gif" /></p>
<p>The customer receives bills at an address.  That is the relationship between the customer and the address.  The business wants to know where to send bills for the customer.  We&#8217;ll talk more about relationships in a bit.  First, we&#8217;ll cover the steps in visio for creating the relationship shown above.</p>
<h2>Showing Relationships With Visio&#8217;s UML Stencil</h2>
<p>The relationship shown above is called a <em>binary association</em>, because it shows the association between two classes.  There is an object (Visio calls it a &#8220;master shape&#8221;) in the Static Structure template for creating these, aptly named <em>binary association</em>.</p>
<p><img title="binary association master shape" alt="binary association master shape" src="http://www.smugmug.com/photos/264377105_RzEd8-L.jpg" /></p>
<p>Drag that onto the page, and connect the two classes for which you wish to show a relationship.</p>
<p><img title="binary association with end names" alt="binary association with end names" src="http://www.smugmug.com/photos/264377114_Nwh78-L.gif" /></p>
<p>The default display properties for the <em>binary association</em> shape cause the shape to display some weird information &#8211; called the &#8220;end names&#8221; of the relationship.  The shape also does not give us the arrowhead, or the name of the relationship, <em>Receives Bills At</em>.  Right click on the line and select &#8220;Shape Display Options&#8230;&#8221;</p>
<p><img title="shape display options context menu" alt="shape display options context menu" src="http://www.smugmug.com/photos/264377116_QZicY-L.jpg" /></p>
<p>Remember this, you will use the dialog that pops up a lot.</p>
<p><img title="uml shape display options dialog" alt="uml shape display options dialog" src="http://www.smugmug.com/photos/264377118_7UN7a-L.jpg" /></p>
<p>We want to do three things for now:</p>
<ol>
<li>Check &#8220;Name&#8221; so that the name of the relationship (Receives Bills At) will show up.</li>
<li>Un-check &#8220;First end name&#8221; so that it is hidden.</li>
<li>Un-check &#8220;Second end name&#8221; so that it is hidden too.</li>
</ol>
<p>Click OK, and the shape will have updated to look like the following:</p>
<p><img title="unnamed association" alt="unnamed association" src="http://www.smugmug.com/photos/264377121_YoYt9-L.gif" /></p>
<p>The name is defaulted (to &#8220;Association1&#8243;), and no arrowheads are showing up.  We also have two asterisks, an no &#8220;1.&#8221;  We need to update the shape&#8217;s properties (not <em>display</em> properties) to include that information.  Double click on the line and you will see the following dialog (Fill it out to match):</p>
<p><img title="shape properties" alt="shape properties" src="http://www.smugmug.com/photos/264377126_AYaEt-S.jpg" /> [<a title="full size association properties dialog" href="http://www.smugmug.com/photos/264377126_AYaEt-L.jpg">click for full size view</a>]</p>
<ul>
<li><strong>Name</strong>: Enter &#8220;Receives Bills At.&#8221; for the name.  Note &#8211; some people prefer mixed case or lower-case.  Any approach is fine, just <a title="writing requirements consistently" href="http://tynerblain.com/blog/2006/06/09/big-ten-rules-writing-consistent-requirements/">be consistent</a>. The name is the name <em>of the relationship</em> and it indicates the meaning of the relationship.</li>
<li><strong>Name Reading Direction</strong>: forward and backward will confuse you.  It confused me for years.  This is what determines where the small solid triangle shows up to indicate the direction of reading.  <em>Customer</em> Receives Bills At <em>Address</em>, instead of <em>Address </em>Receives Bills At <em>Customer</em>.  One day, I realized that this field only controls if the triangle shows up before or after the text.  With up-down relationships, I still get confused.  Use the standard of top-to-down is the same as left-to-right, and you&#8217;ll eventually get used to it.</li>
<li><strong>Association Ends</strong>:  This section shows the two ends as rows in a table &#8211; with five columns describing each end.  For now, we will only focus on the last two columns.  This is another area for confusion &#8211; the first row represents the top-left end of the line (when you drag it onto the page) and the second row represents the bottom-right end of the line.  You can move the ends of the line around after you place it on the page, and the rows in this table will maintain their original associations.  Try not to get frustrated when you get these backwards.  I still make that mistake all the time, after creating a few hundred diagrams over the course of a decade.  Think of the top-left end of the line as the &#8220;first&#8221; end, and the bottom-right as the &#8220;second.&#8221;  Then when you move it around, you might remember which is which.  If you get in the habit of attaching the line first to the &#8220;from&#8221; class, and then to the &#8220;to&#8221; class, you will start to get the hang of it.</li>
<li><strong>Multiplicity</strong>:  Multiplicity allows you to specify how many objects can be on either end of the relationship.  In our example, a customer can receive bills at only one address, but multiple customers could share the same address.  My stepdaughter and I each have iTunes accounts.  We are two separate customers, but we have the same address.  Since I attached the &#8220;first&#8221; end to the <em>Customer</em> class, there is an asterisk in the first row, and a &#8220;1&#8243; in the second row. [*See below for explanations]</li>
<li><strong>IsNavigable</strong>:  Either the UI designers for Visio expected all of their users to be Java programmers, or they ran out of space.  &#8220;IsNavigable&#8221; can be translated into &#8220;Should the arrow be shown on this end of the line?&#8221;  Since, as a business, we care about the address at which a customer receives bills, we show the arrow for the &#8220;second&#8221; end.  But we don&#8217;t anticipate (commonly) needing to determine all of the customers that receive bills at a particular address &#8211; so we don&#8217;t show the arrow in the opposite direction.</li>
</ul>
<h2>Types of Multiplicity</h2>
<p>There are a few different concepts that can be displayed for multiplicity.  Your developer co-workers and math geeks will call this cardinality.  That&#8217;s probably even the <em>better</em> term to use.  But since Visio chose <em>multiplicity</em>, so will we, at least for this article.<br />
<img alt="multiplicity" title="multiplicity" src="http://www.smugmug.com/photos/264401798_kq7X2-L.jpg" /></p>
<ul>
<li>1: Exactly one object of this type is involved in the relationship.  A customer has one billing address.</li>
<li>*: Any number of objects (or none at all) are involved in the relationship.  Any number of customers can receive bills at a given address.</li>
<li>0..1: Zero or one objects are involved in the relationship.  A driver may or may not have a drivers license.</li>
<li>0..*: Same as &#8220;*&#8221;</li>
<li>1..1: Same as &#8220;1&#8243;</li>
<li>1..*: Any number of objects (as long as there is at least one) may be involved in the relationship.  A shipment can include any number of items, and it must include at least one item.</li>
</ul>
<p>This brings us back to our original relationship example.</p>
<p><img title="customer billing address relationship" alt="customer billing address relationship" src="http://www.smugmug.com/photos/264377128_e6uKa-L.gif" /></p>
<p>The small class diagram above represents the following:</p>
<ul>
<li>A customer has a credit rating.</li>
<li>An address includes three fields for &#8220;street information&#8221;, city, state/province/county, zip or postal code, and country fields.</li>
<li>A customer receives bills at <strong>exactly one</strong> address.</li>
<li>Any number of customers (or none at all) can receive bills at any one address.</li>
</ul>
<h2>Simple Relationships Revisited</h2>
<p>With the mechanics of using Visio out of the way, we can show some examples of some other simple relationships.</p>
<p><img alt="sales rep and customer" title="sales rep and customer" src="http://www.smugmug.com/photos/264426683_VYTbZ-L.gif" /></p>
<ul>
<li>A sales rep sells products to any number of customers.</li>
<li>Any number of customers purchase products from a sales rep.</li>
</ul>
<p>Both examples above depict the same relationship, and either is acceptable.  What would be bad would be to use the passive voice and say &#8220;any number of customers are sold products by a sales rep.&#8221;  This is the same advice that applies <a title="writing good use case names" href="http://tynerblain.com/blog/2007/01/22/how-to-write-good-use-case-names/">when writing use case names &#8211; don&#8217;t use passive voice</a>.</p>
<p>There are opportunities to misread requirements when relying <em>solely</em> on UML.  Imagine we had a requirement that any customer always make purchases from a single sales rep.  The goal is to provide a sense of <em>relationship</em> for that customer.  Both of the diagrams above <em>technically</em> express that requirement.  If a customer could have more than one sales rep, we would show &#8220;1..*&#8221; instead of &#8220;1&#8243; for the multiplicity on the sales rep side of the relationship.</p>
<p>Someone reading the examples above could <em>reasonably</em> be unsure about the intended requirement.  Is there a single sales rep for a given transaction?  Is there a single sales rep for a given customer, regardless of the number of transactions?  Only the latter interpretation is <em>technically</em> accurate &#8211; but either is a <em>reasonable</em> interpretation.  <a title="daniel berry's home page" href="http://se.uwaterloo.ca/~dberry/">Professor Daniel Berry</a>, author of <a title="the ambiguity handbook" href="http://se.uwaterloo.ca/~dberry/handbook/ambiguityHandbook.pdf"><em>The Ambiguity Handbook</em></a> [The actual title is <em>From Contract Drafting to Software Specification: Linguistic Sources of Ambiguity, A Handbook</em>], explained in a lecture last year at the <a title="2007 ibrf" href="http://tynerblain.com/blog/2007/09/06/10th-ibrf/">2007 IBRF</a> that UML stands for <em>Undefined</em> Modeling Language.  This is a good example of that.</p>
<p>By including the diagram within, or as a reference from, a requirements document, you provide both the context and the graphical clarity needed to understand the intent.  Don&#8217;t rely solely on the diagram!</p>
<p><img title="a product has a price" alt="a product has a price" src="http://www.smugmug.com/photos/264426726_jJbE8-L.gif" /></p>
<p>A product has a price.  One product has one price.  This relationship is almost too simple, making it difficult to come up with a good name for the relationship.  &#8220;A product has a price of price&#8221; is awkward.</p>
<p><img title="product will be sold for price" alt="product will be sold for price" src="http://www.smugmug.com/photos/264435630_tY9Ws-L.gif" /></p>
<p>&#8220;A product will be sold for a price&#8221; is better.  If we were limited to &#8220;has a&#8221;, we could make an argument that the price should be an attribute.  But the price may have properties (like currency used), or may be calculated dynamically based on coupons or contracts.</p>
<p>Using <em>action verbs</em> will help with both understanding and elicitation.  If you are reviewing the diagram above with a stakeholder, you are not likely to get any discussion from &#8220;product has a price&#8221; &#8211; of course it does.  But if you show &#8220;product will be sold for a price&#8221; you will immediately trigger responses.  Especially if you ask &#8220;how do you know what price to sell the product for?&#8221;  Use active verbs with explicit meanings instead of &#8220;weasel words&#8221; like &#8220;has a.&#8221;</p>
<p><img title="multiple addresses" alt="multiple addresses" src="http://www.smugmug.com/photos/264426677_ecG4B-L.gif" /></p>
<p>This is a very clear way to indicate that from a business perspective, the customer has a billing address <em>and</em> a shipping address, and no reason to expect them to be the same.  If you have to worry about export compliance, you may add an &#8220;end use&#8221; address &#8211; the location where the product will ultimately be used.  Imagine how messy that would be if we had used attributes instead of classes!</p>
<p>As messy as that would be, this highlights why we use classes.  Think about some other business relationships we have not drawn.  Credit card authorization uses the billing address.  Taxes may be* calculated based upon the billing address or the shipping address.  Shipping charges would be based upon the shipping address. [*I believe that for physical goods, the shipping address is used, and for electronic downloads, the billing address is used.]<br />
There is no limit to the number of entities and relationships that can be represented in a class diagram.  As a guideline, <a title="target your writing for your audience" href="http://tynerblain.com/blog/2006/10/04/writing-for-the-purpose-of-reading/">think about usability</a>.  Are you producing class diagrams as part of exploring specific areas of the business?  Are you making sure that a complex set of relationships do not get oversimplified?  Are you &#8220;boiling the ocean&#8221; with a giant encyclopedia of the business domain?  If you are &#8211; why?</p>
<h2>Summary So Far</h2>
<p>So far, we have discussed classes as a means to represent entities from a business perspective.  We&#8217;ve also introduced some simple relationships.  Those relationships show how pairs of entities interact or inter-relate.  We&#8217;ve shown how to make the relationships directional and bidirectional &#8211; depending on which way(s) the business needs to look at things.  And we&#8217;ve covered multiplicity &#8211; how many of each type of object are involved in the relationship.</p>
<p>There is still a fair amount of ground to cover between here and Scott Ambler&#8217;s comprehensive reference.  If any of the concepts so far are unclear, or if there&#8217;s something you want to make sure we cover &#8211; add a comment!</p>
<h2>Next Up</h2>
<p>In our next article on using UML Class Diagrams for unearthing requirements, we will look at more complex relationships.</p>
<p><a title="using class diagrams for aggregation and compositing" href="http://tynerblain.com/blog/2008/03/13/requirements-class-diagrams-3/">Uncovering Requirements With UML Class Diagrams Part 3</a>: Combining objects into collections and concepts.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Uncovering+Requirements+With+UML+Class+Diagrams+Part+2+http%3A%2F%2Fbit.ly%2FeQHT9t+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/10/requirements-class-diagrams-2/&amp;t=Uncovering+Requirements+With+UML+Class+Diagrams+Part+2" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Uncovering Requirements With UML Class Diagrams Part 1</title>
		<link>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/</link>
		<comments>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 04:23:41 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[UML Modeling]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[modeling requirements]]></category>
		<category><![CDATA[ooa]]></category>
		<category><![CDATA[requirements class diagram]]></category>
		<category><![CDATA[uml class diagram for analysis]]></category>
		<category><![CDATA[uml class diagrams]]></category>
		<category><![CDATA[uml requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F06%2Frequirements-class-diagrams-1%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 1" }); UML Class Diagrams can be used not only for documenting software design, but for documenting software requirements. One of the challenges in writing clear, unambiguous requirements is being precise about what a particular word means. This is especially true with [...]]]></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%252F03%252F06%252Frequirements-class-diagrams-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uncovering%20Requirements%20With%20UML%20Class%20Diagrams%20Part%201%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F03%2F06%2Frequirements-class-diagrams-1%2F", "style": "big", "title": "Uncovering Requirements With UML Class Diagrams Part 1" });</script></div>
<p><img title="digger" alt="digger" src="http://sehlhorst.smugmug.com/photos/262810530_eFAkk-L.jpg" /></p>
<p>UML Class Diagrams can be used not only for documenting software design, but for documenting software requirements.  One of the challenges in writing clear, unambiguous requirements is being precise about what a particular word means.  This is especially true with <a title="symbolism and communication" href="http://tynerblain.com/blog/2006/02/12/symbolism-and-communication/"><em>symbolic</em> terms</a> like &#8220;quote&#8221; or &#8220;customer&#8221; &#8211; where everyone <em>knows</em> what they mean &#8211; but they mean different things to different people.</p>
<p><span id="more-644"></span></p>
<h2>Why Create UML Class Diagrams for Requirements?</h2>
<p>One of the first articles we wrote in 2005 provides <a title="diagrams simplify requirements" href="http://tynerblain.com/blog/2005/12/09/a-picture-is-worth-a-thousand-requirements/">a very simple class diagram example</a>, and an explanation of why you should use class diagrams to clarify your documents.</p>
<blockquote><p><img style="width: 396px; height: 213px" src="http://sehlhorst.smugmug.com/photos/47711990-M.png" /></p>
<p>In prose, we could also capture the same information as follows:</p>
<ol>
<li>The      system shall include a representation of customer orders.</li>
<li>Each order will have a single associated customer, and each customer can have multiple orders. Note that a customer is not required to have any orders.</li>
<li>Each order will have at least one, and possibly multiple line items. Each line item is uniquely associated with a single order.</li>
<li>Each line item represents a single product. Note that a product is not required to be represented in a line item. A product can be represented in multiple line items (even within the same quote).</li>
</ol>
<p><strong>OOA is compellingly powerful as a descriptive tool</strong> – it took less time to draw the diagram, and it <em>can be</em> easier to read than the prose.</p>
<p><cite><a title="using class diagrams" href="http://tynerblain.com/blog/2005/12/09/a-picture-is-worth-a-thousand-requirements/">A Picture is Worth A Thousand Requirements</a></cite></p></blockquote>
<p>UML class diagrams, in addition to being potent for communication, can also help with requirements discovery.  They provide a clarity and explicitness of understanding that helps you gain insight into the topics being explored.</p>
<h2>Getting Started or Getting Refreshed</h2>
<p>If you already know UML, or generally know how to draw UML 2 Class Diagrams, you can &#8220;test out&#8221; of this article, and go to the best, most thorough explanations we know of, courtesy of Scott Ambler.</p>
<ul>
<li><a title="uml class diagrams" href="http://www.agilemodeling.com/artifacts/classDiagram.htm">UML 2 Class Diagrams</a> &#8211; an explanation, in detail, of how and what and why to draw things a particular way</li>
<li><a title="styling your class diagrams" href="http://www.agilemodeling.com/style/classDiagram.htm">UML 2 Class Diagram Guidelines</a> &#8211; advice on how to make your diagrams consumable and appealing</li>
</ul>
<p>If your eyes glazed over, that&#8217;s ok.  There is a lot to absorb.  There are a lot of advanced concepts that can be represented in class diagrams, and Scott provides explanations and examples of how to do most of them.  If you are new to modeling with UML, or are only interested in what you need to know to document <em>requirements</em>, those articles may be too advanced for now.  We&#8217;ll try and close the gap.  Keep those links handy, both for reference, and for deeper explanations than we cover here.  If Ambler&#8217;s articles are written to help you be a master craftsman, we want to help you become a journeyman first.</p>
<p>Class diagrams are incredibly powerful tools for anyone doing requirements work.  I never wrote about them before, because Ambler already did.  And he didn&#8217;t leave me wanting more, so I never knew what to write.  After a recent conversation with someone new to modeling, I discovered that he did leave a gap.  There&#8217;s a fair amount of learning you need to do before you can really get the value from his articles. Ambler also addresses both the analysis and design uses of class diagrams.</p>
<p>We will focus exclusively on using UML class diagrams for analysis.  So if you are a business analyst or requirements analyst, this will help.  If you are a developer, this will help you read the diagrams that analysts create.  If you are a product manager, this will help too, but I think you&#8217;ll need to do this less frequently than a business analyst would.</p>
<p>We do assume that you are already comfortable using Microsoft Visio, but have not used it for creating class diagrams.  You don&#8217;t have to use Visio, but the tools in Visio are good ones for creating class diagrams.</p>
<h2>Visio Template for UML Class Diagrams</h2>
<p>The easiest way to get started is with the default drawing type already available in Visio.</p>
<p><img title="new visio file" alt="new visio file" src="http://sehlhorst.smugmug.com/photos/262810541_NDfPN-L.jpg" /></p>
<p>Create a new file, and select the Software category, then scroll down and select &#8220;UML Model Diagram&#8221; in either US or Metric units.  When you do, a number of stencils will automatically load for you.  You want to use the UML Static Structure stencil.</p>
<p><img title="static structure stencil" alt="static structure stencil" src="http://sehlhorst.smugmug.com/photos/262810538_c8hY9-L.jpg" /></p>
<p>These are the shapes that you use to represent objects in a class diagram.  You can safely ignore all of the other stuff that Visio provides in the other templates.</p>
<h2>The Class</h2>
<p><img alt="empty class" title="empty class" src="http://www.smugmug.com/photos/262839662_rnBFu-L.gif" /></p>
<p>When you drag the &#8220;Class&#8221; shape onto the page, you get the empty looking box on the left.  Visio automatically names it for you as &#8220;Class1.&#8221;  The class represents a concept, entity, item, or object.  It is important for analysts to remember that what you are drawing is &#8220;how the business thinks about these objects&#8221; &#8211; <em>not</em> &#8220;how developers will implement a representation of the objects.&#8221;</p>
<p>There are three areas in each &#8220;class&#8221; shape.  The shape on the right shows that the top area is where the name of the class appears (in bold), the middle section represents attributes, and the lower section captures operations that can be performed by the shape.  This feels like describing an implementation or design.  The terms <em>attribute</em> and <em>operation</em> certainly sound like programming.  UML Class Diagrams may have initially been created to help developers design solutions, that would certainly explain the names.  There is still a lot of power to be unleashed &#8211; so take it on faith for now &#8211; we&#8217;ll present some examples that demonstrate the value of class diagrams for analysis.</p>
<p><img alt="lamp class" title="lamp class" src="http://www.smugmug.com/photos/262839667_A4gjs-L.gif" /></p>
<p>Imagine that you are thinking about a lamp.  Perhaps you are designing an emergency battery backup system, and one of the things you need to think about is how much wattage a lamp requires to operate.  The wattage of the lamp, in English, is a <em>characteristic</em> of the lamp.  Programmers call it an attribute.  For our purposes, the terms are interchangeable.</p>
<p>A lamp can be turned on.  That is pretty intuitive.  We imagine ourselves turning on a lamp.  Actually, all we do is turn a dial (or flip a switch).  When we turn the dial, <em>the lamp turns itself on</em>.  If we were really playing with language, we might say &#8220;When the user requests illumination, the lamp turns on.&#8221;  We would never use that phrasing for a concept as simple as a lamp, but you get the idea.  The <em>operation</em> is something that the object can do.  Dogs bark, cats meow, lamps turn on.</p>
<p>When we are creating class diagrams for requirements discovery, we will <em>always</em> use class names, <em>almost always</em> use attributes, and <em>almost never</em> use operations.</p>
<p><img title="customer" alt="customer" src="http://www.smugmug.com/photos/262849856_uMzVU-L.gif" /></p>
<p>A customer, in the diagram element above has an address.  The customer also has a credit rating.</p>
<p><img title="product" alt="product" src="http://www.smugmug.com/photos/262849859_5qqyh-L.gif" /></p>
<p>The two elements above represent the same information.  A product has both price and weight.  We also find, during our requirements exploration, that we need to know if a product is available.  Perhaps our users need to know if a product is available right now before suggesting it as an <em>up-sell</em> item to a customer.  If that is our requirement, we realize that we need to know the availability of the product.  You can either include the question &#8220;Is it available?&#8221; or a single name for the attibute &#8211; &#8220;Availability.&#8221;</p>
<p>It is better to use the word &#8220;Availability&#8221; for two reasons.  First, it is consistent to say &#8220;price, weight and availability.&#8221;   You could achieve consistency with all questions &#8211; &#8220;What is the price?&#8221; &#8220;How much does it weigh?&#8221; and &#8220;Is it available?&#8221;  But that becomes overly wordy.  The second reason for using a single word is to <a title="separate rules from requirements" href="http://tynerblain.com/blog/2007/09/11/why-separate-rules-from-requirements/">avoid embedding rules in your requirements</a>.</p>
<p><img title="customer again" alt="customer again" src="http://www.smugmug.com/photos/262849856_uMzVU-L.gif" /></p>
<p>Consider the &#8220;Credit Rating&#8221; attribute for the Customer object.  What we really want to know is if the customer&#8217;s credit is good.  The definition of &#8220;good&#8221; will change over time, or may become complex.  &#8220;Good enough for small purchases&#8221;, &#8220;Good when putting 20% down&#8221; are examples of the definition of &#8220;good&#8221; becoming complex.  Or maybe you&#8217;re loaning money, and you can improve your profits with notions of &#8220;pretty good&#8221; and &#8220;really good.&#8221;  You will <a title="business rules and business requirements" href="http://tynerblain.com/blog/2006/10/18/business-rules-and-requirements/">create business rules</a> to define what you mean by good.  You happen to know that those rules will reason about the customer&#8217;s <em>credit rating</em>, so you should capture that value.</p>
<p>You <em>could</em> but <em>should not</em> represent the notion of &#8220;Is Credit Good?&#8221; with an operation:</p>
<p><img title="credit operation" alt="credit operation" src="http://www.smugmug.com/photos/262852476_iV2ma-L.gif" /></p>
<p>You end up specifying design here &#8211; however unintentionally.  Depending on how you interpret this, you are either saying &#8220;Customers are responsible for determining if their credit is good&#8221; or &#8220;The credit worthiness of a customer is determined without considering anything other than the customer.&#8221;  While precise for programmers doing design, this is a pretty ambiguous thing to document in an analysis.  By adding this operation, you are not providing unambiguous insight into how the business thinks about customers.  <strong>So don&#8217;t do it</strong>.</p>
<h2>Next Up</h2>
<p>In our next article on <a title="class diagrams and requirements relationships" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">UML Class Diagrams for analysis, we&#8217;ll look at relationships between classes</a>.</p>
<p>If there&#8217;s something in particular you&#8217;d like to see explained, add a comment below and we&#8217;ll either fold it into the series or answer in the comments.  And remember &#8211; you can subscribe to the comments for any article, just click the link.</p>
<p><a title="simple relationships in uml class diagrams" href="http://tynerblain.com/blog/2008/03/10/requirements-class-diagrams-2/">Uncovering Requirements With UML Class Diagrams Part 2</a>: Simple relationships between objects or entities.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Uncovering+Requirements+With+UML+Class+Diagrams+Part+1+http%3A%2F%2Fbit.ly%2Fgk0Ca4+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/03/06/requirements-class-diagrams-1/&amp;t=Uncovering+Requirements+With+UML+Class+Diagrams+Part+1" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/03/06/requirements-class-diagrams-1/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>C.R.A.C.K. Users Are Addictive</title>
		<link>http://tynerblain.com/blog/2008/02/20/crack-users-are-addictive/</link>
		<comments>http://tynerblain.com/blog/2008/02/20/crack-users-are-addictive/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 03:03:56 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[crack users]]></category>
		<category><![CDATA[engaging users]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[stakeholders]]></category>
		<category><![CDATA[users]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/02/20/crack-users-are-addictive/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F02%2F20%2Fcrack-users-are-addictive%2F", "style": "big", "title": "C.R.A.C.K. Users Are Addictive" }); Barry Boehm, inventor of the spiral model of software development, may also be the originator of the CRACK acronym for the type of users we want on our projects. When defining (and executing on) projects, we don&#8217;t just want CRACK users, we want CRACK [...]]]></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%252F02%252F20%252Fcrack-users-are-addictive%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22C.R.A.C.K.%20Users%20Are%20Addictive%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F02%2F20%2Fcrack-users-are-addictive%2F", "style": "big", "title": "C.R.A.C.K. Users Are Addictive" });</script></div>
<p><img title="crack" alt="crack" src="http://sehlhorst.smugmug.com/photos/256622452_ay3QA-L.jpg" /></p>
<p>Barry Boehm, <a title="Barry Boehm" href="http://en.wikipedia.org/wiki/Barry_Boehm">inventor of the spiral model of software development</a>, may also be the originator of the CRACK acronym for the type of users we want on our projects.  When defining (and executing on) projects, we don&#8217;t just want CRACK users, we want CRACK stakeholders.  And we want them to stick around.  In fact, we&#8217;re addicted to them.<br />
<span id="more-638"></span></p>
<h2>What Are CRACK Users?</h2>
<p>We are not talking about substance abusers here.  We are talking about users, and stakeholders in general, who have the following characteristics:</p>
<ul>
<li><strong>Collaborative </strong>- <a title="stakeholder goals" href="http://tynerblain.com/blog/2007/10/11/stakeholder-goals/">stakeholders define goals</a> and provide feedback and are available to work together</li>
<li><strong>Representative </strong>- they characterize (or <a title="persona development" href="http://tynerblain.com/blog/2006/04/17/persona-grata/">embody the personas</a>) who make up our key users</li>
<li><strong>Accountable </strong>- along with collaboration comes <a title="agile means ownership" href="http://tynerblain.com/blog/2008/01/06/agile-absolves-developers/">a sense of ownership</a>: we succeed or fail together</li>
<li><strong>Committed </strong>- not just in percentage of time dedicated to the project, but also continuity of involvement over time</li>
<li><strong>Knowledgeable </strong>- <a title="understanding vs knowledge" href="http://tynerblain.com/blog/2008/01/28/requirements-knowledge-and-understanding/">understanding more so than knowledge</a> leads to insights but both improve our deliverables</li>
</ul>
<p>Thanks, Mike Griffiths, of <a title="leading answers" href="http://leadinganswers.typepad.com/leading_answers/"><em>Leading Answers</em></a>, who points out <a title="user inputs for agile teams" href="http://leadinganswers.typepad.com/leading_answers/2008/01/we-dont-want-us.html">the value to agile teams of having CRACK users</a>.  His article is actually focused on what to do when you can&#8217;t get users &#8211; and I <em>love</em> suggestion number three.  Thanks Mike, and keep it up!</p>
<p>Before giving Mike <em>all</em> the credit, I wanted to see if anyone else was writing about CRACK users.  Several of the top search results pointed to articles or presentations by Barry Boehm, who, due to his significant software engineering contributions, gets our &#8220;he must have invented it&#8221; accreditation.</p>
<p>As a quick tangent &#8211; during the search, I found a couple presentations by Barry were awesome.</p>
<ul>
<li><a title="keynote presentation" href="http://www.google.com/url?sa=t&#038;ct=res&#038;cd=2&#038;url=http%3A%2F%2Fwww.acisinternational.org%2Fconference%2FICSERA_03%2FBarryBoehm.ppt&#038;ei=SpK7R-veIo60gQTamKisCA&#038;usg=AFQjCNER_539dFBuYJIaSPkNQX03nqwGDQ&#038;sig2=uj2qUct-KaDPjuxyCYIxXQ">2003 SERA Keynote Address</a> &#8211; talking about agile and deliberate (non-agile) project approaches</li>
<li><a title="enterprise architecture" href="http://www.google.com/url?sa=t&#038;ct=res&#038;cd=4&#038;url=http%3A%2F%2Fsunset.usc.edu%2Fevents%2F2006%2FCSSE_Convocation%2Fpresentations%2FBoehmSOSChallanges.ppt&#038;ei=SpK7R-veIo60gQTamKisCA&#038;usg=AFQjCNG7yjCBQEA193moiLElR8WKXkIQiA&#038;sig2=pqaZ2XGyvQLkkrLtM_01RQ">Systems of Systems: Characteristics and Challenges</a> &#8211; dealing with enterprise architectures and projects in the <em>tens of millions of lines of code</em> arena.</li>
</ul>
<p>This is a short one, but the idea is strong, and the linked presentations give you plenty of good stuff!  Thanks Barry and Mike!</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+C.R.A.C.K.+Users+Are+Addictive+http%3A%2F%2Fbit.ly%2FeRSrZ7+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/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/02/20/crack-users-are-addictive/&amp;t=C.R.A.C.K.+Users+Are+Addictive" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/02/20/crack-users-are-addictive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

