<?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; Process Improvement</title>
	<atom:link href="http://tynerblain.com/blog/category/software-process-improvement/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>Specializing Generalist</title>
		<link>http://tynerblain.com/blog/2012/02/01/specializing-generalist/</link>
		<comments>http://tynerblain.com/blog/2012/02/01/specializing-generalist/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 15:07:14 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[People management]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[specializing generalist]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1654</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2012%2F02%2F01%2Fspecializing-generalist%2F", "shorturl": "http://bit.ly/A0e1Y4", "style": "big", "title": "Specializing Generalist" }); The ideal agile team is made up of specializing generalists &#8211; but what does that really mean?  The goal isn&#8217;t to prevent functional silos of expertise, it is to allow people to cover for each other. Great Conversation Elena Yatzeck (@eyatzeck) posted a comment [...]]]></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%252F2012%252F02%252F01%252Fspecializing-generalist%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FA0e1Y4%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Specializing%20Generalist%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2012%2F02%2F01%2Fspecializing-generalist%2F", "shorturl": "http://bit.ly/A0e1Y4", "style": "big", "title": "Specializing Generalist" });</script></div>
<p><img class="alignnone" title="Kordell Stewart Jersey" src="http://sehlhorst.smugmug.com/Other/blog/i-59XJhTR/0/O/Kordell-Stewart-Jersey-small.jpg" alt="" width="226" height="250" /></p>
<p>The ideal agile team is made up of specializing generalists &#8211; but what does that really mean?  The goal isn&#8217;t to prevent functional silos of expertise, it is to allow people to cover for each other.</p>
<h2><span id="more-1654"></span>Great Conversation</h2>
<p>Elena Yatzeck (<a title="Elena Yatzeck on Twitter" href="https://twitter.com/#!/eyatzeck">@eyatzeck</a>) posted a comment on an earlier article about <a title="Agile Maturity Models" href="http://tynerblain.com/blog/2009/06/30/agile-maturity-model/">agile maturity models</a>.</p>
<blockquote><p>In terms of refinement, I’m thinking a lot these days about “staffing the engineering team correctly.” I’m not sure I agree in practice that you can or should try to staff all teams with “specializing generalists,” or at least not as taken to an extreme. (If you’ll forgive the self-promotion, I talked more about this here: <a title="no blender" href="http://pagilista.blogspot.com/2012/01/no-blender-zone-cross-functional-doesnt.html">http://pagilista.blogspot.com/2012/01/no-blender-zone-cross-functional-doesnt.html</a>.)</p></blockquote>
<p>I&#8217;ll not only &#8220;forgive&#8221; the promotion, I&#8217;ll re-promote it.  Good stuff.</p>
<p>When re-reading the maturity-model article, this snippet popped out at me:</p>
<blockquote><p>People over process is the right emphasis.  If you can’t find people that are “good enough” you might as well go home.  Doesn’t matter how agile you are if you don’t have the horsepower.  You also need people who are excited to “do agile” – they like to communicate, they enjoy the project and team dynamics of an agile process.  You’re also better off with <a title="Specializing Generalists" href="http://tynerblain.com/blog/2008/02/14/specializing-generalists/">specializing generalists</a> – ideally, every member of the team can do any work that is needed.  This is an efficiency play – you risk introducing bottlenecks when you have a specialist who is the “only one” who can do particular types of work – because you will not have a consistent mix of types of work from release to release.<br />
<cite><a title="Agile Maturity Model" href="http://tynerblain.com/blog/2009/06/30/agile-maturity-model/">Agile Maturity Model</a></cite></p></blockquote>
<p>Thirty months later, my experiences have increased my conviction that this is true &#8211; and have realized that the way I wrote t<strong>he quote above fails to provide a key clarification</strong>.</p>
<p>Following that link to an (even earlier) article on <a title="Specializing Generalists" href="http://tynerblain.com/blog/2008/02/14/specializing-generalists/">specializing generalists</a>, brings the following (emphasis added):</p>
<blockquote><p>The idea of specializing generalists is easiest to grasp by first saying what it is not. It is not staffing a team with a database expert, a user interface coder, a SOA (service oriented architecture) guru and an architect. With four specialists, each development task has an obvious owner. Database changes and refactoring go to the database expert. Reworking the UI goes into the queue for the AJAX hotshot. The problem is that this approach is only efficient when each team member is equally loaded with work. Since an agile team is continuously reprioritizing their work based on repeated feedback cycles as part of each release, this doesn’t work. The team will never face a situation where the (for example) four most important things to do are one item for each specialist. You can very easily have a release where all of the most important tasks are focused on the user interface. So all of the non-interface-experts are either working on lower-priority tasks, or even worse – they are idle. And you delay the most important work until the specialist can get to it.</p>
<p>By staffing a team <strong>with </strong><strong>people who have an area of expertise, but can do anything, you can maximize the value of each delivery cycle</strong>. In our example, where all of the tasks for a release are UI tasks, they can be interchangeably assigned to any of the developers. The UI expert may suggest an implementation approach, do code reviews, or provide guidance to all the other developers. But every developer (including the database guy) can sling code effectively to get the job done. Specializing generalists.</p>
<p>This is very effective for making the “development engine” a black-box. <strong>Feed it the highest priority stuff, and it all gets done</strong>. We can take that approach to the next level. Designers can implement, project managers can design test plans, and yes, product managers can specify design. Twitch. Back up a sentence and read it again.</p>
<p>Specifying design is not the job of the product manager. True. Very true. Emphatically true. But specifying design can be what a specializing generalist does, even when that person is also responsible for defining market needs.<br />
<cite><a title="Specializing Generalists 2008" href="http://tynerblain.com/blog/2008/02/14/specializing-generalists/">Specializing Generalists 2008</a></cite></p></blockquote>
<p>Elena&#8217;s article identifies a common misconception &#8211; that &#8220;specializing generalist&#8221; is a fancy way of saying &#8220;a bunch of people who can all do everything:</p>
<blockquote><p>It&#8217;s a seductively simple fallacy of division to interpret the concept of &#8220;cross functional&#8221; team to mean a &#8220;collection of cross-functional individuals.&#8221;  New agilists are quick to apologize that &#8220;we still have functional silos here&#8221; as though it would be much better if everyone could do all the same things.  Grab some equally skilled poly-functional people, have them all take turns doing all of the jobs as needed, and you&#8217;ll all laugh your way to on-time, high-quality, and valuable working software.</p>
<p>Not so fast!</p>
<p>The power of an effective agile team, like the power of any other effective team, doesn&#8217;t come from its homogeneity, but from its ability to harness its diversity.<br />
<cite><a title="No Blender Zone: Cross Functional Doesn't Mean Homogenous" href="http://pagilista.blogspot.com/2012/01/no-blender-zone-cross-functional-doesnt.html">No Blender Zone: Cross Functional Doesn&#8217;t Mean Homogenous</a></cite></p></blockquote>
<p>Elena goes on to say (emphasis mine)</p>
<blockquote><p>Team members shouldn&#8217;t attempt to Harrison Bergeron themselves into a mish-mash of mediocre (but working!) software.  Someone needs to facilitate the stakeholders into some sensible semblance of a business case.  Someone needs to build functional test suites that mercilessly beat on the code to prevent it from breaking in production.  Neither of these are exactly the same skills it takes to gradually evolve the design of a complex system in modules of 100 lines of code or less.  <strong>If people want to try new things, that&#8217;s great, but it needs to be with the realization that other jobs on the team are actual professions with skills and the need for experience in order to excel</strong>.</p></blockquote>
<p>I completely agree.</p>
<h2>Specializing Generalist</h2>
<p><img class="alignnone" title="Silos" src="http://sehlhorst.smugmug.com/Other/blog/i-s2GxBfX/0/O/silos.jpg" alt="" width="187" height="250" /></p>
<p>Specializing Generalist.</p>
<ul>
<li><strong>Not a <em>specialist</em>.</strong></li>
<li><strong>Not a <em>generalist</em>.</strong></li>
</ul>
<p>You need best of breed<em> </em>team members who specialize in areas of experise &#8211; &#8220;actual professions with skills,&#8221; as Elena puts it.  Without people who excel in the needed areas, you end up with a mediocre product.  How many times have you gone to the store and asked for the &#8220;middle of the pack&#8221; product?</p>
<p>That&#8217;s not even <em>table stakes</em> anymore.  Just the ability to create &#8220;something&#8221; isn&#8217;t interesting in the market, and isn&#8217;t interesting to the members of the team.  How many times have you heard someone brag &#8220;I love my job, I&#8217;m a cog in the machine?&#8221;  You have to have people who specialize in all of the needed areas (interface design, market insight, coding, quality, etc) in order to create a viable product.</p>
<p><strong>If you staff your team with (only) generalists you will fail.</strong></p>
<p>Pure generalists cannot create a product that is &#8220;good enough&#8221; &#8211; because they aren&#8217;t good enough at the creating the parts, from which the product is the sum.  You have to have people who specialize in creating great &#8220;parts&#8221; of the solution.  That&#8217;s what you need to have a shot at creating a great product.  But it isn&#8217;t <em>really</em> enough.  The problem is in how you define &#8220;great.&#8221;  <strong>Great means that customers buy it, users love it, and your competition is knocked back on their heels by it.</strong> Everyone agrees on this, but most people miss one thing.</p>
<p>Your market is changing &#8211; you also have to be fast.  You can&#8217;t solve the right problems if you aren&#8217;t fast, because the problems that are &#8220;right&#8221; are constantly changing &#8211; <a title="Market Driven Competitive Advantage" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">your market is a moving target</a>.</p>
<p>Specialists, as individuals, are capable of creating great &#8220;parts&#8221; in their silos, and those parts all add up to a &#8220;great&#8221; product, so what&#8217;s the problem?  The problem is that collectively, by the time the specialists are done, they are no longer solving the right problem.</p>
<p><strong>If you staff your team with (pure) specialists you will fail.</strong></p>
<p>The <em>most important</em> tasks for the team, in any given sprint, will not balance into a perfectly allocated workload, where each &#8220;part&#8221; is worked on by each specialist, where no one is idle, and no one is a bottleneck.  It just doesn&#8217;t happen.  I haven&#8217;t seen it in 15 years in the software world, or in my prior decade as a mechanical engineer.</p>
<p>When one specialist is waiting for something important, she isn&#8217;t idle, she&#8217;s just working on something that is by definition <em>not as important</em>.  OK, you&#8217;re minimizing the damage &#8211; but you&#8217;re still taking damage.  When another specialist is the bottleneck, you lose.  Nothing magical to do here.</p>
<p><strong>If you staff your team with specializing generalists you may succeed.</strong></p>
<p>The work that piles up in any one specialized silo is of varying degrees of complexity.  The &#8220;UI specialist&#8221; may be backed up with a bunch of CSS tweaks, some straightforward AJAX calls to write, and a gnarly refactoring of the model-view-controller model to adapt to changing understanding of market needs.  No one can solve the MVC problem without specialized skills &#8211; but with guidance from the UI expert, one of  the other team members can handle the AJAX calls and CSS updates.  Extend this same model across other aspects of the product.  Your database expert may be needed to optimize query performance or resolve locking problems, but other members of the team could make straightforward schema changes.</p>
<p>It is the collective ability of the team to optimize what they <em>collectively</em> work on that accelerates the team&#8217;s delivery of the most important capabilities.</p>
<p>You have to have people who specialize, in order to optimize individual performance.  But your team needs to be built with specializing generalists in order to optimize for team performance.</p>
<h2>T-Shaped People</h2>
<p>From an HR perspective, I was taught about &#8220;T-Shaped People&#8221; &#8211; people who have breadth and depth of skills.</p>
<ul>
<li>Specialists are &#8220;I-Shaped People&#8221; &#8211; people who have depth of expertise, without breadth</li>
<li>Generalists are &#8220;Minus-Shaped People&#8221; &#8211; people who have a breadth of skills, but no depth of expertise.</li>
<li>Specializing Generalists are &#8220;T-Shaped People&#8221; &#8211; people who have depth of expertise in one area, combined with a breadth of skills across many areas.</li>
</ul>
<p>These are the people you&#8217;re going for.</p>
<p>Thanks Elena for re-invigorating the discussion!</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+Specializing+Generalist+http%3A%2F%2Fbit.ly%2FA0e1Y4+" 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/2012/02/01/specializing-generalist/&amp;t=Specializing+Generalist" 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/2012/02/01/specializing-generalist/feed/</wfw:commentRss>
		<slash:comments>40</slash:comments>
		</item>
		<item>
		<title>Agile Estimation, Prediction, and Commitment</title>
		<link>http://tynerblain.com/blog/2011/08/09/agile-estimation/</link>
		<comments>http://tynerblain.com/blog/2011/08/09/agile-estimation/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 06:32:33 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[agile prediction]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[cone of uncertainty]]></category>
		<category><![CDATA[project planning]]></category>
		<category><![CDATA[release planning]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1488</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F08%2F09%2Fagile-estimation%2F", "shorturl": "http://bit.ly/nUdL7S", "style": "big", "title": "Agile Estimation, Prediction, and Commitment" }); Your boss wants a commitment.  You want to offer a prediction.  Agile, you say, only allows you to estimate and predict &#8211; not to commit.  &#8221;Horse-hockey!&#8221; your boss exclaims, &#8220;I want one throat to choke, and it will be yours if [...]]]></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%252F08%252F09%252Fagile-estimation%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FnUdL7S%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Estimation%2C%20Prediction%2C%20and%20Commitment%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2011%2F08%2F09%2Fagile-estimation%2F", "shorturl": "http://bit.ly/nUdL7S", "style": "big", "title": "Agile Estimation, Prediction, and Commitment" });</script></div>
<p><img class="alignnone" title="One Throat" src="http://sehlhorst.smugmug.com/Other/blog/i-sBtqDPL/0/O/throat.jpg" alt="" width="166" height="250" /></p>
<p>Your boss wants a commitment.  You want to offer a prediction.  Agile, you say, only allows you to estimate and predict &#8211; not to commit.  &#8221;Horse-hockey!&#8221; your boss exclaims, &#8220;I want <em>one</em> throat to choke, and it will be yours if you don&#8217;t make a commitment and meet it.&#8221;  There&#8217;s a way to keep yourself off the corporate gallows &#8211; estimate, predict, <em>and</em> commit &#8211; using agile principles.</p>
<p>This is an article about agile product management and release planning.</p>
<p><span id="more-1488"></span></p>
<h1>Change and Uncertainty</h1>
<p><img class="alignnone" title="pyramid" src="http://sehlhorst.smugmug.com/Other/blog/i-kLX4P5V/0/O/pyramid.jpg" alt="" width="250" height="163" /></p>
<p>In the dark ages before your team became agile, you would make estimates and commitments.  You never <em>exactly</em> met your commitments, and no one <em>really</em> noticed.  That was how the game was played.  You made a commitment, everyone <em>knew</em> it would be wrong, but they expected it anyway.  Maybe your boss handicapped your commitment, removing scope, lowering expectations, padding the schedule.  Heck, that&#8217;s been the recipe for success since they planned the pyramids.</p>
<p>It makes sense.</p>
<ol>
<li><strong>Your early estimates are wrong. </strong> When you add them up, the total will be wrong.  If you do <a title="PERT estimation tutorial" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">PERT estimation</a>, the <a title="Advanced PERT page 1" href="http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/">law of large numbers</a> will <a title="Advanced PERT estimation - page 2" href="http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/2/">help you in aggregate</a>.  But you&#8217;ll still be wrong.</li>
<li><strong>The outside demands on, and availability of, your people will change.</strong> Unplanned sick time, attrition, levels of commitment over time, lots of &#8220;people stuff&#8221; is really unknown.</li>
<li><strong>The needs of your customers will change. </strong> <a title="Adapting to Changing Markets" href="http://tynerblain.com/blog/2008/08/26/market-driven-advantage/">Markets evolve over time</a>.  You get smarter, your competitors get better, your customer&#8217;s expectations change.</li>
</ol>
<p><img class="alignnone" title="sphinx" src="http://sehlhorst.smugmug.com/Other/blog/i-PJksfgv/0/O/sphinx.jpg" alt="" width="250" height="187" /></p>
<p>Agile processes are designed to help you deliver what your customer actually needs, not what was originally asked for.  Contrast the two worlds.</p>
<p>In the old world, you would commit to delivering a couple pyramids.  After spending double your budget, with double the project duration, you would have delivered one pyramid.  When you deliver it, you find out that sphinxes are <em>all the rage</em>.  Oops.</p>
<p>Your team changed to agile, so that you could deliver the sphinx.  But your Pharaoh still wants a commitment to deliver a couple pyramids (the smart ones will be expecting to get just one).  You can stay true to agile, and still mollify your boss&#8217; need to have a commitment, if you take advantage of the first-principles of why agile estimation works.</p>
<h2>Estimation</h2>
<p>A commitment is a factual prediction of the future.  &#8221;This will take two weeks.&#8221;  Nobody is prescient.</p>
<p>A factual prediction has to be nuanced.  &#8221;I expect* this will take no more than two weeks.&#8221;</p>
<p style="padding-left: 30px;">*in reality, this is shorthand for a mathematical prediction, such as &#8220;I expect, with 95% confidence, that this will take no more than two weeks.&#8221;</p>
<p>Few non-scientist, non-engineers, non-mathematicians understand that 95% confidence has a precise meaning.  People usually interpret it to mean &#8220;a 5% chance that it will take more than two weeks.&#8221;  What it really means is that if this exact same task were performed twenty thousand times (in a hypothetical world, of course), then nineteen thousand of those times, it would be completed in under two weeks &#8211; do you feel lucky?</p>
<p>To make a statement like this, you actually have to create <a title="PERT Estimation" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">a PERT estimate</a> &#8211; identifying the best-case, worst-case, and most-likely case for how long a task will take.</p>
<p><img class="alignnone" title="PERT Estimate" src="http://sehlhorst.smugmug.com/photos/567766108_8mN5Z-L.png" alt="" width="450" height="327" /></p>
<p>Unfortunately, we&#8217;re rarely asked to make a commitment about a <em>single</em> task &#8211; but rather a large collection of tasks &#8211; well-defined, ill-defined, and undefined.</p>
<p>You can combine PERT estimates for the individual tasks, resulting in an overall estimate of the collection of tasks.</p>
<p><img class="alignnone" title="Combined PERT Estimates" src="http://sehlhorst.smugmug.com/photos/567787127_5TbDg-L.png" alt="" width="450" height="327" /></p>
<p>The beauty of this approach is that the <a title="Central Limit Theorem" href="http://en.wikipedia.org/wiki/Central_limit_theorem">central limit theorem</a>, and <a title="Law of Large Numbers" href="http://en.wikipedia.org/wiki/Law_of_large_numbers">the law of large numbers</a>, work to help you estimate a collection of tasks &#8211; you can actually provide better estimates of a group of tasks than a single task.  This obviously helps with the <em>well-defined</em> tasks that you know about at the start of the project.  This even helps with the <em>ill-defined</em> tasks.  Rationalists will argue that the key, then, is to do more up-front research to discover the <em>undefined</em> tasks &#8211; and then we&#8217;re set.  As Frederick Brooks (<em>Mythical Man-Month</em>) points out 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>, this debate has been going on since Descartes and Locke.  It is not a new idea.</p>
<p>Big Up-Front Design and Requirements (BUFD &amp; BUFR) hasn&#8217;t worked particularly well, so far.</p>
<p><img class="alignnone" title="baby boy" src="http://sehlhorst.smugmug.com/Other/blog/i-Szbjk5c/0/O/baby.jpg" alt="" width="250" height="174" /></p>
<p>Don&#8217;t throw out the baby with the bath-water, however.  The math of estimation is still important and useful.  Even if empiricism is not the silver bullet.</p>
<h1>Prediction</h1>
<p>Estimation is a form of prediction.  Even agile teams do it.  In Scrum, you estimate a collection of user stories &#8211; in story points that represent complexity, and you <em>predict</em> how many points the team can complete in <em>this sprint</em>.  Note the time factor.  If you&#8217;re working a two-week sprint, there is very little risk of changes in staffing during a two-week period.  There&#8217;s also very little risk that your market will change significantly in two weeks &#8211; and if it does, what are the odds that you will notice <em>and</em> materially change your requirements in <em>two weeks</em>?</p>
<p>Visually, let&#8217;s take that PERT estimate and turn it sideways &#8211; so we can introduce the dimension of time.  Imagine you estimated all of the tasks (well-defined, ill-defined, and a <em>guess</em> about the undefined), <em>as if they were all to happen in the first sprint</em>.  Ignore inter-task dependencies, and pretend you had unlimited resources and the ability to perform all tasks in parallel.</p>
<p><img class="alignnone" title="Estimate Without Time" src="http://sehlhorst.smugmug.com/Other/blog/i-84bwNmj/0/O/20110808Prediction-and.png" alt="" width="450" height="365" /></p>
<p>The graph above shows the aggregate estimate &#8211; the circle is your best <em>prediction</em>, with error bars representing your confidence interval in the estimate.  If you were using PERT estimates, these could represent that 5% and 95% confidence lines.  Subjectively pick something based on your team&#8217;s experience in the domain and your confidence in your guesses (about the <em>undefined</em> tasks).</p>
<p>We need a segue into the &#8220;best of waterfall&#8221; approach to estimating projects, to steal and invert a good idea.</p>
<h1>The Cone of Uncertainty</h1>
<p>The folks at <a title="Cone of Uncertainty" href="http://www.construx.com/Page.aspx?cid=1648">Construx have published a nice explanation of the <em>cone of uncertainty</em></a> &#8211; an adaptation of an idea from Steven McConnell&#8217;s <em>Software Estimation: Demystifying The Black Art</em> (2006).  That article uses his imagery with permission &#8211; so please go look at it there.  The idea is that as the project becomes better defined (e.g. <em>during the project</em>), the amount of uncertainty is reduced.</p>
<p>The findings show that initial estimates are off by 400% (either low by a factor of 4 or high by a factor of 4)!  Even after &#8220;nailing down&#8221; requirements, estimates are still off by 30% to 50%!</p>
<p>As bad as that sounds, it is actually worse.  This is a prediction for <em>the original project</em> (delivering pyramids).  Not only are your estimates wrong &#8211; but <strong>they are bad estimates for delivering <em>the wrong product</em></strong>.</p>
<p>But &#8211; the core idea is sound &#8211; the further into the future you have to execute, the greater the mistakes in your estimate.</p>
<p>Taking that concept, and applying it to our diagram, we get the following:</p>
<p><img class="alignnone" title="Cone of Uncertainty" src="http://sehlhorst.smugmug.com/Other/blog/i-qwXrRM4/0/O/20110808Prediction-and.png" alt="" width="450" height="363" /></p>
<p>The further into the future you are trying to <em>predict</em>, the less accuracy you have in your prediction.  This reduction in accuracy is reflected as a widening of the <em>confidence bands</em> for your estimate.</p>
<ul>
<li>A couple sprints&#8217; worth of work is not much different than one sprint &#8211; so your estimation range is not much changed.</li>
<li>An entire release of sprints (say 6 to 10 sprints) has much more opportunity for <em>the unknown</em> to rear its head.</li>
</ul>
<p>Now, your prediction is (probably) unusably vague and imprecise.  &#8221;This set of tasks will take X plus or minus a factor of two.&#8221;</p>
<p>That&#8217;s the reality.</p>
<p>Note: This has always been the reality.  People have historically reduced this &#8220;risk to timing&#8221; by hiding the &#8220;risk of change&#8221; aspects &#8211; and waterfall processes encourage you to deliver <em>the wrong thing, as close to on-time as possible.</em></p>
<p><em><img class="alignnone" title="Ostrich" src="http://sehlhorst.smugmug.com/Other/blog/i-FmRbFG8/0/O/ostrich.jpg" alt="" width="194" height="250" /></em></p>
<p>That&#8217;s not what we want to do, however.</p>
<p>We still want to deliver the (not-yet-defined) <em>right</em> product, as efficiently as possible.  That&#8217;s the goal of agile.  (For folks who haven&#8217;t been here at Tyner Blain for long &#8211; &#8220;right&#8221; includes both value and quality).</p>
<h1>Refinement</h1>
<p>Because we&#8217;re agile, and we&#8217;re willing to &#8220;get smarter&#8221; about our product over time, we have an opportunity to improve.  Because of the nature of compounding estimates and the cone of uncertainty, our uncertainty gets smaller over time.</p>
<p>Let&#8217;s remove our artificial simplification that we could do everything &#8220;right now&#8221; and look at what we think we know right now, about the end of the release.</p>
<p><img class="alignnone" title="today predicting the release" src="http://sehlhorst.smugmug.com/Other/blog/i-8mRL3Pd/0/O/20110808Prediction-and.png" alt="" width="450" height="363" /></p>
<p>Our ability to <em>predict</em> the amount of effort (for today&#8217;s definition of the product) at the end of the release is not very good.</p>
<p><img class="alignnone" title="release planning after first sprint" src="http://sehlhorst.smugmug.com/Other/blog/i-WjNhLZd/0/O/20110808Prediction-and.png" alt="" width="450" height="363" /></p>
<p>Our ability to predict (today&#8217;s definition of the product) one sprint into the future is much better.</p>
<p><img class="alignnone" title="predicting the release after one sprint" src="http://sehlhorst.smugmug.com/Other/blog/i-rmXLSKW/0/O/20110808Prediction-and.png" alt="" width="450" height="363" /></p>
<p>After completing the first sprint, we are <em>a little bit smarter</em> &#8211; the ill-defined tasks are better defined.  Maybe some of the undefined tasks are now ill-defined.  The same cone of uncertainty is now a little bit smaller &#8211; we are a little bit smarter, and the time horizon of the release date is a little bit closer.</p>
<p><img class="alignnone" title="cone of uncertainty shrinks with each sprint" src="http://sehlhorst.smugmug.com/Other/blog/i-42LNqnZ/0/O/20110808Prediction-and.png" alt="" width="450" height="363" /></p>
<p>The trend continues &#8211; each sprint gets us closer to the release date, and with each sprint (assuming we get feedback from our customers, and continue to study our markets) we get a little bit smarter.  We also get better at predicting the team&#8217;s velocity (how much &#8220;product&#8221; they can deliver during each sprint).</p>
<h1>Commitment</h1>
<p>Your boss still wants a commitment, however.  And that&#8217;s where we get to change the way we look at this (again).</p>
<p>The above diagrams all display how we converge on an estimate for a stable body of work.  However, we know that the body of work is constantly changing.</p>
<p>Backlog! [you say]</p>
<p>Yes!  The backlog.  The backlog is an ordered, prioritized list of user stories and bugs.  I was talking with Luke Hohmann of <a title="Innovation Games" href="http://innovationgames.com/">Innovation Games</a> last month, and one of<a title="Bang for the Buck Innovation Game" href="http://innovationgames.com/game_view/instant_play/KR25FMG33K0IKNKZV15JXCIXL4S4W1X2"> the most popular online Innovation Game</a>s is now the one they created based on <a title="Prioritize by Bang for the Buck" href="http://tynerblain.com/blog/2008/10/20/planning-sprints-part-2/">prioritizing by bang for the buck</a>.  Play it today online (for free!).  How cool is that?</p>
<p>The backlog represents the work the team is going to do &#8211; in the order in which the team is going to do it.  Over time, as we get smarter, we will add and remove items from the backlog &#8211; because we discover new capabilities that are important, and because we learn that some things aren&#8217;t worth doing.  We will even re-order the backlog as we recognize shifting priorities in the markets (or in our changing strategy).</p>
<p>As this happens, it turns out that the items at the top of the list are least likely to get displaced, and therefore most likely to still be part of the product by the time we get to the release.</p>
<p><strong>Instead of thinking about uncertainty in terms of how long it takes, think about uncertainty in terms of how much we complete in a fixed amount of time.</strong> In agile, generally, we apply<a title="Timeboxing Software Delivery" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/"> a timebox approach</a> to determining what gets built.</p>
<p>Now, uncertainty, instead of manifesting as &#8220;<em>when</em> do we finish?&#8221; becomes &#8220;<em>what</em> will we finish?&#8221;</p>
<p>Your boss is rational.  She appreciates the constraints, she just wants to know <em>what you can commit</em>.  Every boss I&#8217;ve worked with has been willing (sometimes only after much discussion) to treat this uncertainty in terms of <em>what</em> instead of <em>when</em>.  They acknowledge that they need to translate (usually for <em>their</em> boss) into a &#8220;fixed&#8221; commitment.</p>
<p>The solution: <em>commit </em>to a subset of what you <em>predict</em> you can complete.</p>
<p>At the start of the release, you may have 500 points worth of stories.  Based on your team&#8217;s expected velocity, and the number of sprints in the release, you <em>predict</em> that you can complete 320 points worth of stories (5 people on the team, a team velocity of 40 points per sprint, and 8 sprints in the release).  Starting at the top of the backlog and working down, draw a cut-line at the last story you can complete (when you reach 320 points).  This is your <em>prediction</em>.</p>
<p>Now the commitment part.  You&#8217;ll have to figure out what you&#8217;re comfortable with.  Maybe for 8 sprints (say, 16 weeks into the future), you may only be comfortable <em>committing</em> to half that amount &#8211; 160 points.  Go back to the top of the backlog, and count down until you reach 160 points.  Everything above the line is what you <em>commit</em> to delivering.</p>
<p>Maybe you are comfortable committing to 240 points, maybe only 80.  This is like playing spades.  The more you can commit to, without missing, the better off you are.  Your tolerance for risk is different than mine.</p>
<p>You can also <em>negotiate</em> with your boss.  Commit to 160 points now, and provide an update after every other sprint.  More likely than not, you will be <em>increasing</em> the scope of your commitment with every update.</p>
<p>Mid-project updates of &#8220;we can do more&#8221; are always better than &#8220;we can do less.&#8221;  And both are better than end-of-project surprises.  This also allows you to have updates that look like this:</p>
<p style="padding-left: 30px;">We didn&#8217;t know this at the start of the release, but X is really important to our customers &#8211; and we will be able to deliver X <em>in addition to</em> what we already committed.  Without slipping the release date.</p>
<h1>Conclusion</h1>
<p>Making commitments with an agile process is not impossible.  It just needs to be approached differently (if you want to stay true to agile).  The end result: better predictions, more realistic commitments, and the likelihood that each update will be good news instead of bad.</p>
<p>[Update: Changed initial image.  Thanks <a title="CC Attribution link" href="http://www.flickr.com/photos/archer10/">Dennis</a> for the great 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+Agile+Estimation%2C+Prediction%2C+and+Commitment+http%3A%2F%2Fbit.ly%2FnUdL7S+" 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/08/09/agile-estimation/&amp;t=Agile+Estimation%2C+Prediction%2C+and+Commitment" 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/08/09/agile-estimation/feed/</wfw:commentRss>
		<slash:comments>101</slash:comments>
		</item>
		<item>
		<title>Product Management Slowing You Down?</title>
		<link>http://tynerblain.com/blog/2010/12/24/product-managers-slow-things-down/</link>
		<comments>http://tynerblain.com/blog/2010/12/24/product-managers-slow-things-down/#comments</comments>
		<pubDate>Fri, 24 Dec 2010 18:37:39 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Organizations]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[ProductCamp]]></category>
		<category><![CDATA[agility]]></category>
		<category><![CDATA[business agility]]></category>
		<category><![CDATA[process improvement]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=1419</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F12%2F24%2Fproduct-managers-slow-things-down%2F", "shorturl": "http://bit.ly/hxivVc", "style": "big", "title": "Product Management Slowing You Down?" }); Does product management slow down your company? What Causes Your Business to Be Slow? Paul Young put out the call for the third annual You Might Be A Product Manager&#8230; list.  If you are spending your holiday wondering if Jason Calacanis is [...]]]></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%252F12%252F24%252Fproduct-managers-slow-things-down%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FhxivVc%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Product%20Management%20Slowing%20You%20Down%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2010%2F12%2F24%2Fproduct-managers-slow-things-down%2F", "shorturl": "http://bit.ly/hxivVc", "style": "big", "title": "Product Management Slowing You Down?" });</script></div>
<p><img class="alignnone" title="turtle plodding to the sea" src="http://sehlhorst.smugmug.com/Other/blog/turtle-small/137954530_FDWye-O.jpg" alt="turtle slowly moving to the water" width="250" height="187" /></p>
<p>Does product management slow down your company?</p>
<p><span id="more-1419"></span></p>
<h2>What Causes Your Business to Be Slow?</h2>
<p>Paul Young put out the call for the third annual <em><a title="You Might Be a Product Manager" href="http://www.productbeautiful.com/2010/11/10/its-that-time-again-submit-for-the-third-annual-you-might-be-a-product-manager-if-list/">You Might Be A Product Manager</a>&#8230; </em>list.  If you are spending your holiday wondering if Jason Calacanis is right, and <a title="Calacanis on product management" href="http://launch.is/blog/2010/12/14/launch002-what-i-learned-from-zuckerbergs-mistakes.html">product management is actually <em>preventing</em> your company from being successful</a>, you <em>might</em> be a product manager.</p>
<p> </p>
<blockquote><p>Facebook&#8217;s success &#8212; and mistakes &#8212; are based on its developer-driven culture, not because Zuckerberg is some evil mastermind.</p>
<p>The Zuckerberg Doctrine: Developers design products with significantly improved speed and functionality compared to product managers and designers, outweighing potential mistakes and drawbacks.</p>
<p><cite><a title="Calacanis on Product Management" href="http://launch.is/blog/2010/12/14/launch002-what-i-learned-from-zuckerbergs-mistakes.html">Jason Calacanis, Launch newsletter 002</a></cite></p>
</blockquote>
<p>Sound like link bait?  Maybe, but you&#8217;re probably a product manager :).  Jason&#8217;s put his money where his mouth is &#8211; he changed the way things are done at <a title="Mahalo" href="http://www.mahalo.com/">Mahalo </a>(his human-curated search / answers company).</p>
<blockquote><p>In under 30 days, we completely overhauled our product-development process, removing everything between the developer and iterating on the product.</p>
<p>We eliminated positions and process. We made it clear the developers were to make the decisions even if those decisions resulted in a developer being 50 percent slower because they were busy *thinking* about the product (as opposed to just transcribing features from the product manager wireframes).</p>
<p><cite><a title="Calacanis on Product Management" href="http://launch.is/blog/2010/12/14/launch002-what-i-learned-from-zuckerbergs-mistakes.html">Jason Calacanis, Launch newsletter 002</a></cite></p>
</blockquote>
<p>As you read through the details of the analysis in Mr. Calacanis&#8217; newsletter, you&#8217;ll see that his position is not ultimately as generalized as the above quotes appear to be &#8211; Mr. Calacanis (who I&#8217;ve seen, and to whom I&#8217;ve listened for several years, but never met) is talking specifically about startups.  However, he uses AOL, Yahoo, MySpace and Google as his &#8220;bad&#8221; examples &#8211; not exactly startups.</p>
<p>I think this logical flaw may be leading Mr. Calacanis to demonize the wrong bad actors.</p>
<h2>ProductCamp Austin 6</h2>
<p><img class="alignnone" title="ProductCamp Austin logo" src="http://sehlhorst.smugmug.com/Other/blog/PCA-global-logo-small/1136186120_rJWDi-O.gif" alt="ProductCamp Austin logo" width="450" height="87" /></p>
<p>If you&#8217;re planning to attend <a title="productcamp austin 6" href="http://barcamp.org/w/page/33711174/ProductCamp-Austin-6">ProductCamp Austin 6 &#8211; January 15th, 2011</a> (<a title="ProductCamp Austin 6" href="http://productcampaustin6.eventbrite.com/">register here</a> if you haven&#8217;t already), then consider attending a session that John Milburn, Roger Cauvin, and I are going to host &#8211; discussing this topic.  If you can&#8217;t attend, then jump into the conversation here.  John and Roger and I have been talking about this and exchanging some ideas since the newsletter came out &#8211; and we <em>really know</em> how much better ideas get when we open the conversation up to the community.  We&#8217;re looking forward to doing that at product camp, and I&#8217;m writing this to open it up now &#8211; so please, chime in!</p>
<h2>Implicit Product Decisions</h2>
<p>When I was still writing software and leading teams that were writing software, I would occasionally point out that all software is <em>designed</em> &#8211; even if someone sits down and just starts typing code.  There is, at the minimum, <em>implicit</em> design happening in the mind of the programmer.  It might not be &#8220;good&#8221; design, but there is always design.  There is always a method to the madness, just not always a <em>considered</em> method.  The same is true of product management.</p>
<ul>
<li>The creation of every feature and capability, in every product, is preceded by the notion that having this capability is a good idea.  That&#8217;s what product managers do &#8211; decide which capabilities a product should have.</li>
<li><strong>Eliminating product managers does not eliminate product management</strong>.</li>
</ul>
<p>If &#8220;developer led&#8221; companies are still doing product management, how then, are they moving faster?  Mr. Calacanis addresses valid points &#8211; his &#8220;bad examples&#8221; do seem to move pretty slowly, and his &#8220;good examples&#8221; do seem to move faster.  So what&#8217;s really different?  John and Roger and I will be framing the discussion at ProductCamp around how to move faster, and not throw the baby out with the bathwater.</p>
<p>I might describe what Mahalo has apparently done as follows:</p>
<ul>
<li>Mahalo, with product managers involved in product decisions, was not moving as fast as Mr. Calacanis desired.  So they reorganized so that product managers were no longer involved in the process &#8211; in hopes of having a faster process.  Mr. Calacanis indicated that in a trade-off between &#8220;better&#8221; and &#8220;faster,&#8221; he would prefer &#8220;faster.&#8221;</li>
</ul>
<h2>Agility</h2>
<p><strong><em>The</em> core of the agile development philosophy is &#8211; &#8220;fail fast. learn. improve.&#8221;</strong></p>
<p>All of the other stuff in the implementations of agile comes back to this &#8211; consider the main ideas in the agile manifesto*</p>
<ul>
<li>People over process: empowerment to fail and learn and improve.</li>
<li>Value working software: learning is experiential, and you can&#8217;t fail or improve without shipping.</li>
<li>Collaboration: You have to understand someone else&#8217;s problem before you can solve it.  Too many products emerge from insular and isolated &#8220;exploration.&#8221; </li>
<li>Encourage, don&#8217;t inhibit change:  If you punish failure you prevent learning. If you prevent that new knowledge from being applied, you make learning irrelevant.</li>
</ul>
<p>*Agreed &#8211; those aren&#8217;t the words used <a title="Alistair Cockburn on the Agile Manifesto" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">in the manifesto</a>.  Same ideas, though.</p>
<p>When you talk about business agility, while the mechanics <em>might</em> be different, the goals are the same.  Fail fast.  Learn.  Improve.</p>
<p>Mr. Calacanis, in my interpretation, is saying that this is exactly what he wants the Mahalo team to do.  I applaud that goal.</p>
<p>Does he have to &#8220;kill all the product managers&#8221; in order to infuse his company with (business) agility?</p>
<p>Is product management the antithesis of agility?  By definition, product management is still happening &#8211; just without product managers.  Maybe the product management <em>process</em> has room for improvement&#8230;</p>
<h2>Market Driven</h2>
<p>As a good product manager, you are market driven.  What does that mean to agility?</p>
<ul>
<li><strong>Fail Fast</strong>.  Maybe you&#8217;re making decisions that delay launches until you know &#8220;the right product.&#8221;  That would hurt agility.</li>
<li><strong>Lean</strong>. Are you listening to your customers, and learning from them?  Great!</li>
<li><strong>Improve</strong>. Does what you&#8217;ve learned lead to trying something different, with a hypothesis that it will be better this time?</li>
</ul>
<p>OK, so being market driven will help your company learn and improve.  That&#8217;s the up-side.  It may also enable (but not cause) some corporate dysfunction. If your organization punishes failure, or is afraid of mis-steps, and you&#8217;re market driven, you have already heard this conversation &#8211; don&#8217;t (schedule | design | release) until we get [feedback X] or [insight Y].</p>
<p>A tight coupling with your market is a powerful tool.  It can be used for good (learning) or evil (avoid failure).</p>
<p>Whew.  Good to know that being market driven is not the source of the problem.  An organization that is afraid of failure is the problem.</p>
<p>Mahalo&#8217;s experiment may work &#8211; Mr. Calacanis clearly intends to encourage the &#8220;fail fast&#8221; element.  So, when his developers are doing product management, they will have an opportunity to succeed by being market driven.</p>
<h2>Bureaucracy</h2>
<p>In fairness, Mr. Calacanis is really only prescribing the &#8220;no product managers&#8221; approach for startups.  Startups are not particularly bureaucratic.  Perhaps Mahalo was becoming bureaucratic.  It is easy to see the big companies mentioned in the newsletter as being rife with bureaucracy.  Even if you could fail fast, learn, and improve in a world of t-crossing and sign-offs, your definition of &#8220;fast&#8221; would not match your competitors.</p>
<p>Piloting your company would be like flying a Cessna twin-prop airplane in a world of super-sonic Gulfstream jets.</p>
<p>How are product managers introducing overhead into your product creation process?  What parts of product management are &#8220;not worth the delays?&#8221;</p>
<p>There are very real &#8220;slow things down&#8221; activities in the product creation process.</p>
<ul>
<li>Some activities can be removed.</li>
<li>Some activities can be improved.</li>
<li>Most activities can be done in parallel with the product creation process, eliminating delays.</li>
</ul>
<p><strong>What Have You Seen?</strong></p>
<p>There are a lot of stories <em>from the trenches</em> out there &#8211; what are you seeing?  Have you tackled this already?  How did you make it better.</p>
<p>I hope that our session focuses on helping attendees, in a very real way, make their product creation process more effective, and make their businesses more agile.</p>
<p>Of course, we don&#8217;t have to wait until January 15th &#8211; we can start talking about it right now&#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+Product+Management+Slowing+You+Down%3F+http%3A%2F%2Fbit.ly%2FhxivVc+" 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/12/24/product-managers-slow-things-down/&amp;t=Product+Management+Slowing+You+Down%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/2010/12/24/product-managers-slow-things-down/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Agile Maturity Model &#8211; What&#8217;s Next?</title>
		<link>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/</link>
		<comments>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:29:49 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile maturity model]]></category>
		<category><![CDATA[business agility]]></category>
		<category><![CDATA[CMMI]]></category>
		<category><![CDATA[maturity model]]></category>
		<category><![CDATA[rmm]]></category>

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

<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+Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next%3F+http%3A%2F%2Fbit.ly%2F17die2+" 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/2009/06/30/agile-maturity-model/&amp;t=Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next%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/2009/06/30/agile-maturity-model/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>The Impact of a Hidden Decision</title>
		<link>http://tynerblain.com/blog/2008/10/08/hidden-decision-impact/</link>
		<comments>http://tynerblain.com/blog/2008/10/08/hidden-decision-impact/#comments</comments>
		<pubDate>Thu, 09 Oct 2008 03:20:11 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Business Rules]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Process Flow]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[business process analysis]]></category>
		<category><![CDATA[business process optimization]]></category>
		<category><![CDATA[hidden business rules]]></category>
		<category><![CDATA[hidden decisions]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=725</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F08%2Fhidden-decision-impact%2F", "style": "big", "title": "The Impact of a Hidden Decision" }); Business rules are often hidden in processes as hidden decisions.  Once you discover that hidden decision, how do you communicate the impact of exposing and managing the decision? Hidden Decision In our previous article on hidden business rules and enterprise decision management, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F10%252F08%252Fhidden-decision-impact%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22The%20Impact%20of%20a%20Hidden%20Decision%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F10%2F08%2Fhidden-decision-impact%2F", "style": "big", "title": "The Impact of a Hidden Decision" });</script></div>
<p><img class="alignnone" title="hiding again" src="http://photos.smugmug.com/photos/389895783_nZ9LB-L.jpg" alt="" width="250" height="200" /></p>
<p>Business rules are often hidden in processes as hidden decisions.  Once you discover that hidden decision, how do you communicate the impact of exposing and managing the decision?</p>
<p><span id="more-725"></span></p>
<h2>Hidden Decision</h2>
<p>In our previous article on <a title="hidden decisions" href="http://tynerblain.com/blog/2008/09/23/hidden-business-rule-example/">hidden business rules</a> and enterprise decision management, we looked at a process that had a hidden decision.</p>
<p>First, take a look at the process with the decision still hidden:</p>
<p><img class="alignnone" title="decision hidden in business process" src="http://sehlhorst.smugmug.com/photos/379161161_Rk7DQ-L.gif" alt="" width="434" height="574" /></p>
<p>Here&#8217;s the process (with the decision exposed) from that article:</p>
<p><img class="alignnone" title="process with hidden decision" src="http://sehlhorst.smugmug.com/photos/379161208_6FwGv-L.gif" alt="" width="396" height="600" /></p>
<p>The decision that was hidden was an implicit decision &#8211; &#8220;Pick One?&#8221; &#8211; for which the answer was always &#8220;No.&#8221;  After making this discovery, and communicating with your team, you then have to decide if you are going to make the decision explicit.  Making the decision explicit will involve defining the business rules for how to make the decision, and (if done in software) implementing the decision, or the ability for a person to make the decision.</p>
<h2>Impact of a Decision</h2>
<p>The diagrams above allude to the fact that there is money to be made in the process, in the &#8220;Continue Automated Process&#8221; step.  We need to provide a better understanding of how / when money is made.  A slight expansion of the process flow above (replacing the &#8220;Continue Automated Process&#8221; with a couple steps, looks like the following:</p>
<p><img class="alignnone" title="process with decision impact" src="http://photos.smugmug.com/photos/389905079_vFAZo-O.gif" alt="" width="450" height="805" />[<a title="larger version of business process with hidden decision" href="http://photos.smugmug.com/photos/389905095_heoaB-O.gif">click for larger version</a>]</p>
<p>The last step introduces a real-world decision: &#8220;Sell products?&#8221; and only when the answer is yes does the process &#8220;Earn Revenue.&#8221;</p>
<p>If you&#8217;re analytically minded, you can apply percentages to each branch of each decision, and add everything up to figure out an answer.  That might be reasonable for a simple example like this one, but it can become too complex with a more complicated process.</p>
<p>There&#8217;s an easier way.  And since the goal is to <em>communicate</em> the impact to someone, you want an easier way.</p>
<h2>Truth Tables and Decisions</h2>
<p>A truth tables is a tried and true artifact for describing combined sets of decisions.  You can use it effectively to extract information from a decision-heavy process diagram.  Consider the following application of a truth table to the process above:</p>
<p><img class="alignnone" title="complete truth table" src="http://photos.smugmug.com/photos/389892821_FLJPK-L.jpg" alt="" width="450" height="157" /> [<a title="complete truth table" href="http://photos.smugmug.com/photos/389892784_Vz5V6-L.jpg">larger version</a>]</p>
<p>Each of the decisions in the process flow has a column.  Each row represents a unique path through the flow.  Each cell contains the result of the decision, for that path.  Note that when a path does not involve a decision, there is no value in the cell.</p>
<p>That provides a comprehensive view of the process, which you could build upon.  However, in this case, you are focusing on the impact of the hidden decision (&#8220;Pick One&#8221;).  The following paths, from the truth table, involve that decision:</p>
<p><img class="alignnone" title="hidden decision in truth table" src="http://photos.smugmug.com/photos/389892796_hUbg7-L.jpg" alt="" width="450" height="157" /> [<a title="larger hidden decisions in truth table" href="http://photos.smugmug.com/photos/389892709_We9ps-L.jpg">larger version</a>]</p>
<p>Ignoring the other paths, and re-organizing, you find the following:</p>
<p><img class="alignnone" title="hidden NO" src="http://photos.smugmug.com/photos/389892829_fUfj8-L.jpg" alt="" width="450" height="49" /> [<a title="larger hidden no" href="http://photos.smugmug.com/photos/389892771_dC6Lw-L.jpg">larger version</a>]</p>
<p>50% of the time, when &#8220;Many&#8221; results are found in the first decision in the process, <em>if</em> you pick one of the results, you will earn revenue.</p>
<p><img class="alignnone" title="hidden yes" src="http://photos.smugmug.com/photos/389892809_cWoTK-L.jpg" alt="" width="450" height="66" /> [<a title="larger hidden yes" href="http://photos.smugmug.com/photos/389892758_HQbmB-L.jpg">larger version</a>]</p>
<p>When you do not pick one, 20% of the time, the customer (or user) abandons the process.  For the users that do not abandon the process, you earn revenue 50% of the time.  Taking both into account, you earn revenue only 40% of the time.</p>
<h2>Adding Up the Impacts</h2>
<p>When there are &#8220;Many&#8221; results from search, you can improve the performance of this part of your process by 20% &#8211; specifically, you increase revenue by 20%.  But only if you always &#8220;Pick One&#8221; of the many results. You can extend this analysis to determine the percentage of None/One/Many outputs from the search at the start of the process, and determine an overall impact on the process.  If search returned many results 10% of the time, you can increase revenue (overall) by 1% by always picking one of those results.  That gives you the business justification to <a title="roi calculation tips" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">calculate ROI </a>on exposing the hidden decision.</p>
<p>The end result is that you have a simple way to communicate the impacts (truth table) in the language of stakeholders (ROI).</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+Impact+of+a+Hidden+Decision+http%3A%2F%2Fbit.ly%2FftuPGt+" 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/10/08/hidden-decision-impact/&amp;t=The+Impact+of+a+Hidden+Decision" 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/10/08/hidden-decision-impact/feed/</wfw:commentRss>
		<slash:comments>3</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>Product Managers and Information Flow</title>
		<link>http://tynerblain.com/blog/2007/08/14/product-managers-and-information-flow/</link>
		<comments>http://tynerblain.com/blog/2007/08/14/product-managers-and-information-flow/#comments</comments>
		<pubDate>Wed, 15 Aug 2007 04:01:21 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Process Flow]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[information flow]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[sdlc]]></category>
		<category><![CDATA[software product management]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/08/14/product-managers-and-information-flow/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F14%2Fproduct-managers-and-information-flow%2F", "style": "big", "title": "Product Managers and Information Flow" }); Product managers are often described as the hub or center of a software development organization. Saeed Khan takes umbrage with this under-appreciative image in an awesome article about information flow, product managers, and the SDLC. Hat Tip I love that the community 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%252F2007%252F08%252F14%252Fproduct-managers-and-information-flow%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Product%20Managers%20and%20Information%20Flow%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F14%2Fproduct-managers-and-information-flow%2F", "style": "big", "title": "Product Managers and Information Flow" });</script></div>
<p><img alt="communication tower" title="communication tower" src="http://sehlhorst.smugmug.com/photos/184077983-M.jpg" /></p>
<p>Product managers are often described as the hub or center of a software development organization.  Saeed Khan takes umbrage with this under-appreciative image in an awesome article about information flow, product managers, and the SDLC.</p>
<p><span id="more-557"></span></p>
<h2>Hat Tip</h2>
<p>I love that the community of great people writing about product management and business analysis has grown so richly over the last couple of years.  Yet again we get to thank someone else for pointing us to a great article.  Steve Johnson (<a title="vote for steve johnson" href="http://businessofsoftware.org/softwareidol.aspx">vote for him</a>) points us to the <a title="On product management" href="http://onproductmanagement.wordpress.com/"><em>On Product Management</em></a> blog in a recent article.  They&#8217;ve quietly amassed over 50 articles in the last three months, and we, thanks to Steve, found one we loved today.</p>
<h2>Information Flow</h2>
<p>In one of a <a title="being a great product manager" href="http://onproductmanagement.wordpress.com/2007/08/14/how-to-be-a-great-product-manager-boxed-set-with-bonus-features/">series of articles on being a great product manager</a>, Saeed discusses the importance of the product manager not only in creating information, but in <a title="information enablement" href="http://onproductmanagement.wordpress.com/2007/08/09/how-to-be-a-great-product-manager-part-5/">getting the right information to the people who need it</a>.  Here&#8217;s how you know you want to read the article.  First, scan it.  Then click on the two diagrams.  The first one shows the network of roles in a typical large software company, showing the more significant information flows between them.  The second diagram shows a detailed heatmap of the amount of information flowing through any particular role as a function of where the product is within the SDLC.</p>
<p>As soon as you see these two diagrams, you will immediately walk away with the appreciation that Saeed speaks with perspective, experience, and insight.  Now you know you want to read the rest of the article in depth.</p>
<h2>Enabling, Not Documenting</h2>
<p>One thing I really like about Saeed&#8217;s article is that he positions part of the role of the product manager as enabling other people on the team to be more effective.  Product managers don&#8217;t make all the decisions, don&#8217;t do the product implementation, and don&#8217;t do the tactical selling activities.  Other people do.  What product managers do is enable them to do it better, by providing them with the right information.</p>
<p>In <a title="demo malfeasance" href="http://onproductmanagement.wordpress.com/2007/06/24/and-another-thing-software-demos-need-serious-help/">another good article</a> from the same blog, Alan tells about the tragic demo from a company pitching software to product managers &#8211; and discussing the features, not the value.  Unlike in that demo, Saeed is focused on the value of information flow within an organization.  He doesn&#8217;t talk about the artifacts that are created (if any), he focuses, particularly with the heatmap, on how different roles are involved in different stages of the SDLC.</p>
<p>The article makes good points, and the heatmap drives home that there&#8217;s rigor behind the assertions.  And as the first article I read from this blog, I&#8217;m extremely excited to read more.  I would like to see (and will now have to think about) how different roles need information with an agile product development lifecycle.  These are the types of inward focused assessments that help us get better at product management, and help our teams achieve greater software product success.</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+Product+Managers+and+Information+Flow+http%3A%2F%2Fbit.ly%2FgWEjo9+" 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/2007/08/14/product-managers-and-information-flow/&amp;t=Product+Managers+and+Information+Flow" 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/2007/08/14/product-managers-and-information-flow/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smart Enough Systems &#8211; Interview With James Taylor</title>
		<link>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/</link>
		<comments>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 03:38:54 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Expert systems]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[edm]]></category>
		<category><![CDATA[edm interview]]></category>
		<category><![CDATA[edm podcast]]></category>
		<category><![CDATA[enterprise decision management]]></category>
		<category><![CDATA[hidden decisions]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[james taylor]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[smart enough systems]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/25/smart-enough-systems/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F25%2Fsmart-enough-systems%2F", "shorturl": "http://bit.ly/bpxUYl", "style": "big", "title": "Smart Enough Systems - Interview With James Taylor" }); Today we recorded an interview with James Taylor, co-author of Smart (Enough) Systems, How To Deliver Competitive Advantage by Automating Hidden Decisions. This book, written by James Taylor with Neil Raden comes out on Jun 29th (2007), and [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F06%252F25%252Fsmart-enough-systems%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbpxUYl%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Smart%20Enough%20Systems%20-%20Interview%20With%20James%20Taylor%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F25%2Fsmart-enough-systems%2F", "shorturl": "http://bit.ly/bpxUYl", "style": "big", "title": "Smart Enough Systems - Interview With James Taylor" });</script></div>
<p><img title="James Taylor" src="http://www.edmblog.com/jamestaylor2.jpg" alt="James Taylor" /></p>
<p>Today we recorded an interview with <a title="About James Taylor" href="http://aboutjt.com/wp/">James Taylor</a>, co-author of Smart (Enough) Systems, How To Deliver Competitive Advantage by Automating Hidden Decisions.  This book, written by James Taylor with Neil Raden comes out on Jun 29th (2007), and is available for pre-order from Amazon today.  Our interview covers many of the topics in their book, with a focus on the ideas inside and the benefits you can get from applying them, in just under an hour.</p>
<p><span id="more-526"></span></p>
<h2>Smart (Enough) Systems</h2>
<p><img title="smart enough systems book cover" src="http://sehlhorst.smugmug.com/photos/166708837-M.jpg" alt="smart enough systems book cover" /></p>
<p>James and Neil introduce a pretty compelling concept &#8211; that paying attention to small decisions can have as large an impact for companies as paying attention to large decisions.  All successful companies invest in strategic decision making &#8211; the big impact, infrequent decisions.  But most companies overlook the benefits of investing cost-effectively in the small decisions that happen thousands or millions or even billions of times a day.</p>
<p>In our interview, James gives us some insight into exactly how that can happen, how to approach these small decisions, and how to manage them.</p>
<h2>Interview With James Taylor</h2>
<p>You can download <a title="James Taylor Interview" href="http://tynerblain.com/downloads/20070625.jamestaylor.interview.mp3">our interview with James Taylor in mp3 format (18 MB, 52 minutes)</a> and listen at any time.  As this is my first recorded interview, please accept my apologies for the &#8220;ums and ahs.&#8221;  James does 99% of the speaking, so it still turned out ok &#8211; he did a fantastic job.</p>
<p>James&#8217; book is an excellent read, and eye-opening, revealing what should be obvious but remains hidden about improving our businesses.  Every action and interaction a company makes is the result of a decision.  Making those decisions accurately, quickly, and cost-effectively is critical to every business.  Being able to adapt those decisions (and their resulting processes and customer-interactions) rapidly is the key to success in a world that is changing faster than ever.  The flow of ideas is straightforward, and each new idea builds upon the previous ones, allowing readers to quickly conceptualize a <em>better way to run their business</em>.  The anecdotes and real-world examples also solidify the concepts, and almost force the reader to think about how to apply it to their own business.</p>
<p>I personally recommend the book, and thank James for the opportunity to read it and speak with him about it.</p>
<h2>More Resources on Smart (Enough) Systems</h2>
<p>Near the end of our interview, James mentions<a title="smart enough systems website" href="http://www.smartenoughsystems.com/wp/main"> the web site for the book</a>.  The book is available from Amazon now, and can be ordered through the link on the main page.  They also have an RSS feed with news on the book, and will be launching a wiki for the book very soon as well.</p>
<p>This approach to integrating business and IT systems is also known as enterprise decision management, or EDM.  You can read more about EDM at James&#8217; <a title="EDM Blog" href="http://www.edmblog.com/">EDM Blog</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+Smart+Enough+Systems+%E2%80%93+Interview+With+James+Taylor+http%3A%2F%2Fbit.ly%2FbpxUYl+" 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/2007/06/25/smart-enough-systems/&amp;t=Smart+Enough+Systems+%E2%80%93+Interview+With+James+Taylor" 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/2007/06/25/smart-enough-systems/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://tynerblain.com/downloads/20070625.jamestaylor.interview.mp3" length="18743599" type="audio/mpeg" />
		</item>
		<item>
		<title>CMMI and RMM One Minute Survey</title>
		<link>http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/</link>
		<comments>http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/#comments</comments>
		<pubDate>Sat, 03 Feb 2007 02:47:16 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm levels]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[cmmi level]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 2]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level 5]]></category>
		<category><![CDATA[cmmi poll]]></category>
		<category><![CDATA[cmmi survey]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[rmm level]]></category>
		<category><![CDATA[rmm poll]]></category>
		<category><![CDATA[rmm survey]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/</guid>
		<description><![CDATA[See what CMMI levels and RMM levels other teams are using.  Take a minute out of your day to tell us your CMMI level and RMM level.  We all want to know, but we need your help - if you don't answer, you won't learn anything.  Thanks for clicking through!  And check back later to see the results as they come in.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F02%252F02%252Fcmmi-and-rmm-survey%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20and%20RMM%20One%20Minute%20Survey%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F02%2F02%2Fcmmi-and-rmm-survey%2F", "style": "big", "title": "CMMI and RMM One Minute Survey" });</script></div>
<p><img title="timed test" alt="timed test" src="http://sehlhorst.smugmug.com/photos/127153565-M.jpg" /></p>
<p>Please take <strong>one minute</strong> to answer the following two questions, because people need to know how their process maturity compares with everyone else. You&#8217;ll be answering two easy questions -</p>
<ul>
<li>What is your CMMI level?</li>
<li>What is your RMM level?</li>
</ul>
<p><strong>Background</strong></p>
<p>We just completed a series of six articles about <a title="Intro to CMMI and RMM" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">CMMI levels and RMM levels</a>.  We discussed how the two frameworks can be connected, and explored the reasons for trying to reach the next level on either scale.</p>
<p><strong>Question 1</strong></p>
<p>[poll=2]</p>
<p><strong>Question 2</strong></p>
<p>[poll=3]</p>
<p>Thanks for taking the survey, and if you have any thoughts about the results, just comment here.</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+CMMI+and+RMM+One+Minute+Survey+http%3A%2F%2Fbit.ly%2FfNMEAG+" 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/2007/02/02/cmmi-and-rmm-survey/&amp;t=CMMI+and+RMM+One+Minute+Survey" 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/2007/02/02/cmmi-and-rmm-survey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and RMM Level 5 &#8211; Integrated Requirements</title>
		<link>http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/</link>
		<comments>http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 03:00:37 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/</guid>
		<description><![CDATA[In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition of RMM level 5. We also look at the mapping from RMM level 5 to various CMMI levels.]]></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%252F2007%252F02%252F01%252Fcmmi-and-rmm-level-5%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FhU89GI%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20RMM%20Level%205%20-%20Integrated%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F02%2F01%2Fcmmi-and-rmm-level-5%2F", "shorturl": "http://bit.ly/hU89GI", "style": "big", "title": "CMMI Levels and RMM Level 5 - Integrated Requirements" });</script></div>
<p><img title="Book 5 in a stack of 5 books" src="http://sehlhorst.smugmug.com/photos/125462917-M.jpg" alt="Book 5 in a stack of 5 books" /></p>
<p><strong>Background</strong></p>
<p>In our <a title="Mapping CMMI to RMM - Introduction" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">introduction to mapping RMM levels to CMMI levels</a>, we presented <a title="Foundation Series explaining CMMI levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">background info on CMMI</a>, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition of RMM level 5. We also look at the mapping from RMM level 5 to various CMMI levels.</p>
<p><img title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" alt="CMMI to RMM Mapping" /></p>
<p>(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>In the previous article in the series, we looked at how <a title="Mapping RMM Level 3 to CMMI Levels" href="http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/"></a><a title="RMM Level 4 Processes Analyzed" href="http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/">RMM level 4 &#8211; traced requirements</a> processes map to CMMI levels.</p>
<p><strong>RMM Level 5 &#8211; Integrated Requirements</strong></p>
<p>In RMM level 4 we discussed the benefits of establishing traceability <em>within</em> the scope of the requirements realm.  This traceability helped us with tracking the impact of changes and validation of requirements,  and it helped us with reporting and management functions that improved our insight and lessened our efforts.</p>
<p>RMM level 5 extends this traceability concept <em>beyond</em> the requirements realm.  We can extend tracing into development, testing and documentation, as well as project management.</p>
<p><strong>Delivery Scheduling</strong></p>
<p>Each delivery of our software includes a set amount of functionality.  We prefer using a <a title="How To Use timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">timebox approach for planning</a> those deliveries.  We also suggest using <a title="Communicating a Release Schedule with Use Cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">use cases as the &#8220;pieces&#8221; of functionality</a> that are delivered.  We also have proposed an approach to <a title="Scheduling Requirements Changes" href="http://tynerblain.com/blog/2006/04/10/scheduling-requirements-changes-part-1/">managing changes to the delivery schedule</a>.  This overall process is a form of integration of requirements, and is dependent upon having organized, structured, traced requirements.  It also requires us to create linkages between implementation elements/effort and the requirements that are supported.</p>
<p><strong>Quality Assurance</strong></p>
<p>There are two elements of integration between QA and requirements.  The first is in defining test cases based on use cases.  Each use case drives the creation of one or more test cases that are used to validate that the delivered software meets the requirements.</p>
<p>The second element is in tracking and management of bugs.  We have a triage process for determining how to address bugs.  Those <a title="Where Bugs Come From" href="http://tynerblain.com/blog/2006/01/22/where-bugs-come-from/">bugs can come from anywhere</a> &#8211; and sometimes they come from incorrect requirements.  Establishing relationships between requirements and bugs allows us to manage the defect resolution process more effectively.</p>
<p><strong>Documentation</strong></p>
<p>When we write documentation, our goal is to have the reader know how to accomplish something that they want to do.  When we develop software, we define the things that users will be able to do.  It only makes sense to <a title="Use Case Driven Documentation" href="http://tynerblain.com/blog/2006/10/10/use-case-driven-documentation/">structure documentation around use cases</a>.</p>
<p><strong>Mapping CMMI Levels to RMM Level 5</strong></p>
<p>In our diagram, we show the following mappings for RMM level 5:</p>
<ul>
<li>CMMI level 0 &#8211; No Entry</li>
<li>CMMI level 1 &#8211; No Entry</li>
<li>CMMI level 2 &#8211; No Entry</li>
<li>CMMI level 3 &#8211; Requirements <strong>Should Be</strong> Integrated</li>
<li>CMMI level 4 &#8211; Requirements <strong>Should Be</strong> Integrated</li>
<li>CMMI level 5 &#8211; Requirements <strong>Should Be</strong> Integrated</li>
</ul>
<p><strong>For CMMI Level 0 through CMMI Level 2</strong> &#8211; when our process is unmanaged, and unstructured, integration doesn&#8217;t matter.  <a title="Fix the process first, then the tools" href="http://tynerblain.com/blog/2006/02/15/requirements-management-software-will-not-solve-the-problem/">Requirements management software will not solve our problems</a>.</p>
<p><strong>For CMMI Level 3 through CMMI Level 5</strong> &#8211; Being able to quantify the performance of our process, and improve our process based on that feedback both require an element of instrumentation and insight into our techniques and tools. Attempting to do that meaningfully without additional structure and traceability will provide limited benefit.  If we&#8217;re investing this level of effort in our requirements process, we should extend it to include our overal software development process by integrating to other systems.</p>
<p><strong>From a CMMI Level Perspective</strong></p>
<p>The previous analysis basically looked at the “RMM level 5″ column in our grid, and inspected the relative decisions for each “CMMI level” row. Now we will look at it by reviewing the CMMI levels, and seeing how they map to the RMM level.</p>
<p>A quick review of the same chart (so you don’t have to scroll up and down):</p>
<p><img title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" alt="CMMI to RMM Mapping" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>At CMMI level 1 through CMMI level 3, we don’t address integration with other systems.  We want to focus on getting a cohesive and powerful requirements management process in place before we look at integrating it to our other processes.</p>
<p>At CMMI levels 4 and 5 we are measuring and improving on our process. We require traceability as a key component to our quantified analysis and instrumentation.  We should be extending that traceability beyond the requirements realm to maximize the value of what we are doing.</p>
<p><strong>Summary</strong></p>
<ul>
<li>RMM level 5 specifies that requirements documents are organized, structured, and traceable &#8211; both to each other and to other systems.</li>
<li>Once we reach a company-standard process (CMMI level 3) we should be at RMM level 5, but we must have reached RMM level 2.</li>
<li>RMM level 5 is never <em>required</em> to achieve any of the CMMI levels &#8211; but it is valuable and encouraged.</li>
</ul>
<p>Don&#8217;t forget to take our <a title="CMMI Level and RMM Level Polls" href="http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/"><em>One Minute Survey on CMMI and RMM Levels</em></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+CMMI+Levels+and+RMM+Level+5+%E2%80%93+Integrated+Requirements+http%3A%2F%2Fbit.ly%2FhU89GI+" 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/2007/02/01/cmmi-and-rmm-level-5/&amp;t=CMMI+Levels+and+RMM+Level+5+%E2%80%93+Integrated+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/2007/02/01/cmmi-and-rmm-level-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and RMM Level 4 &#8211; Traced Requirements</title>
		<link>http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/</link>
		<comments>http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/#comments</comments>
		<pubDate>Thu, 01 Feb 2007 03:00:32 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/</guid>
		<description><![CDATA[In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition of RMM level 4. W also look at the mapping from RMM level 4 to various CMMI levels.]]></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%252F2007%252F01%252F31%252Fcmmi-and-rmm-level-4%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20RMM%20Level%204%20-%20Traced%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F31%2Fcmmi-and-rmm-level-4%2F", "style": "big", "title": "CMMI Levels and RMM Level 4 - Traced Requirements" });</script></div>
<p><img alt="Book 4 in a stack" title="Book 4 in a stack" src="http://sehlhorst.smugmug.com/photos/125462915-M.jpg" /></p>
<p><strong>Background</strong></p>
<p>In our <a title="Mapping CMMI to RMM - Introduction" href="http://tynerblain.com/2007/01/25/cmmi-and-rmm-intro/">introduction to mapping RMM levels to CMMI levels</a>, we presented <a title="Foundation Series explaining CMMI levels" href="http://tynerblain.com/2006/03/10/foundation-series-cmmi-levels-explained/">background info on CMMI</a>, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition of RMM level 4. W also look at the mapping from RMM level 4 to various CMMI levels.</p>
<p><img title="CMMI to RMM Mapping" alt="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /></p>
<p>(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>In the previous article in the series, we looked at how <a title="Mapping RMM Level 3 to CMMI Levels" href="http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/">RMM level 3 &#8211; structured requirements</a> processes map to CMMI levels.</p>
<p><strong>RMM Level 4 &#8211; Traced Requirements</strong></p>
<p>RMM level 4 builds upon the previous three levels &#8211; structured, organized, and documented requirements.  With an organization of structured requirements, we can overlay the notion of tracing between requirements.</p>
<p>Consider the <a title="Intro to structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">structured requirements approach</a> we adapted from Karl Wiegers.</p>
<p><img title="structured requirements relationships" alt="structured requirements relationships" src="http://sehlhorst.smugmug.com/photos/71264266-M.jpg" /></p>
<p>In this structured approach, there is a notion of <em>dependence</em>.</p>
<ul>
<li>Goals depend upon use cases in order to be achieved.</li>
<li>Goals depend upon non-functional requirements to define their achievability.</li>
<li>Use cases depend upon functional requirements to enable their execution.</li>
<li>Use cases depend upon non-functional requirements to characterize their effectiveness.</li>
<li>Functional requirements depend upon designs, which depend upon implementation.</li>
</ul>
<p>This structure of dependency represents the real-world reliance of one artifact on another.  In an ongoing software development project, we can be making changes to any of these elements.  <em>Those changes can impact other elements</em>.</p>
<p>As an example, we could change a use case.  The goal that <em>depends upon</em> that use case might be affected.  Our changes may affect the functional and non-functional requirements upon which the use case <em>depends</em>.</p>
<p>Traceability allows us to say <em>this</em> use case relies on <em>those</em> requirements.  It represents relationships between specific artifacts.  We can use traceability to reduce the effort (and errors) associated with propogating changes through the dependency network.</p>
<p>We can also use traceability to enable interesting aggregations of reporting information.  For example, we could identify the percentage of completion of a given use case &#8211; by looking at the percentage completion of all implementation elements that support all design elements upon which the use case depends.  Other analogous relationships can be created to meet other reporting objectives.</p>
<p>We can also use traceability to validate completeness (IBM uses the word &#8220;coverage&#8221; in their article) of our specification.  We can review a goal, and ask the question: &#8220;Are all of the use cases required to achieve this goal defined?&#8221;  We can also validate in the other direction: &#8220;Are all of these use cases required to achieve that goal?&#8221;  We covered this specific example in our article, <a title="Use Cases and Completeness Validation" href="http://tynerblain.com/blog/2006/07/06/requirement-completeness-validation-with-use-cases/"><em>Completeness Validation With Use Cases</em></a>.  This also applies to the <a title="Validating Requirements Completion" href="http://tynerblain.com/blog/2006/06/08/writing-complete-requirements/">completeness validation</a> of other artifacts in the requirements hierarchy.</p>
<p><strong>Mapping CMMI Levels to RMM Level 4<br />
</strong></p>
<p>In our diagram, we show the following mappings for RMM level 4:</p>
<ul>
<li>CMMI level 0 &#8211; No Entry</li>
<li>CMMI level 1 &#8211; No Entry</li>
<li>CMMI level 2 &#8211; Requirements<strong> Should Be</strong> Traced</li>
<li>CMMI level 3 &#8211; Requirements <strong>Should Be</strong> Traced</li>
<li>CMMI level 4 &#8211; Requirements <strong>Must Be</strong> Traced</li>
<li>CMMI level 5 &#8211; Requirements <strong>Must Be</strong> Traced</li>
</ul>
<p><strong>For CMMI Level 0 and CMMI Level 1</strong> &#8211; when our process is unmanaged, and unstructured, traceability does not provide value &#8211; it creates confusion.<br />
<strong>For CMMI Level 2 and CMMI Level 3 </strong>- A valuable process must include organization of documented of requirements. Those documents should also be structured and traced.<br />
<strong>For CMMI Level 4 and CMMI Level 5</strong> &#8211; Being able to quantify the performance of our process, and improve our process based on that feedback both require an element of instrumentation and insight into our techniques and tools. Attempting to do that meaningfully without additional structure and traceability will provide limited benefit.</p>
<p><strong>From a CMMI Level Perspective</strong></p>
<p>The previous analysis basically looked at the “RMM level 4″ column in our grid, and inspected the relative decisions for each “CMMI level” row. Now we will look at it by reviewing the CMMI levels, and seeing how they map to the RMM level.</p>
<p>A quick review of the same chart (so you don’t have to scroll up and down):</p>
<p><img title="CMMI to RMM Mapping" alt="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>At CMMI level 1, we don&#8217;t address traceability  We would focus on reaching CMMI level 2 before reaching RMM level 4.</p>
<p>At CMMI level 2 and CMMI level 3, we <em>require</em> that the documentation be organized.  A managed process without some form of organization and consistent documentation is a <em>poorly</em> managed process.  We also suggest that an RMM level of at least 3, and ideally 4 be adopted.</p>
<p>At CMMI levels 4 and 5 we are measuring and improving on our process. We require traceability as a key component to our quantified analysis and instrumentation.</p>
<p><strong>Summary</strong></p>
<ul>
<li>RMM level 4 specifies that requirements documents are organized, structured, and traceable.</li>
<li>CMMI level 2 specifies that there is a <em>managed</em> process &#8211; in our case, one for managing requirements, and it should involve structure and traceability as components that simplify that management.</li>
<li>A process must be at RMM level 4 before it can reach CMMI level 4.</li>
</ul>
<p>Check out the next article, <a title="CMMI Levels and RMM Level 5 - Integrated Requirements" href="http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/"><em>CMMI Levels and RMM Level 5</em></a> or  take our <a title="CMMI Level and RMM Level Polls" href="http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/"><em>One Minute Survey on CMMI and RMM Levels</em></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+CMMI+Levels+and+RMM+Level+4+%E2%80%93+Traced+Requirements+http%3A%2F%2Fbit.ly%2FdNrtI9+" 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/2007/01/31/cmmi-and-rmm-level-4/&amp;t=CMMI+Levels+and+RMM+Level+4+%E2%80%93+Traced+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/2007/01/31/cmmi-and-rmm-level-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and RMM Level 3 &#8211; Structured Requirements</title>
		<link>http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/</link>
		<comments>http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/#comments</comments>
		<pubDate>Wed, 31 Jan 2007 03:00:32 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F30%2Fcmmi-and-rmm-level-3%2F", "style": "big", "title": "CMMI Levels and RMM Level 3 - Structured Requirements" }); Background In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition [...]]]></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%252F2007%252F01%252F30%252Fcmmi-and-rmm-level-3%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20RMM%20Level%203%20-%20Structured%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F30%2Fcmmi-and-rmm-level-3%2F", "style": "big", "title": "CMMI Levels and RMM Level 3 - Structured Requirements" });</script></div>
<p><img alt="3rd book in a stack of 5 books" title="3rd book in a stack of 5 books" src="http://sehlhorst.smugmug.com/photos/125462912-M.jpg" /></p>
<p><strong>Background</strong></p>
<p>In our <a title="Mapping CMMI to RMM - Introduction" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">introduction to mapping RMM levels to CMMI levels</a>, we presented <a title="Foundation Series explaining CMMI levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">background info on CMMI</a>, introduced the IBM article on RMM levels, and posted an initial mapping structure. In this article, we will look at the definition of RMM level 3. We also question the language used and reinterpret some of what IBM suggests. Finally, we look at the mapping from RMM level 3 to various CMMI levels.</p>
<p><img title="CMMI to RMM Mapping" alt="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /></p>
<p>(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>In the previous article in the series, we looked at how <a title="Mapping RMM Level 1 to CMMI Levels" href="http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/">RMM level 2 &#8211; organized requirements documents processes</a> map to CMMI levels.</p>
<p><strong>RMM Level 3 &#8211; Structured Requirements</strong></p>
<p>RMM level 1 requires us to document our requirements.  RMM level 2 requires us to organize that documentation and use consistent formatting for the documents.  RMM level 3 introduces the concept of using structured requirements, as well as the idea of requirements having attributes.  The first notion relates to the relationships between requirements, and the second is a way of apply structure <em>to the requirements</em> so that we can reason about them more effectively.</p>
<p><strong>Structured Requirements</strong></p>
<p>The first thing that the IBM team identifies is the need to identify different types of requirements.  Avoid all of the naming bugaboos, and consider the notion of identifying different structures of <em>artifacts</em> in the software development process.  We have a series of elements of information that we need to understand and articulate in order to travel from an identified market need to a delivered software product.</p>
<p>There are many different approaches to documenting requirements.  We all struggle to agree on particular naming conventions.  We use <a title="Many Different Forms of Requirements Documents" href="http://tynerblain.com/blog/2006/01/20/document-proliferation/">different requirements documents</a> to represent different parts of the flow.</p>
<p>In <a title="Different Requirements Documents" href="http://tynerblain.com/blog/2006/08/24/alphabet-soup/"><em>Alphabet Soup &#8211; Requirements Documents</em></a>, we use the following diagram to try and summarize the stages of decomposition.</p>
<p><img alt="requirements continuum" title="requirements continuum" src="http://sehlhorst.smugmug.com/photos/69105247-O.png" /></p>
<p>This is the first level of decomposition &#8211; requirements (MRD or PRD) versus specification (SRS or FRS).</p>
<p>There&#8217;s another level of detail in the structuring of requirements, built on the work that Karl Wiegers has done.  It looks at the artifacts in more detail &#8211; and I believe is what the IBM team had in mind when they defined RMM level 3.  Here&#8217;s the version of the diagram that we developed in our article on <a title="Appreciating non-functional requirements" href="http://tynerblain.com/blog/2006/05/23/non-functional-requirements-era/">non-functional requirements</a>, and then reference as part of our <a title="Intro to structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">introduction to structured requirements</a>.  You can read more about this approach in those articles.</p>
<p><img alt="structured requirements framework" title="structured requirements framework" src="http://sehlhorst.smugmug.com/photos/71264266-M.jpg" /></p>
<p>We&#8217;ve also done some exploration of <a title="Combining interaction design and structured requirements" href="http://tynerblain.com/blog/2006/03/23/interaction-design-and-structured-requirements/">how to marry interaction design with structured requirements</a>.  The approach of starting with a user-centric perspective has a lot of benefits, and we believe there is a way to combine those benefits with the benefits inherent in a structured approach to requirements documentation.  Here&#8217;s the diagram we created that shows how we adapt our structured approach to an interaction design context.</p>
<p><img alt="interaction design and structured requirements framework" title="interaction design and structured requirements framework" src="http://sehlhorst.smugmug.com/photos/61228367-O.png" /></p>
<p>Regardless of the approach you take, the element that is relevant to having an RMM level 3 requirements process is the notion that different documents represent different types of requirements/constraints/designs.</p>
<p><strong>Requirement Structures</strong></p>
<p>The IBM team also talks about having <em>attributes</em> as part of requirements.  Unfortunately, this is a little bit of the &#8220;if you have a hammer, everything looks like a nail&#8221; syndrome.  What their suggestion implies is</p>
<ol>
<li>You have a notion of objects, and you use objects to represent requirements artifacts.</li>
<li>You apply the concept of attributes to structure the elements of information within those artifacts.</li>
<li>You have some means (human or machine) to reason about those <em>attributes</em> in a way that provides distinct value relative to reasoning about the artifacts.</li>
</ol>
<p>Their approach is unfortunate, if only because it appears presumptive, and perhaps biased.  I believe we can restructure their language into something design-agnostic that achieves the same objectives.</p>
<p>We propose that there are two relevant benefits that could be addressed with the <em>attributes-approach</em> they suggest:</p>
<ol>
<li><strong>Being able to manage and reason about the meta-data of a requirement artifact has value</strong>.  Meta-data are pieces of data that describe the data.  For example, who is the author of the document?  When was it last edited?  What is its priority?  To which other requirements is it related?  Being able to track, edit, and view this information allows us to make decisions about how and when to use the document.  It helps us plan activities and investments that are looking at the process as a whole &#8211; combining information about all of the requirements to make high level decisions.</li>
<li><strong>Structuring information within a requirement artifact has value</strong>.  Artifacts can be free-form text. That text can be organized into sections and lists and tables.  That type of organization is helpful to humans who read it.  It allows us to organize our content so that it is <a title="Writing requirements to be read" href="http://tynerblain.com/blog/2006/10/04/writing-for-the-purpose-of-reading/">easier to read the requirements</a>.  Most good business writing has these elements &#8211; where the organization of information is suited to the content and its intended use.  To be at RMM level 3, we must also be at <a title="Looking at RMM Level 2 in detail" href="http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/">RMM level 2</a>, which requires consistent formatting.  Combining that consistency with structure makes it easier for people to read (and saves time when writing) requirements.  There is also benefit to using a structure that can be read by machines as well as humans.  When information has structure, it introduces the possibility of machine-reasoning, just as it improves human-consumption.  While machine-reasoning about elements of requirements documents is not a criterion of achieving RMM level 3, the IBM article implies that this benefit exists.  And it does exist.  Without going off on a tangent, we can at least easily envision the generation of a report based upon the status of all requirements scheduled for a given release.  This report can be created without formally structuring the information, but it is easier to create when we can reason about the structure of the information.</li>
</ol>
<p>I think this is exactly what IBM intended, and they just used an unfortunately <a title="Symbolic Words cloud our judgement" href="http://tynerblain.com/blog/2006/02/12/symbolism-and-communication/">symbolic word</a> &#8211; <em>attributes</em>.  The same criticism has been applied to much of our writing about the way we use the word <em>requirement</em>.</p>
<p><strong>Mapping CMMI Levels to RMM Level 3<br />
</strong></p>
<p>In our diagram, we show the following mappings for RMM level 3:</p>
<ul>
<li>CMMI level 0 &#8211; No Entry</li>
<li>CMMI level 1 &#8211; Requirements <strong>Should Be</strong> Structured</li>
<li>CMMI level 2 &#8211; Requirements<strong> Should Be</strong> Structured</li>
<li>CMMI level 3 &#8211; Requirements <strong>Should Be</strong> Structured</li>
<li>CMMI level 4 &#8211; Requirements <strong>Must Be</strong> Structured</li>
<li>CMMI level 5 &#8211; Requirements <strong>Must Be</strong> Structured</li>
</ul>
<p><strong>For CMMI Level 0</strong> &#8211; when our process is so ad-hoc that documentation of requirements is questionable, discussions about how we organize and structure the requirements documents are irrelevant.</p>
<p><strong>For CMMI Level 1 through CMMI Level 3 </strong>- A valuable process must include documentation of requirements. Those documents really should be organized and structured.  Structure is essentially organization at the next level of detail, and it is worth doing.</p>
<p><strong>For CMMI Level 4 and CMMI Level 5</strong> &#8211; Being able to quantify the performance of our process, and improve our process based on that feedback both require an element of instrumentation and insight into our techniques and tools.  Attempting to do that meaningfully without additional structure will provide limited benefit.</p>
<p><strong>From a CMMI Level Perspective</strong></p>
<p>The previous analysis basically looked at the “RMM level 3″ column in our grid, and inspected the relative decisions for each “CMMI level” row. Now we will look at it by reviewing the CMMI levels, and seeing how they map to the RMM level.</p>
<p>A quick review of the same chart (so you don’t have to scroll up and down):</p>
<p><img alt="CMMI to RMM Mapping" title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>At CMMI level 1, we <em>require</em> that requirements be written.  We suggest that they be organized and structured.</p>
<p>At CMMI level 2 and CMMI level 3, we <em>require</em> that the documentation be organized.  A managed process without some form of organization and consistent documentation is a <em>poorly</em> managed process.  We also suggest that an RMM level of at least 3, and ideally 4 be adopted.</p>
<p>At CMMI levels 4 and 5 we are measuring and improving on our process. We’ll address the higher CMMI levels in more detail as this series of articles continues.</p>
<p><strong>Summary</strong></p>
<ul>
<li>RMM level 3 specifies that requirements documents are organized, and structured.</li>
<li>CMMI level 2 specifies that there is a <em>managed</em> process &#8211; in our case, one for managing requirements.</li>
<li>A process must be at RMM level 2 and should be at level 3 or 4 to be at CMMI level 2 or CMMI level 3.</li>
<li>A process should be at RMM level 3 if it is at CMMI level 1.</li>
<li>A process should be at RMM level 4 if it is at CMMI level 2.</li>
</ul>
<p>Note that this implies that we would spend the extra effort to get to CMMI 3 before we would try and reach RMM level 5.</p>
<p>Check out the next article, <a title="CMMI Levels and RMM Level 4 - Traced Requirements" href="http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/"><em>CMMI Levels and RMM Level 4</em></a> or  take our <a title="CMMI Level and RMM Level Polls" href="http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/"><em>One Minute Survey on CMMI and RMM Levels</em></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+CMMI+Levels+and+RMM+Level+3+%E2%80%93+Structured+Requirements+http%3A%2F%2Fbit.ly%2FehrVHC+" 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/2007/01/30/cmmi-and-rmm-level-3/&amp;t=CMMI+Levels+and+RMM+Level+3+%E2%80%93+Structured+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/2007/01/30/cmmi-and-rmm-level-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and RMM Level 2 &#8211; Organized Requirements</title>
		<link>http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/</link>
		<comments>http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/#comments</comments>
		<pubDate>Tue, 30 Jan 2007 03:00:28 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/</guid>
		<description><![CDATA[In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure.  In this article, we will look at the definition of RMM level 2.  We also cover the tradeoffs and benefits of the practices it requires.  Finally, we look at the mapping from RMM level 2 to various CMMI levels.]]></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%252F2007%252F01%252F29%252Fcmmi-and-rmm-level-2%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20RMM%20Level%202%20-%20Organized%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F29%2Fcmmi-and-rmm-level-2%2F", "style": "big", "title": "CMMI Levels and RMM Level 2 - Organized Requirements" });</script></div>
<p><img title="Second in a stack of five books" alt="Second in a stack of five books" src="http://sehlhorst.smugmug.com/photos/125462909-M.jpg" /></p>
<p><strong>Background</strong></p>
<p>In our <a title="Mapping CMMI to RMM - Introduction" href="http://tynerblain.com/2007/01/25/cmmi-and-rmm-intro/">introduction to mapping RMM levels to CMMI levels</a>, we presented <a title="Foundation Series explaining CMMI levels" href="http://tynerblain.com/2006/03/10/foundation-series-cmmi-levels-explained/">background info on CMMI</a>, introduced the IBM article on RMM levels, and posted an initial mapping structure.  In this article, we will look at the definition of RMM level 2.  We also cover the tradeoffs and benefits of the practices it requires.  Finally, we look at the mapping from RMM level 2 to various CMMI levels.</p>
<p><img alt="CMMI to RMM Mapping" title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /></p>
<p>(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>In the previous article in the series, we looked at how <a title="Mapping RMM Level 1 to CMMI Levels" href="http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/">RMM level 1 &#8211; written requirements processes</a> map to CMMI levels.</p>
<p><strong>RMM Level 2 &#8211; Organized Requirements</strong></p>
<p>RMM level 1 requires us to document our requirements, but doesn&#8217;t talk about how we document them.  We can use emails, store information in databases, spreadsheets, and screenshots.  But without an over-arching organization.  In RMM level 2, we have to organize our requirements documents, we have to use consistent formatting, and we have to deal with administrative issues like security and version control.</p>
<p><strong>The Case For Organizing Requirements</strong></p>
<p>There are two main drivers for organizing our requirements:</p>
<ul>
<li>The need to consume those requirements.</li>
<li>The need to change those requirements over time.</li>
</ul>
<p><strong>Consuming Requirements</strong></p>
<p>Requirements are written not just to organize our thoughts, but to <a title="How different team members view requirements" href="http://tynerblain.com/blog/2006/05/11/requirements-documents-one-mans-trash/">provide direction for the team</a>.  They are a form of <a title="Tips for Creating Targeted Communication" href="http://tynerblain.com/blog/2006/04/03/targeted-communication-three-tips/">targeted communication</a>.  The set the scope for software delivery, provide guidance in <a title="Three prioritization techniques" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">making prioritization decisions</a>, and provide insight into what we will deliver &#8211; helping <a title="Managing a Release Schedule with Use Cases " href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">manage the expecations of our customers</a>.</p>
<p>Organizing our requirements makes it easier to consume them. When we ask people to review our requirements, they will have more confidence, and experience less frustration, if they are consistently looking for documents in the same location.</p>
<p>This location could be a document repository, a shared drive on the network, a website, a portal site, or even organized in a file cabinet (?!).  The point is that they are always in the same place.  As the quantity of our requirements grows, they should also be organized in a logical way within that location.  At RMM level 2, any organization is valid &#8211; as long as it is consistent, it will provide value.</p>
<p><strong>Changing Requirements Over Time</strong></p>
<p>While documenting the requirements provides benefit, the disorganization comes at a cost.  Requirements change over time.  Our requirements documentation should change over time as well.</p>
<p>The biggest complaint with <a title="Intro To Waterfall and Incremental Processes" href="http://tynerblain.com/blog/2006/01/03/foundation-series-software-process-waterfall-process-versus-incremental-process/">waterfall projects</a> is that our understanding of the requirements does not change over time.  Requirements are a moving target.  With a waterfall project, we define a set of requirements, and then kick off the project &#8211; sort of a <em>fire and forget</em> model.  Months or years later, we deliver a product &#8211; and it will probably match our documented requirements.  While we were happily developing against the requirements we documented, the actual requirements have changed.  There&#8217;s a very high risk that what we deliver will not meet the evolved needs.</p>
<blockquote>
<ul>
<li>The Standish group reports that over 80% of projects are unsuccessful<br />
either because they are over budget, late, missing function, or a<br />
combination. (<a title="http://www.standishgroup.com/sample_research/chaos_1994_1.php" href="http://www.standishgroup.com/sample_research/chaos_1994_1.php">http://www.standishgroup.com/sample_research/chaos_1994_1.php</a>)</li>
<li>53 percent of projects cost 189 percent of their original estimate.</li>
<li>Average schedule overruns may be as high as 100%</li>
<li>Over 40% to 60% of defects in software are caused by poor requirements<br />
definition.</li>
<li>About One-Quarter of all projects are cancelled.</li>
<li>Customers do not use 20% of their product features.</li>
</ul>
<p><cite><a title="Statistics of Software Failure" href="http://tynerblain.com/blog/2005/12/28/why-we-should-invest-in-requirements-management/">Why We Should Invest in Requirements Management</a></cite></p></blockquote>
<p>While <em>poorly documented requirements</em> are certainly a factor in the statistics above, another factor is <em>no-longer-relevant</em> requirements.  These likely play out as features that are missing, features that are not used, and project cancellation (due to lack of relevance, or <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">lack of ROI</a>).</p>
<p>When we don&#8217;t organize our requirements, then changing them becomes more expensive &#8211; we have to find them, modify them, and notify people that they&#8217;ve been changed.  It also becomes difficult to know if <em>this</em> document is <em>the latest</em> document.  Organization addresses this problem.</p>
<p><strong>Why Avoid Organization?</strong></p>
<p><img alt="cluttered inbox" title="cluttered inbox" src="http://sehlhorst.smugmug.com/photos/125955571-M.jpg" /></p>
<p>Organization does come at a cost.  We have to spend the time (and possibly money) to set up the repository.  We have to spend time to determine <em>how </em>we want to organize our requirements.  And we have to spend some time putting the documents into our organized repository.</p>
<p>We identified the benefits of getting data from an organized location.  What if we don&#8217;t do that very often?  If our requirements <em>approvers</em> never have to review the documents, then they don&#8217;t benefit from the effort we spent organizing the documents.  Perhaps we just have a meeting where get verbal approvals, or route them all with an email (Microsoft Outlook lets you put voting buttons on emails) for approval.</p>
<p>If we&#8217;re using a waterfall style project where we document the requirements once, and never change them, then each person on the implementation team can just print out a copy and refer to it when they need it.  Again, no benefit from organization.</p>
<p>We all recognize the costs of both of these approaches, but they do avoid a little bit of busy work.  It&#8217;s possible, however unwise, that some teams will take this approach, and thereby not benefit from organization.  Those teams might operate best at RMM level 1.</p>
<p><strong>The Case For Consistently Formatting Requirements</strong></p>
<p>By using consistent formatting, we make it easier for someone to read multiple requirements.  They can more easily compare and contrast the documented requirements.  They don&#8217;t have to spend cycles re-learning how to read each requirements document.  Once they become familiar with the format, they can ignore it, and spend time on the content of the document.</p>
<p>When we talk about <a title="Writing Consistent Requirements" href="http://tynerblain.com/blog/2006/06/09/big-ten-rules-writing-consistent-requirements/"><em>consistent </em>requirements</a>,  we are generally talking about the logical consistency of the statements within and across requirements &#8211; but the consistency of formatting also has value.  This formatting consistency is what RMM level 2 requires.</p>
<p><strong>Avoiding Consistency</strong></p>
<p>We save some time in training by not requiring people to write consistently.  However, the time we save is probably completely absorbed by the time people spend thinking about how to structure the requirements while writing them.  And we lose the benefits that come from reading requirements that use a consistent format.</p>
<p><strong>Requirements Administration</strong></p>
<p>The final element identified in RMM level 2 is the administrative perspective.  A focus on security, access, and version control is what the IBM team identifies as the relevant administrative issues.</p>
<p>Security and access are identified as elements that engender trust in the documentation.  We may be too agile or too trusting, but we don&#8217;t see those factors as being particularly relevant to trust.  They are certainly valuable when it comes to protecting against unwanted distribution of the information &#8211; but we are not generally concerned with people modifying the documents in unacceptable ways.  We&#8217;ll grudgingly admit that it is possible that a developer will open a requirements document and delete a requirement that he feels is inappropriate, or rewrite it so that it matches his implementation.  We just don&#8217;t think that it is a practical concern.</p>
<p>Version control, however, is very important.  The biggest trust issue we have is in being able to trust that we are reviewing the <em>latest version</em> of a requirements document.  Version control provides us with that benefit.  It also allows us to <em>undo</em> any untoward modifications of the document.  At a minimum, version control should consist of the persistence of previous versions of files.  This can be handled by using unique names for each version of the file, by storing copies of the file on a regular basis as backups, or by using version control.</p>
<p>Subversion is the best version control system (VCS) we know of.   If implementing a new VCS, we suggest using <a title="subversion home page" href="http://subversion.tigris.org/">subversion</a>.  It is open source, easy to administer, and best-of-breed.</p>
<p><strong>Mapping CMMI Levels to RMM Level 2</strong></p>
<p>In our diagram, we show the following mappings for RMM Level 2:</p>
<ul>
<li>CMMI level 0 &#8211; No Entry</li>
<li>CMMI level 1 &#8211; Requirements <strong>Should Be</strong> Organized</li>
<li>CMMI level 2 &#8211; Requirements <strong>Must Be</strong> Organized</li>
<li>CMMI level 3 &#8211; Requirements <strong>Must Be</strong> Organized</li>
<li>CMMI level 4 &#8211; Requirements <strong>Must Be</strong> Organized</li>
<li>CMMI level 5 &#8211; Requirements <strong>Must Be</strong> Organized</li>
</ul>
<p><strong>For CMMI Level 0</strong> &#8211; when our process is so ad-hoc that documentation of requirements is questionable, discussions about how we organize the requirements documents are irrelevant.  We&#8217;re talking about icing and candles when we don&#8217;t even know if we have a cake.</p>
<p><strong>For CMMI Level 1</strong> &#8211; A valuable process must include documentation of requirements.  Those documents really should be organized.  The benefits of versioning alone should make this an easy decision.  Placing the documents in known locations, and having them be written in a consistent format is valuable too.</p>
<p><strong>For CMMI Level 2 and higher</strong> &#8211; When we talk about a managed process, we are talking about bringing order to the chaos.  Centralizing the requirements in a repository, versioning the documents, and using consistent formatting all bring order.</p>
<p>Imagine a managed requirements process that does everything with the exception of applying consistent formatting to our documents.  Perhaps we have various authors of our requirements documents, and they write inconsistently.  There&#8217;s value in doing all of this, but it would be CMMI level 2, RMM level 1.  Only with all three elements (consistent location, consistent formatting, and versioned documents) would the process be both CMMI level 2 and RMM level 2.</p>
<p>We would definitely focus on moving from RMM level 1 to RMM level 2 before we would try and standardize our process across our company.  That standardization would be the move from CMMI level 2 to CMMI level 3.  Based on that perspective, we believe that an RMM level 2 process rating is a mandatory element of all CMMI levels above CMMI level 1.</p>
<p><strong>From a CMMI Level Perspective</strong></p>
<p>The previous analysis basically looked at the “RMM level 2″ column in our grid, and inspected the relative decisions for each “CMMI level” row. Now we will look at it by reviewing the CMMI levels, and seeing how they map to the RMM level.</p>
<p>A quick review of the same chart (so you don’t have to scroll up and down):</p>
<p><img title="CMMI to RMM Mapping" alt="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>At CMMI level 1, we <em>require</em> that requirements be written.  We suggest that they be organized and structured.</p>
<p>At CMMI level 2, we <em>require</em> that the documentation be organized.  A managed process without some form of organization and consistent documentation is a <em>poorly</em> managed process.</p>
<p>At CMMI level 3, we are standardizing our approach across our company. And at CMMI levels 4 and 5 we are measuring and improving on our process. We’ll address the higher CMMI levels in more detail as this series of articles continues.</p>
<p><strong>Summary</strong></p>
<ul>
<li>RMM level 2 specifies that requirements documents are organized.</li>
<li>CMMI level 2 specifies that there is a <em>managed</em> process &#8211; in our case, one for managing requirements.</li>
<li>A process must be at RMM level 2 to be at CMMI level 2.</li>
<li>A process should be at RMM level 3 if it is at CMMI level 1.</li>
</ul>
<p>Note that this implies that we would spend the extra effort to get to CMMI 3 before we would try and reach RMM level 5.</p>
<p>Check out the next article, <a title="CMMI Levels and RMM Level 3 - Structured Requirements" href="http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/"><em>CMMI Levels and RMM Level 3</em></a> or  take our <a title="CMMI Level and RMM Level Polls" href="http://tynerblain.com/2007/02/02/cmmi-and-rmm-survey/"><em>One Minute Survey on CMMI and RMM Levels</em></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+CMMI+Levels+and+RMM+Level+2+%E2%80%93+Organized+Requirements+http%3A%2F%2Fbit.ly%2FhNPPAF+" 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/2007/01/29/cmmi-and-rmm-level-2/&amp;t=CMMI+Levels+and+RMM+Level+2+%E2%80%93+Organized+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/2007/01/29/cmmi-and-rmm-level-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and RMM Level 1 &#8211; Written Requirements</title>
		<link>http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/</link>
		<comments>http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/#comments</comments>
		<pubDate>Sat, 27 Jan 2007 04:27:40 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/</guid>
		<description><![CDATA[In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure.  In this article, we will look at the definition of RMM level 1.  We also cover the tradeoffs and benefits of the practices it requires.  Finally, we look at the mapping from RMM level 1 to various CMMI levels.]]></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%252F2007%252F01%252F26%252Fcmmi-and-rmm-level-1%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20RMM%20Level%201%20-%20Written%20Requirements%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F26%2Fcmmi-and-rmm-level-1%2F", "style": "big", "title": "CMMI Levels and RMM Level 1 - Written Requirements" });</script></div>
<p><img title="First book in stack" alt="First book in stack" src="http://sehlhorst.smugmug.com/photos/125462904-M.jpg" /></p>
<p>In our introduction to mapping RMM levels to CMMI levels, we presented background info on CMMI, introduced the IBM article on RMM levels, and posted an initial mapping structure.  In this article, we will look at the definition of RMM level 1.  We also cover the tradeoffs and benefits of the practices it requires.  Finally, we look at the mapping from RMM level 1 to various CMMI levels.</p>
<p><strong>Background</strong></p>
<p>In our <a title="Mapping CMMI to RMM - Introduction" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">introduction to mapping RMM levels to CMMI levels</a>, we presented <a title="Foundation Series explaining CMMI levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">background info on CMMI</a>, introduced the IBM article on RMM levels, and posted an initial mapping structure.</p>
<p><img alt="CMMI to RMM Mapping" title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p><strong>RMM Level 1 &#8211; Written Requirements</strong></p>
<p>Level 1 of the requirements maturity model is defined at a high level as simply having written requirements.  IBM defines written requirements as <em>persistent</em>  documentation.  They point out that post-it notes and whiteboards don&#8217;t count.  Email discussions, word documents, spreadsheets and presentations all count.</p>
<p>IBM presents an argument of tradeoffs &#8211; as long as the cost of documenting requirements is exceeded by the benefits, it makes sense to write the requirements.  They point out three benefits of having written requirements:</p>
<ol>
<li>A <em>contract</em> is explicit, or <a title="Implicit Requirements" href="http://tynerblain.com/blog/2006/11/17/gathering-implicit-requirements/">implicit in the requirements</a>.  The documented requirements can be used to <a title="Setting Stakeholder Expectations" href="http://tynerblain.com/blog/2006/07/14/communicating-intent-with-stakeholders/">manage the customer&#8217;s expectations</a>, and can also be used to validate that what was promised was delivered.</li>
<li>Clear <a title="Communicating Intent to Implementation Team" href="http://tynerblain.com/blog/2006/07/17/communicating-intent-with-implementers/">direction for the implementation team</a> can be found in the requirements documents.</li>
<li>New team members can rely on the documented requirements as a means to get up to speed.</li>
</ol>
<p>While we strongly agree with the first two points &#8211; we think the third one is a bit of a stretch.  While having requirements documentation does help people get up to speed, it isn&#8217;t a <em>first-order</em> benefit.  Videotape a couple 1-hr presentations.  One presentation discussing the goals of the project, and one discussing (and whiteboarding) the architectural approach of the solution.  Put these on the server and let new people watch them.   Much more cost-effective at helping people get up to speed.  [Note - I'm pretty sure that I heard Alistair Cockburn suggest this approach or something like it in a podcast interview, so the credit for the idea is his, not ours.]</p>
<p>We would also add that documenting requirements is all but worthless if we don&#8217;t use the documents as tools to <a title="Requirements Conversations" href="http://tynerblain.com/blog/2005/12/27/managing-requirements-conversations/">support conversation</a> with our team members.  <a title="Why incremental delivery is good" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">Incremental delivery</a> is a process that is dependent upon feedback.  We must get feedback from stakeholders, and from the implementation team.</p>
<p>Stakeholders will <a title="Verifying Correctness" href="http://tynerblain.com/blog/2006/07/10/verify-correct-requirements/">verify the correctness</a> and <a title="Validating Completeness" href="http://tynerblain.com/blog/2006/07/06/requirement-completeness-validation-with-use-cases/">validate the completeness</a> of the requirements.</p>
<p>The implementation team will provide feedback about the <a title="Writing unambiguous requirements" href="http://tynerblain.com/2006/06/12/writing-unambiguous-requirements/">clarity</a>, <a title="Writing verifiable requirements" href="http://tynerblain.com/2006/06/13/writing-verifiable-requirements/">verifiability</a>, and <a title="Writing attainable requirements" href="http://tynerblain.com/2006/06/07/writing-attainable-requirements/">feasibility</a> of the requirements as written.<br />
Requirements need to be <a title="Writing Verifiable Requirements" href="http://tynerblain.com/blog/2006/06/13/writing-verifiable-requirements/">written to support verification</a>.  The QA team and stakeholders are responsible for verifying that what was delivered is what was expected.  Technically, the delivery <em>must</em> match the requirements &#8211; but the requirements <em>should</em> match the expectations of the customer.</p>
<p><strong>One Step Above Chaos</strong></p>
<p>I like that the IBM guys name level zero as &#8220;Chaos.&#8221;  I&#8217;ve worked as a developer on projects without requirements.  It is chaos.  There&#8217;s a reason we write requirements.  They set expectations.  And theres a reason <a title="Why Requirements Approval Matters" href="http://tynerblain.com/blog/2007/01/09/requirements-approval/">why we review and approve the requirements</a>.  It&#8217;s essentially a form of structured <a title="5 Ways to Improve Your Listening Skills" href="http://tynerblain.com/blog/2006/01/27/top-five-ways-to-be-a-better-listener/">active listening</a>.</p>
<p><strong>Mapping to the CMMI Levels</strong></p>
<p>In our diagram, we show the following mappings for RMM Level 1:</p>
<ul>
<li>CMMI level 0 &#8211; Requirements <strong>Should Be</strong> Written</li>
<li>CMMI level 1 &#8211; Requirements <strong>Must Be</strong> Written</li>
<li>CMMI level 2 &#8211; Requirements <strong>Must Be</strong> Written</li>
<li>CMMI level 3 &#8211; Requirements <strong>Must Be</strong> Written</li>
<li>CMMI level 4 &#8211; Requirements <strong>Must Be</strong> Written</li>
<li>CMMI level 5 &#8211; Requirements <strong>Must Be</strong> Written</li>
</ul>
<p><strong>For CMMI level 0</strong> &#8211; even if we don&#8217;t have a formal process, we <em>really should be</em> writing our requirements &#8211; and using those documents to manage expectations, provide feedback (that we&#8217;re doing the right stuff), and scope and focus our efforts.</p>
<p><strong>For CMMI levels 1 and higher</strong> &#8211;  all of the measured CMMI levels require that we have a defined process.  Even with the disorganization of a team operating at CMMI level 1, we still need to have a process defined.  And a requirements management process that doesn&#8217;t involve documenting the requirements isn&#8217;t worth very much at all.</p>
<p>Note that documentation might be in the form of prototypes, wireframes, and JAD Session notes.  No one is saying that they have to be documented in any particular way.  In fact, at RMM level 1, they aren&#8217;t in a consistent format, and don&#8217;t use a <a title="Introduction to Structured Requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">structured requirements framework</a>.  Consistent formatting is an element of RMM level 2.  And RMM level 3 is focused on structured requirements.</p>
<p>The requirements documents may be scattered through a series of email debates, collaborative databases, and files on network share drives.  That&#8217;s fine for RMM level 1 &#8211; in fact, it is part of the definition of RMM level 1.  Organized requirements are a characteristic of RMM level 2.</p>
<p>Remember &#8211; CMMI Levels only represent <a title="Interpreting CMMI Levels" href="http://tynerblain.com/blog/2006/03/12/what-cmmi-level-should-we-use/">how a process is implemented</a> &#8211; they don&#8217;t characterize the effectiveness of any one process.</p>
<p><strong>From a CMMI Level Perspective</strong></p>
<p>The previous analysis basically looked at the &#8220;RMM level 1&#8243; column in our grid, and inspected the relative decisions for each &#8220;CMMI level&#8221; row.  Now we will look at it by reviewing the CMMI levels, and seeing how they map to the RMM level.</p>
<p>A quick review of the same chart (so you don&#8217;t have to scroll up and down):</p>
<p><img alt="CMMI to RMM Mapping" title="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p>At CMMI level 1, we <em>require</em> that requirements be written.  We suggest that they be organized and structured.</p>
<p>At CMMI level 2, we <em>require</em> that the documentation be organized.  A managed process without some form of organization and consistent documentation is a <em>poorly</em> managed process.</p>
<p>At CMMI level 3, we are standardizing our approach across our company.  And at CMMI levels 4 and 5 we are measuring and improving on our process.  We&#8217;ll address the higher CMMI levels in more detail as this series of articles continues.</p>
<p><strong>Summary</strong></p>
<ul>
<li>RMM level 1 specifies that requirements are documented.</li>
<li>CMMI .evel 1 specifies that there is a process &#8211; in our case, one for managing requirements.</li>
<li>A process must be at RMM level 1 to be at CMMI level 1.</li>
<li>A process should be at RMM level 2 or 3 if it is at CMMI level 1.</li>
</ul>
<p>Note that this implies that we would spend the extra effort to get to CMMI 2 before we would try and reach RMM level 4.</p>
<p>Check out the next article, <a title="CMMI Levels and RMM Level 2 - Organized Requirements" href="http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/"><em>CMMI Levels and RMM Level 2</em></a> or  take our <a title="CMMI Level and RMM Level Polls" href="http://tynerblain.com/2007/02/02/cmmi-and-rmm-survey/"><em>One Minute Survey on CMMI and RMM Levels</em></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+CMMI+Levels+and+RMM+Level+1+%E2%80%93+Written+Requirements+http%3A%2F%2Fbit.ly%2Ffzq4Mv+" 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/2007/01/26/cmmi-and-rmm-level-1/&amp;t=CMMI+Levels+and+RMM+Level+1+%E2%80%93+Written+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/2007/01/26/cmmi-and-rmm-level-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CMMI Levels and Requirements Management Maturity Introduction</title>
		<link>http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/</link>
		<comments>http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/#comments</comments>
		<pubDate>Fri, 26 Jan 2007 04:15:39 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements management software]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[capability maturity model integration]]></category>
		<category><![CDATA[cmm]]></category>
		<category><![CDATA[cmm versus cmmi]]></category>
		<category><![CDATA[cmmi framework]]></category>
		<category><![CDATA[CMMI level 1]]></category>
		<category><![CDATA[cmmi level 3]]></category>
		<category><![CDATA[cmmi level 4]]></category>
		<category><![CDATA[cmmi level2]]></category>
		<category><![CDATA[cmmi level5]]></category>
		<category><![CDATA[cmmi levels]]></category>
		<category><![CDATA[cmmi overview]]></category>
		<category><![CDATA[intro to cmmi]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[requirements management maturity]]></category>
		<category><![CDATA[rmm]]></category>
		<category><![CDATA[rmm framework]]></category>
		<category><![CDATA[sei cmmi]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/</guid>
		<description><![CDATA[CMMI (Capability Maturity Model Integration) is a description of the level of enlightenment of a process.  It is essentially a measure of the quality and capability of a process.  There are five categories, into one of which every process will fall.  IBM took a similar approach to defining the requirements management process.  In this series of posts, we will marry the two frameworks.]]></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%252F2007%252F01%252F25%252Fcmmi-and-rmm-intro%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22CMMI%20Levels%20and%20Requirements%20Management%20Maturity%20Introduction%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F25%2Fcmmi-and-rmm-intro%2F", "style": "big", "title": "CMMI Levels and Requirements Management Maturity Introduction" });</script></div>
<p><img title="Five Levels" alt="Five Levels" src="http://sehlhorst.smugmug.com/photos/125462878-M.jpg" /></p>
<p>Welcome Readers of the <a title="Enterprise Architecture Carnival #3" href="http://enterprisearchitect.typepad.com/ea/2007/02/carnival_of_ent.html"><em>Carnival of Enterprise Architecture</em></a>!  We hope you enjoy this series of articles!</p>
<p>CMMI (Capability Maturity Model Integration) is a description of the level of enlightenment of a process.  It is essentially a measure of the quality and capability of a process.  There are five categories, into one of which every process will fall.  IBM took a similar approach to defining the requirements management process.  In this series of posts, we will marry the two frameworks.</p>
<p><strong>Background on CMMI Levels</strong></p>
<p>We wrote an <a title="Foundation Series on CMMI Levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">introduction to CMMI levels</a> last March.  In our article, we identified that there are five CMMI levels.  Technically, there are six CMMI levels, when you include level zero.  Level 0 is &#8220;undefined&#8221; by the CMMI, and represents an ad hoc process, or a lack of process.</p>
<p><strong>CMMI Levels</strong></p>
<ul>
<li><strong>CMMI Level 0. Undefined</strong>.  No real process.</li>
<li><strong>CMMI Level </strong><strong>1. Performed</strong>.  A process is defined, but disorganized.</li>
<li><strong>CMMI Level </strong><strong>2. Managed</strong>.  A defined process is managed.</li>
<li><strong>CMMI Level </strong><strong>3. Defined</strong>.  A managed process is standardized across the company.</li>
<li><strong>CMMI Level </strong><strong>4. Quantitatively Measured</strong>.  The performance of a standardized process is measured.</li>
<li><strong>CMMI Level </strong><strong>5. Optimizing</strong>.  Performance measurement is used as a feedback loop to improve the process.</li>
</ul>
<p><strong>Take CMMI Levels With A Grain of Salt</strong></p>
<p><img title="Salt Shaker" alt="Salt Shaker" src="http://sehlhorst.smugmug.com/photos/125475259-M.jpg" /></p>
<p>Just knowing the CMMI Level of a process is <em>not</em> enough to know if the process is any good.  By the same token, <a title="What CMMI Level should we use?" href="http://tynerblain.com/blog/2006/03/12/what-cmmi-level-should-we-use/">choosing a particular CMMI level</a>, and meeting the <em>technical</em> requirements of that level are not enough to assure a good process.</p>
<p><strong>Backgroundon RMM Levels</strong></p>
<p>The folks at <a title="RMM Levels" href="http://www.ibm.com/developerworks/rational/library/content/RationalEdge/feb03/ManagementMaturity_TheRationalEdge_Feb2003.pdf">IBM wrote an article in 2003</a>, where they defined five levels of maturity for requirements management processes.  All five of the requirements management maturity (RMM) levels all build on the previous level, with increasing capability.</p>
<ul>
<li><strong>RMM Level 0. Chaos</strong>.  No <em>persistent</em> documentation of requirements.</li>
<li><strong>RMM Level 1. Written Requirements</strong>.  <a title="Writing Good Requirements Documents" href="http://tynerblain.com/blog/2006/05/25/writing-good-requirements-the-big-ten-rules/">Writing requirements documents</a> (not emails and whiteboards).</li>
<li><strong>RMM Level 2. Organized Requirements</strong>.  Colocation, versioning, consistent formatting.</li>
<li><strong>RMM Level 3. Structured Requirements</strong>.  Defining <a title="Foundation Series on Structured Requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">types of requirements</a> and their relationships.</li>
<li><strong>RMM Level 4. Traced Requirements</strong>.  Explicitly mapping the support-network of requirements.</li>
<li><strong>RMM Level 5. Integrated Requirements</strong>.  Integrating with the development environment and change management.</li>
</ul>
<p><strong>What IBM Didn&#8217;t Do</strong></p>
<p>They didn&#8217;t map their framework back into the CMMI framework (known as <em>CMM</em> at the time) except for the following comment in the introduction of their article:</p>
<blockquote><p>Those familiar with the CMM (Capability Maturity Model) from the Software Engineering Institute (SEI) will note some similarities to our parallel model, which has no direct relationship to the CMM save one: Achieving Level Five of the RMM will assuredly help an organization get to at least Level Three of the CMM.</p></blockquote>
<p>IBM put together a great framework for describing elements of <em>increasingly capable</em> requirements management processes.</p>
<p>That is what the SEI tried to do when they developed the CMMI.  Why couldn&#8217;t the IBM team just map their framework into the CMMI framework?</p>
<p><em>The problem is there is a mismatch between the two frameworks.</em></p>
<ul>
<li>The RMM framework describes steps and elements of a requirements management process.  Each step adds a level of capability to the process.  It might be more aptly named the requirements management <em>capability </em>framework.</li>
<li>The CMMI framework describes the strategic capabilities (maturity) of how a process is applied, without assessing the tactical capabilities of the process itself.</li>
</ul>
<p>The SEI recognized that the analysis of the tactical capabilities of any process would be different for every process, and left it to others to perform that work.  This is <em>almost</em> what the IBM team did.  We&#8217;re going to take a crack at it here.</p>
<p><strong>Mapping RMM Levels to CMMI Levels</strong></p>
<p>This is the first in a series of articles that will present a mapping of RMM levels to CMMI levels.  We like using CMMI as a means to evaluate our internal processes, notwithstanding the <a title="Challenges of using CMMI" href="http://tynerblain.com/blog/2006/03/12/what-cmmi-level-should-we-use/">challenges</a> we mentioned earlier.  We also like the framework that IBM presented for describing requirements management processes.</p>
<p><strong>Shoot First, Ask Questions Later</strong></p>
<p>There&#8217;s a lot more to write about this than we can put into a single article.  We&#8217;re going to tackle this as a series.  Even so, we put together an initial draft of how we think this will ultimately work out.  We&#8217;ll share that here now.  But we reserve the right to fix it when we find problems as we (and you!) put more effort into it.</p>
<p><img title="CMMI to RMM Mapping" alt="CMMI to RMM Mapping" src="http://sehlhorst.smugmug.com/photos/125472473-M.jpg" /><br />
(<a title="CMMI to RMM Mapping - Full Size" href="http://sehlhorst.smugmug.com/photos/125472463-M.jpg">larger version</a>)</p>
<p><strong>Articles In This Series</strong></p>
<ul>
<li><a title="Introduction to CMMI Levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">Foundation Series: CMMI Levels Explained</a></li>
<li><a title="What CMMI Level to Use" href="http://tynerblain.com/blog/2006/03/12/what-cmmi-level-should-we-use/">What CMMI Level Should We Use?</a></li>
<li><a title="Introduction to Mapping the RMM to the CMMI" href="http://tynerblain.com/blog/2007/01/25/cmmi-and-rmm-intro/">CMMI Levels and RMM Introduction</a></li>
<li><a title="Mapping RMM Level 1 to CMMI" href="http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/">CMMI Levels and RMM Level 1 &#8211; Written Requirements</a></li>
<li><a title="CMMI Levels and RMM Level 2 - Organized Requirements" href="http://tynerblain.com/blog/2007/01/29/cmmi-and-rmm-level-2/">CMMI Levels and RMM Level 2 &#8211; Organized Requirements</a></li>
<li><a title="CMMI Levels and RMM Level 3 - Structured Requirements" href="http://tynerblain.com/blog/2007/01/30/cmmi-and-rmm-level-3/">CMMI Levels and RMM Level 3 &#8211; Structured Requirements</a></li>
<li><a title="CMMI Levels and RMM Level 4 - Traced Requirements" href="http://tynerblain.com/blog/2007/01/31/cmmi-and-rmm-level-4/">CMMI Levels and RMM Level 4 &#8211; Traced Requirements</a></li>
<li><a title="CMMI Levels and RMM Level 5 - Integrated Requirements" href="http://tynerblain.com/blog/2007/02/01/cmmi-and-rmm-level-5/">CMMI Levels and RMM Level 5 &#8211; Integrated Requirements</a></li>
<li>Don&#8217;t forget to take our <a title="Quick Poll on CMMI and RMM Levels" href="http://tynerblain.com/blog/2007/02/02/cmmi-and-rmm-survey/">One Minute Survey on CMMI and RMM</a>.</li>
</ul>

<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+CMMI+Levels+and+Requirements+Management+Maturity+Introduction+http%3A%2F%2Fbit.ly%2FdE8Bce+" 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/2007/01/25/cmmi-and-rmm-intro/&amp;t=CMMI+Levels+and+Requirements+Management+Maturity+Introduction" 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/2007/01/25/cmmi-and-rmm-intro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Code Debt: Neither A Borrower&#8230;</title>
		<link>http://tynerblain.com/blog/2007/01/12/code-debt/</link>
		<comments>http://tynerblain.com/blog/2007/01/12/code-debt/#comments</comments>
		<pubDate>Sat, 13 Jan 2007 04:25:23 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[code debt]]></category>
		<category><![CDATA[incremental development]]></category>
		<category><![CDATA[iterative development]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[quality and functionality]]></category>
		<category><![CDATA[technical debt]]></category>
		<category><![CDATA[timebox]]></category>
		<category><![CDATA[timeboxes]]></category>
		<category><![CDATA[timeboxing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/12/code-debt/</guid>
		<description><![CDATA[Code Debt is the debt we incur when we write sloppy code.  We might do this to rush something out the door, with the plan to refactor later.  Agile methodologies focus on delivering functionality quickly.  They also invoke a mantra of refactoring - "make it better next release."  This can create pressure to "get it done" that overwhelms the objective of "get it done right."  Taking on code debt like this is about as smart as using one credit card to pay off another one.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F01%252F12%252Fcode-debt%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Code%20Debt%3A%20Neither%20A%20Borrower...%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F12%2Fcode-debt%2F", "style": "big", "title": "Code Debt: Neither A Borrower..." });</script></div>
<p><img alt="Loan Application" title="Loan Application" src="http://sehlhorst.smugmug.com/photos/122784977-M.jpg" /></p>
<p>Code Debt is the debt we incur when we write sloppy code.  We might do this to rush something out the door, with the plan to refactor later.  Agile methodologies focus on delivering functionality quickly.  They also invoke a mantra of refactoring &#8211; &#8220;make it better next release.&#8221;  This can create pressure to &#8220;get it done&#8221; that overwhelms the objective of &#8220;get it done right.&#8221;  Taking on code debt like this is about as smart as using one credit card to pay off another one.</p>
<p><strong>Using Timeboxes to Visualize Pressure</strong></p>
<p>In our <a title="How To Use Timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">timeboxing tutorial</a>, we introduced a framework for managing releases and the amount of work we do within each release.  We can apply the same framework to visualize the pressure that makes us consider borrowing against our future to take on a code debt.<br />
Here&#8217;s a quick summary of the concepts from that article.</p>
<p>Each unit of functionality that we deliver in a product or release is made up of two elements &#8211; the time it takes to make it, and the time it takes to make it right.  We can think of this as <em>function</em> and <em>quality</em> respectively.  We;ve drawn them as puzzle pieces to show that they are (or at least <em>should be</em>) locked together.  When a developer gives an estimate, it should be for the combination of function and quality &#8211; not quality alone.</p>
<p><img alt="function and quality" title="function and quality" src="http://sehlhorst.smugmug.com/photos/122787759-M.png" /></p>
<p>A timebox represents the amount of time and money we allocate for a given release.  It basically determines the size of the box that we can fill up with our units.</p>
<p><img alt="timebox" title="timebox" src="http://sehlhorst.smugmug.com/photos/122787298-M.png" /></p>
<p>In our article, we talked about the options we have to try and get more &#8220;stuff&#8221; delivered in a single timebox.  One obviously bad option is to decouple the <em>quality</em> from the <em>functionality</em> in order to deliver more functionality.</p>
<p><img alt="plan for bad quality" title="plan for bad quality" src="http://sehlhorst.smugmug.com/photos/122787304-M.png" /></p>
<p>Several people essentially said &#8220;No one would ever plan on bad quality &#8211; that&#8217;s a bad suggestion!&#8221;</p>
<p>We agree &#8211; it is a bad idea.  We were merely pointing out that it is something people consider.  Especially managers who&#8217;ve never read <em>The Tipping Point</em>, and don&#8217;t know about &#8220;broken windows.&#8221;  &#8220;Broken windows&#8221; in this case is a reference to the downward pressure that is applied to all future development efforts by forcing developers to work on a code base that has a lot of &#8220;low quality code.&#8221;  The idea is that if we skip the quality part enough times, we will eventually stop caring at all.</p>
<p>We also agree that rational people won&#8217;t make a habit out of using this approach.  However, there is another way we could find ourselves in this situation.</p>
<p>What if our estimates were wrong?  In the middle of the timebox, we suddenly find ourselves without enough time / people to finish.</p>
<p><img alt="missed estimates" title="missed estimates" src="http://sehlhorst.smugmug.com/photos/122787035-M.png" /></p>
<p>In the highlighted region of the diagram, we can see that the feature on the left took longer than we expected &#8211; and it pushed out the red/orange feature.  There isn&#8217;t enough room in our timebox to get it all done.</p>
<p><strong>Guilty</strong></p>
<p>We&#8217;ve even suggested that <em>maybe</em> the right thing to do is to take a loan against ourselves and incur a code debt.</p>
<blockquote><p>There are times when incurring a temporary code-debt is pragmatically more useful than <a title="Using timeboxes (including code-debt discussion)" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">delaying a release or a feature</a> in order to polish the code.</p>
<p><cite><a title="critique of a list of twenty rules" href="http://tynerblain.com/blog/2006/12/07/software-product-delivery-rules/"><em>Software Product Delivery &#8211; 20 Rules?</em></a></cite></p></blockquote>
<p>I&#8217;ve also argued against code-debt as a long term strategy, in the comments on another post.</p>
<blockquote><p>I definitely agree that code-debt builds over time and gets more and more expensive. Plus there’s the risk of the whole ‘broken windows’ problem that Malcolm Gladwell outlines in <em>The Tipping Point</em>. I visualize it like the graph for a cascading diode &#8211; you can build up more and more code-debt (or design-debt, as you describe in the link), with its associated performance penalty, until you reach the ‘critical voltage’ and flood the diode. At this point, it becomes impractical to refactor &#8211; rewriting becomes more cost effective.</p>
<p><cite><a title="The Agile Dragon" href="http://tynerblain.com/blog/2006/05/04/the-agile-dragon/"><em>The Agile Dragon</em></a></cite></p></blockquote>
<p>So, we&#8217;ve stated that it might be a pragmatically good idea in the short run, and definitely a bad idea in the long run.  But how do we crystalize the message that it is <em>risky</em>?  With another good analogy.</p>
<p><strong>Another Good Analogy</strong></p>
<p>We owe our thanks to Mishkin for this extension of the &#8220;code debt&#8221; analogy that brings perfect clarity to the issue.</p>
<blockquote><p>Last night I was thinking more about the analogy of technical debt. In this analogy, design and quality flaws in a team&#8217;s work become a &#8220;debt&#8221; that must eventually be paid back.</p>
<p>[...]</p>
<p>In other words, every time someone asks a team to let quality slide, they are asking the team (and the organization) to take on debt with an unknown interest rate. Which is lunacy.</p>
<p><cite><a title="Technical Debt" href="http://www.agileadvice.com/archives/2006/12/technical_debt.html"><em>Technical Debt</em>, Mishkin Berteig</a></cite></p></blockquote>
<p>Thanks Mishkin!</p>
<p><strong>Conclusion</strong></p>
<p>Technical debt is very risky.  Maybe it is the right call in the short run (but assume it isn&#8217;t).  It is never the right call in the long run.</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+Code+Debt%3A+Neither+A+Borrower%E2%80%A6+http%3A%2F%2Fbit.ly%2Ff5dT2j+" 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/2007/01/12/code-debt/&amp;t=Code+Debt%3A+Neither+A+Borrower%E2%80%A6" 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/2007/01/12/code-debt/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Crossing The Desert With Bad Project Planning</title>
		<link>http://tynerblain.com/blog/2007/01/04/crossing-the-desert/</link>
		<comments>http://tynerblain.com/blog/2007/01/04/crossing-the-desert/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 04:00:23 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[CMMI]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[effort allocation]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[incremental delivery]]></category>
		<category><![CDATA[iterative development]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[pm]]></category>
		<category><![CDATA[scheduling]]></category>
		<category><![CDATA[scope creep]]></category>
		<category><![CDATA[testable requirements]]></category>
		<category><![CDATA[timeboxing]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[verifiable requirements]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/01/04/crossing-the-desert/</guid>
		<description><![CDATA[Johanna Rothman recently wrote an article with a poignant introduction: "A project team focuses on an interim milestone, works like the devil to meet that milestone. They meet the milestone, look up, and realize they're not at the end of the project--they still have to finish the darn thing. They're living the Crossing the Desert syndrome."  Fixing it isn't enough - how do we prevent it from happening?]]></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%252F2007%252F01%252F04%252Fcrossing-the-desert%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Crossing%20The%20Desert%20With%20Bad%20Project%20Planning%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F01%2F04%2Fcrossing-the-desert%2F", "style": "big", "title": "Crossing The Desert With Bad Project Planning" });</script></div>
<p><img src="http://sehlhorst.smugmug.com/photos/120885944-M.jpg" /></p>
<p>Johanna Rothman recently wrote an <a title="crossing the desert syndrome" href="http://www.jrothman.com/weblog/2007/01/crossing-desert-syndrome.html">article</a> with a poignant introduction: &#8220;A project team focuses on an interim milestone, works like the devil to meet that milestone. They meet the milestone, look up, and realize they&#8217;re not at the end of the project&#8211;they still have to finish the darn thing. They&#8217;re living the Crossing the Desert syndrome.&#8221;  Fixing it isn&#8217;t enough &#8211; how do we prevent it from happening?</p>
<p><strong>Unrealistic Scheduling</strong></p>
<p>Johanna points out that when a team has to put in overtime (what we might call <em>heroic efforts</em>) to achieve an interim milestone in a project, the remaining project schedule is suspect.  Johanna reccommends revisiting the remaining schedule, and we agree.</p>
<p><strong>Recovery</strong></p>
<p><img src="http://sehlhorst.smugmug.com/photos/120886637-M.jpg" /></p>
<p>Johanna also highlights the way to recover &#8211; give the people on the project a break.  Have them move back to 40 hour weeks if they were working overtime.  Force them to take the weekends off if they weren&#8217;t already.  In short, restore a rational schedule.  If people worked through vacations or holidays, require them to take the time off.</p>
<p>Its been said that it takes <a title="article on recovery times" href="http://www.alternet.org/story/16611/">two weeks of down time</a> to recover from work-burnout.  Extending the desert analogy that Johanna credits to Jack Nevison of Oak Associates, we&#8217;ve reached the oasis in the middle of the desert, and we need to stay there long enough to rest and rehydrate.</p>
<p><img src="http://sehlhorst.smugmug.com/photos/120886639-M.jpg" /></p>
<p>Unfortunately, we&#8217;re still in the middle of the desert, and the rush to reach the oasis presumably had merit.  If a project schedule is so intense that we have created the need for recovery in the middle of the project, the likelihood of having two weeks to recover is low.  Whatever drove us to push to reach the oasis is still driving us, so resting for too long will only make it worse.  And we&#8217;re still in the middle of the desert.  We need to focus on prevention.</p>
<p><strong>Prevention</strong></p>
<p><img title="irrigation to prevent desert" alt="irrigation to prevent desert" src="http://sehlhorst.smugmug.com/photos/120890165-M.jpg" /></p>
<p>We can&#8217;t always prevent the impetus to work long hours on a project.  We can manage our execution in a way that reduces the chances of feeling like we&#8217;re crossing a desert.</p>
<ul>
<li><strong>Improved estimation of tasks</strong>.  Entire books are written about this topic, we won&#8217;t try and summarize ways to do this in a single blog post.</li>
<li><strong>Realistic effort allocation</strong>.  When scheduling how many hours a day a developer can be &#8220;on task&#8221;, our experience has been that 5 to 6 hours is the maximum (when working full time or a little more).  For requirements work, this might even be a little bit aggressive.</li>
<li><strong>Writing <a title="Writing Verifiable Requirements" href="http://tynerblain.com/blog/2006/06/13/writing-verifiable-requirements/">verifiable</a> requirements</strong>.  We need requirements that specify (or at least allow us to identify) when we&#8217;re done.  <a title="Scope Creep and Relationships" href="http://tynerblain.com/blog/2006/03/13/managing-scope-creep-is-not-a-zero-sum-game/">Scope creep</a> isn&#8217;t always implementing more features, it can be <em>over-implementing</em> features.  With test-driven development (TDD) processes, the tests are written first (they fail), and the developer writes code until the tests pass.  Once the tests pass, the code is done.  Doing this requires us to <a title="Dealing with Untestable Requirements" href="http://tynerblain.com/blog/2005/11/30/how-to-deal-with-untestable-requirements-rewrite-them/">write testable requirements</a>.  Practically speaking, this may only be realistic when using a <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> approach to code development.</li>
<li><strong>Managing smaller work chunks</strong>.  <a title="original timeboxing article" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">Timeboxing</a> (<a title="extended timeboxing article at productmarketing.com" href="http://www.productmarketing.com/productmarketing/magazine/4/5/0610ss.asp">more details</a>) is very effective for controlling the size of iterations.  Iterations are important not only for the <a title="Benefits of incremental delivery" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">feedback cycle</a>, but because they reduce the size of the &#8220;desert patches.&#8221;</li>
<li><strong>Feedback into the estimation cycle</strong>.  Timeboxes become even more effective when we <a title="Scrum technique applied to business analysis" href="http://tynerblain.com/blog/2006/09/29/burndown/">keep track of our estimation</a> accuracy, and refine those estimates on the fly to help in replanning future releases.  This is a key step in the maturation of a process or company from a <a title="Foundation Series on CMMI" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">CMMI perspective</a>.</li>
<li><strong>Better communication of release content</strong>.  Planning releases <a title="Communicating a Release Schedule with Use Cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">based on use cases</a> / <a title="Incremental Delivery and Use Case Versions" href="http://tynerblain.com/blog/2006/12/12/incremental-delivery-and-use-cases/">use case versions</a> is a great way to target communication for external (to the team) stakeholders.  It can also be really effective for helping people avoid the desert-crossing syndrome.  Essentially you&#8217;re providing a map (&#8220;The next watering hole is just over that sand dune&#8221;) that helps keep efforts in context.  One reason the desert image is so powerful is that we imagine being lost in a sea of sand &#8211; the hopelessness is a function of both the reality and the perception.  Better communication helps address perceptions, while other elements help with the reality.</li>
</ul>
<p><strong>Conclusion</strong></p>
<p>Overworking the team is bad.  Burning them out in the middle of the project is worse.  Prevention is the solution, through iterative development, better communication, and improved estimation/planning skills.</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+Crossing+The+Desert+With+Bad+Project+Planning+http%3A%2F%2Fbit.ly%2FgsRTto+" 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/2007/01/04/crossing-the-desert/&amp;t=Crossing+The+Desert+With+Bad+Project+Planning" 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/2007/01/04/crossing-the-desert/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Software Product Delivery &#8211; 20 Rules?</title>
		<link>http://tynerblain.com/blog/2006/12/07/software-product-delivery-rules/</link>
		<comments>http://tynerblain.com/blog/2006/12/07/software-product-delivery-rules/#comments</comments>
		<pubDate>Fri, 08 Dec 2006 04:00:30 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[CMMI]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[delivery rules]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[prioritizing requirements]]></category>
		<category><![CDATA[requirements prioritization]]></category>
		<category><![CDATA[software developer]]></category>
		<category><![CDATA[software product delivery rules]]></category>
		<category><![CDATA[writing requirements]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/12/07/software-product-delivery-rules/</guid>
		<description><![CDATA[Rishikesh Tembe shared twenty rules for software product delivery last month. His rules are from the perspective of a former software developer. Some we like.  Some, not so much.]]></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%252F2006%252F12%252F07%252Fsoftware-product-delivery-rules%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Software%20Product%20Delivery%20-%2020%20Rules%3F%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F12%2F07%2Fsoftware-product-delivery-rules%2F", "style": "big", "title": "Software Product Delivery - 20 Rules?" });</script></div>
<p><img title="comedy and tragedy" alt="comedy and tragedy" src="http://sehlhorst.smugmug.com/photos/91902702-M.jpg" /></p>
<p>Rishikesh Tembe shared twenty rules for software product delivery last month.  His rules are from the perspective of a former software developer. Some we like.  Some, not so much.</p>
<p><strong>We Like</strong></p>
<p>Rishikesh has a short post with <a title="20 rules" href="http://productmusings.wordpress.com/2006/11/05/20-rules-for-delivering-software-products/">20 rules</a>.  Among those rules are some concepts that we feel like expanding upon:</p>
<blockquote><p>8. Do the riskiest part of the project first.</p></blockquote>
<p>This is a great idea (for developers and project managers) for a couple reasons.  Risk may be a function of technical feasibility or customer accceptance/value.  Risk may even be an <a title="No silver bullet" href="http://tynerblain.com/blog/2006/12/05/software-silver-bullet/">artifact of how we go about developing</a> our product &#8211; for example, <a title="offshoring models" href="http://tynerblain.com/blog/2006/03/31/four-outsourcing-models-for-software-development/">offshoring</a> introduces risks.  Risk is generally a nebulous, but bad thing to have in a project.  If a problem is known, a solution can be identified, addressed, and implemented.</p>
<p>Risks represent the <em>unknown unknowns</em>, or those problems that we don&#8217;t understand well enough to address them.  Big risks can be very scary &#8211; they jeopardize the <a title="Definition of ROI" href="http://tynerblain.com/blog/2006/02/01/definition-of-roi-return-on-investment/">ROI</a> of our project.  Lack of user adoption can affect the <a title="Definition of expected value" href="http://tynerblain.com/blog/2006/02/03/definition-of-expected-value/">expected value</a> to our customers, which will directly or indirectly affect our bottom line.</p>
<p><strong>Note:</strong> This is not meant to imply that <a title="Prioritizing across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">prioritization of requirements by release</a> should be subservient to risk-mitigation.  The <a title="Prioritizing Requirement" href="http://tynerblain.com/blog/2006/02/17/prioritizing-software-requirements-am-i-hot-or-not/">most important stuff</a> should always be done first.  <a title="Release Scheduling" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">Within a particular release</a>, address the riskiest issues first.  <a title="Prioritizing by ROI" href="http://tynerblain.com/blog/2006/02/04/using-roi-for-requirements-is-a-risky-business/">Prioritize first</a>.  Mitigate second.</p>
<blockquote><p>10. Make sure you’re in total control of your toolset and improve it systematically</p></blockquote>
<p>This alludes to the general benefits of operating at a higher CMMI level.  As a <a title="Foundation Series on CMMI Levels" href="http://tynerblain.com/blog/2006/03/10/foundation-series-cmmi-levels-explained/">CMMI level five</a> organization, we would quantitatively measure and improve not only our tools but our processes.</p>
<blockquote><p>16. Build regression testing into the build process.</p></blockquote>
<p>We&#8217;ve talked about <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> in the past.  In our opinion, no other approach should be used to develop software.</p>
<p><strong>Not So Much</strong></p>
<blockquote><p>11. Do not take the clients’ deadlines literally &#8211; first accept the project, then renegotiate the deadline.</p></blockquote>
<p>Clients have deadlines for reasons.  They may be market-driven, or driven by internal politics or budget cycles.  While it is possible that a deadline is arbitrary, it is usually associated with a compelling event of some sort.  Any discussion of deadlines should be approached in the same way we <a title="Managing scope creep" href="http://tynerblain.com/blog/2006/03/13/managing-scope-creep-is-not-a-zero-sum-game/">manage <em>scope creep</em> as a relationship-building exercise</a>.</p>
<p>Project constraints, such as budgets and deadlines, are things that should be addressed collaboratively.  Our clients are our partners, not our opposition.</p>
<blockquote><p>13. Document the interfaces perfectly, but don’t document code (see next point).<br />
14. Be fanatical about the readability of code.</p></blockquote>
<p>Absolutes are rarely rational end-points, although presenting goals as absolutes can be effective in motivating <em>directional change</em> in an organization (with no expectation of actually achieving the goal).  More on that some other time.</p>
<p>Broken Windows, as Gladwell describes them, are absolutely detractors from any environment, and serve to degrade the performance of those who operate in the environment.  Code readability, micro kitchens, flexible schedules.  There are many <em>soft ROI</em> elements that make up the environment of a software developer.  Readability of code, like <a title="Writing for the purpose of reading" href="http://tynerblain.com/blog/2006/10/04/writing-for-the-purpose-of-reading/">readability of requirements</a>, is important.  A friend of mine used to joke that perl is a &#8220;write-only&#8221; language.  Notwithstanding his joke, code needs to be readable.  Even in perl.</p>
<p>Perl serves as a great example &#8211; elegance of code does not always coincide with syntactic simplicity.  Avoiding commenting of the code is just a bad idea.  People read code.  Make it readable.</p>
<p>There are times when incurring a temporary code-debt is pragmatically more useful than <a title="Using timeboxes (including code-debt discussion)" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">delaying a release or a feature</a> in order to polish the code.</p>
<p><strong>Conclusion</strong></p>
<p>There are some good ideas and some bad ones in the list.  Most of them are thought provoking, regardless.  We may eventually find a list of absolute rules we should all follow, and it would overlap with this list somewhat.  But for now, we&#8217;re still looking.</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+Software+Product+Delivery+%E2%80%93+20+Rules%3F+http%3A%2F%2Fbit.ly%2FfBI7YR+" 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/2006/12/07/software-product-delivery-rules/&amp;t=Software+Product+Delivery+%E2%80%93+20+Rules%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/2006/12/07/software-product-delivery-rules/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Software Silver Bullet</title>
		<link>http://tynerblain.com/blog/2006/12/05/software-silver-bullet/</link>
		<comments>http://tynerblain.com/blog/2006/12/05/software-silver-bullet/#comments</comments>
		<pubDate>Wed, 06 Dec 2006 03:45:11 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[buy v build]]></category>
		<category><![CDATA[buy vs build]]></category>
		<category><![CDATA[frederick brooks]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[people trump process]]></category>
		<category><![CDATA[software changeability]]></category>
		<category><![CDATA[software complexity]]></category>
		<category><![CDATA[software conformity]]></category>
		<category><![CDATA[software invisibility]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/12/05/software-silver-bullet/</guid>
		<description><![CDATA["I believe the hard part of building software to be the specification, design, and testing of this conceptual construct,[...] If this is true, building software will always be hard. There is inherently no silver bullet." - Frederick P. Brooks, Jr.  1987]]></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%252F2006%252F12%252F05%252Fsoftware-silver-bullet%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Software%20Silver%20Bullet%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F12%2F05%2Fsoftware-silver-bullet%2F", "style": "big", "title": "Software Silver Bullet" });</script></div>
<p><img title="silver bullet" alt="silver bullet" src="http://sehlhorst.smugmug.com/photos/115072736-M.jpg" /></p>
<blockquote><p>&#8220;I believe the hard part of building software to be the specification, design, and testing of this conceptual construct,[...] If this is true, building software will always be hard. There is inherently  no silver bullet.&#8221;<br />
<cite><a title="There is no silver bullet" href="http://www-inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html">Frederick P. Brooks, Jr.</a> Computer Magazine, Apr 1987</cite></p></blockquote>
<p><strong>Hat Tip To Joel</strong></p>
<p>Joel Spolsky wrote an article, <a title="Mainstream Media doesn't get it" href="http://www.joelonsoftware.com/items/2006/12/05.html">Lego Programming</a>, about how mainstream media gets it wrong.  And he ended the article with an interesting quote:</p>
<blockquote><p>None of them believed <a href="http://www-inst.eecs.berkeley.edu/%7Emaratb/readings/NoSilverBullet.html">Frederick P. Brooks</a>, in 1987: “Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any—no inventions that will do for software productivity, reliability, and simplicity what electronics, transistors, and large-scale integration did for computer hardware[...]&#8221;</p>
<p><cite>Spolsky quoting Brooks<br />
</cite></p></blockquote>
<p>I used to have a department manager who regularly asked for <em>silver bullets</em> &#8211; not metaphorically, literally.  So I just had to check out Mr. Brooks&#8217; <a title="No Silver Bullet" href="http://www-inst.eecs.berkeley.edu/~maratb/readings/NoSilverBullet.html">article</a>.</p>
<p><strong>Brooks in 1987</strong></p>
<p>Any article about software that still rings true after almost 20 years is amazing.  Brooks starts us off right away with his conjecture that the big problem of complexity in software will never be solved.  He proposes that an order of magnitude improvement might be found, but that the problem will never go away.  Never?  We still have the problem today.</p>
<p>Brooks identifies elements of the <em>essence</em> of software that make it forever a were-wolf (no silver bullet).</p>
<ul>
<li><strong>Complexity</strong>.  Brooks cites the non-linear increase in complexity of software with size of software.  Even with OO constructs and abstraction layers, this is still true today.  With a decade of enterprise software experience, I will vouch for this, in terms of complexity versus &#8220;size of the software.&#8221;  The recent thread on <a title="Fifteen Ways to Shut Down Windows Vista" href="http://tynerblain.com/blog/2006/11/23/fifteen-ways-to-shut-down/">Vista&#8217;s shutdown options</a> is another good example &#8211; not because there are so many ways to do it, but rather because the team spent over a year implementing it.  As to complexity vs. &#8220;value of the software&#8221;, I&#8217;m not certain it is non-linear.  Applications are getting larger (generally), but the amount of value they provide is growing much faster.  Not cause-and-effect, but correlating.  Businesses are re-engineering to utilize software in their processes.  Those savings are large, and inferring from the increases in spending on software, are more valuable than in the past.  Is achieving &#8220;the same value&#8221; easier today than twenty years ago?  Yes.  So much so that we don&#8217;t even try to do it &#8211; we try to do harder, more valuable stuff.</li>
<li><strong>Conformity</strong>.  Brooks argues that there are no guiding principles that cause software engineers to conform (stylistically, representationally, etc).  Therefore, they will spend some cycles dealing with &#8220;arbitrary complexity.&#8221;  Fair point.</li>
<li><strong>Changeability</strong>.  Software becomes complex because it can.  Brooks points out that cars don&#8217;t change often, because it isn&#8217;t easy to change them.  Software has no such barrier.  If you&#8217;ve ever spent time on a working farm, and seen the myriad of wonderful things that can be accomplished with bailing wire, twine, and duct tape, you know that the impetus to change things is not limited to software.  Without the natural barriers enjoyed by manufactured goods, software will be changeable, and therefore hard.</li>
<li><strong>Invisibility</strong>.  Brooks argues that because of the representational power of software, we represent constructs that we inherently can not visualize.  Some smart physicists at Nicholas Copernicus University <a title="Multidimensional analysis" href="http://www.phys.uni.torun.pl/publications/kmk/96-sommds.pdf">agree</a>, and spend considerable effort &#8220;simplifying&#8221; multi-dimensional data into a framework we can accept.</li>
</ul>
<p>Brooks discusses several advances in software, and approaches that people hope will be a silver bullet.  He posits that none of them have been or will be (as of 1987).  We&#8217;re approaching two decades later, and none of them have.  There are some prescient quotes in his article.</p>
<p><strong>Effective Strategies</strong></p>
<p>Brooks also discusses some effective strategies to change the essence of software complexity and find a silver bullet.</p>
<p><strong>1. Buy Vs. Build</strong></p>
<p>He proposes a very outside-the-box solution &#8211; don&#8217;t build the software, buy it.  Buying customized software is not what Brooks proposes.  That would be no more effective than Kanban was (shifting the overhead burden onto suppliers who subsequently raised prices).  He proposes using non-customized software, and adapting business processes to those supported by the off-the-shelf software.</p>
<p><strong>2. Requirements Refinement and Rapid Prototyping</strong></p>
<p>His opening paragraph is a very strong statement &#8211; and one we agree with:</p>
<blockquote><p>The hardest single part  of building a software system is deciding precisely what to build. No other part  of the conceptual work is as difficult as establishing the detailed technical  requirements, including all the interfaces to people, to machines, and to other  software systems. No other part of the work so cripples the resulting system if  done wrong. No other part is more difficult to rectify later.</p></blockquote>
<p>Brooks goes on to make a statement that seems eerily similar to one I&#8217;ve <a title="Beck and Cooper debate about software" href="http://tynerblain.com/blog/2006/03/07/interaction-design-explained-by-alan-cooper/">heard Kent Beck say</a>:</p>
<p>I would go a step further and assert that it is really impossible for a  client, even working with a software engineer, to specify completely, precisely,  and correctly the exact requirements of a modern software product before trying  some versions of the product.</p>
<p>From this perspective, Brooks promotes <a title="Two big benefits of incremental delivery" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">incremental development</a> as the right approach.  In 1987!</p>
<p><strong>3. Great Designers</strong></p>
<p>We&#8217;ve always said that people trump process.  Brooks said it first.</p>
<p><strong>Conclusion</strong></p>
<p>Software is hard.  Requirements are harder.  Nothing (according to Brooks) will ever change that.</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+Software+Silver+Bullet+http%3A%2F%2Fbit.ly%2FfoVJyt+" 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/2006/12/05/software-silver-bullet/&amp;t=Software+Silver+Bullet" 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/2006/12/05/software-silver-bullet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skip The Requirements, Empower The Developers</title>
		<link>http://tynerblain.com/blog/2006/11/30/skip-the-requirements/</link>
		<comments>http://tynerblain.com/blog/2006/11/30/skip-the-requirements/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 03:00:07 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[customer feedback]]></category>
		<category><![CDATA[empowered developers]]></category>
		<category><![CDATA[feedback cycles]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements specification]]></category>
		<category><![CDATA[software product success]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/11/30/skip-the-requirements/</guid>
		<description><![CDATA[Enough of the debates about requirements and what we call them.  Why don't we just hire great developers and empower them to work directly with the customers?]]></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%252F2006%252F11%252F30%252Fskip-the-requirements%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Skip%20The%20Requirements%2C%20Empower%20The%20Developers%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F11%2F30%2Fskip-the-requirements%2F", "style": "big", "title": "Skip The Requirements, Empower The Developers" });</script></div>
<p><img title="stop sign" alt="stop sign" src="http://sehlhorst.smugmug.com/photos/113835009-M.jpg" /></p>
<p>Enough of the debates about requirements and what we call them.  Why don&#8217;t we just hire great developers and empower them to work directly with the customers?</p>
<p><strong>Lost Garden</strong></p>
<p>Danc, at Lost Garden has an article that asks just this question, and addresses the challenges of <a title="lost garden" href="http://lostgarden.com/2006/11/passion-of-developers.html">directly empowering developers</a>.</p>
<p>A couple quotes to set the tone of their article:</p>
<blockquote><p>What would happen if the developers possessed a deep understanding of their customers needs and desires? Suddenly, those thousand little decisions aren’t introducing random noise into the product. Instead, they are pushing the product forward.</p></blockquote>
<p>And&#8230;</p>
<blockquote><p><span class="fullpost">One philosophy is that we need better specs and those damned monkeys need to implement the specs exactly as designed. Better command and control system and more rigorous process is obviously the trick to success. This tends to generate poor results.</span></p></blockquote>
<p><strong><span class="fullpost" />Getting Closer To The Customer</strong></p>
<p>Danc offers these tips to help the developers get closer to their customers:</p>
<ul>
<li>Use your own product</li>
<li>Onsite customers</li>
<li>Observe customers using your product</li>
<li>Hire psychologists and ethnologists to study your customers</li>
<li>Listen to lead users</li>
<li>Reduce feedback cycle time</li>
<li>Improve objectivity of results</li>
<li>Improve clarity of results</li>
</ul>
<p>The only inconsistent point in his article seems to be the suggestion about using ethnologists.  Don&#8217;t they present a barrier to developers in the same way that a product manager would by synthesizing and prioritizing &#8220;the voice of the customer?&#8221;</p>
<p>Freeing developers from a job where they are coding &#8220;to spec&#8221; will definitely empower the developers.  I believe that having someone trained in prioritization and interpretation of needs (a product manager, for example) can help keep the team aligned on the important stuff by providing insight into what is important.  This is the same argument for having &#8220;experts&#8221; interpret customer behaviors.</p>
<p>Check it out.</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+Skip+The+Requirements%2C+Empower+The+Developers+http%3A%2F%2Fbit.ly%2FeSAS26+" 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/2006/11/30/skip-the-requirements/&amp;t=Skip+The+Requirements%2C+Empower+The+Developers" 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/2006/11/30/skip-the-requirements/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

