<?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>Thu, 02 Sep 2010 21:53:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Agile Maturity Model &#8211; What&#8217;s Next?</title>
		<link>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/</link>
		<comments>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 23:29:49 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile maturity model]]></category>
		<category><![CDATA[business agility]]></category>
		<category><![CDATA[CMMI]]></category>
		<category><![CDATA[maturity model]]></category>
		<category><![CDATA[rmm]]></category>

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

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

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

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next...+http://bit.ly/5zy42+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/06/30/agile-maturity-model/&amp;t=Agile+Maturity+Model+%E2%80%93+What%E2%80%99s+Next..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/06/30/agile-maturity-model/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>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, we looked at [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2008%252F10%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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+The+Impact+of+a+Hidden+Decision+http://bit.ly/4N2e0+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/10/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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.  Here [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Hidden+Business+Rule+Example+http://bit.ly/1NACjf+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/09/23/hidden-business-rule-example/feed/</wfw:commentRss>
		<slash:comments>3</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 great people [...]]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Product+Managers+and+Information+Flow+http://bit.ly/2JwxeF+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Smart+Enough+Systems+%E2%80%93+Interview+With+James+Taylor+http://bit.ly/ECy0w+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/feed/</wfw:commentRss>
		<slash:comments>1</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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+and+RMM+One+Minute+Survey+http://bit.ly/1nD5pM+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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%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", "style": "big", "title": "CMMI Levels and RMM Level 5 - Integrated Requirements" });</script></div>
<p><img alt="Book 5 in a stack of 5 books" title="Book 5 in a stack of 5 books" src="http://sehlhorst.smugmug.com/photos/125462917-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 5. We also look at the mapping from RMM level 5 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/2007/01/30/cmmi-and-rmm-level-3/" /><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<br />
</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" 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 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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+RMM+Level+5+%E2%80%93+Integrated+Requirements+http://bit.ly/4xkIuc+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+RMM+Level+4+%E2%80%93+Traced+Requirements+http://bit.ly/3gkojz+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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 of RMM [...]]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+RMM+Level+3+%E2%80%93+Structured+Requirements+http://bit.ly/1k4FIK+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+RMM+Level+2+%E2%80%93+Organized+Requirements+http://bit.ly/Anvqd+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+RMM+Level+1+%E2%80%93+Written+Requirements+http://bit.ly/kc99W+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/01/26/cmmi-and-rmm-level-1/feed/</wfw:commentRss>
		<slash:comments>0</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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+CMMI+Levels+and+Requirements+Management+Maturity+Introduction+http://bit.ly/7mLbl+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Code+Debt%3A+Neither+A+Borrower...+http://bit.ly/zsl0n+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/01/12/code-debt/&amp;t=Code+Debt%3A+Neither+A+Borrower..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Crossing+The+Desert+With+Bad+Project+Planning+http://bit.ly/4bFpx+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Software+Product+Delivery+%E2%80%93+20+Rules...+http://bit.ly/gwLBp+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/12/07/software-product-delivery-rules/&amp;t=Software+Product+Delivery+%E2%80%93+20+Rules..." title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Software+Silver+Bullet+http://bit.ly/wWKuO+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></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>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Skip+The+Requirements%2C+Empower+The+Developers+http://bit.ly/11xFNV+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/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/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/11/30/skip-the-requirements/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Burndown Bullied Into Business Analysis</title>
		<link>http://tynerblain.com/blog/2006/09/29/burndown/</link>
		<comments>http://tynerblain.com/blog/2006/09/29/burndown/#comments</comments>
		<pubDate>Sat, 30 Sep 2006 03:44:24 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[burndown]]></category>
		<category><![CDATA[burndown requirements gathering]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[measuring requirements analysis]]></category>
		<category><![CDATA[reporting]]></category>
		<category><![CDATA[reporting requirements]]></category>
		<category><![CDATA[requirements analysis reporting]]></category>
		<category><![CDATA[requirements status]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[status reporting]]></category>
		<category><![CDATA[tracking requirements]]></category>
		<category><![CDATA[tracking status]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/29/burndown/</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F29%2Fburndown%2F", "style": "big", "title": "Burndown Bullied Into Business Analysis" });

Burndown is a technique used in Scrum projects for tracking the progress within or across sprints.  It is an exciting way to track how a team is progressing against a deadline &#8211; and we can apply it to any form of project-status.  [...]]]></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%252F09%252F29%252Fburndown%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Burndown%20Bullied%20Into%20Business%20Analysis%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F29%2Fburndown%2F", "style": "big", "title": "Burndown Bullied Into Business Analysis" });</script></div>
<p><img title="burndown visual" alt="burndown visual" src="http://sehlhorst.smugmug.com/photos/98832527-M.jpg" /></p>
<p>Burndown is a technique used in Scrum projects for tracking the progress within or across sprints.  It is an exciting way to track how a team is progressing against a deadline &#8211; and we can apply it to any form of project-status.  In this article, we will apply it to documenting business processes.</p>
<p><strong>Thanks in Advance</strong></p>
<p>Thanks in advance to <a title="Yahoo's intro to scrum" href="http://www.agileadvice.com/archives/2006/09/intro_to_scrum.html">Mishkin</a> for pointing us to a great pdf about Scrum from Yahoo.  Also thanks to Michael Cohn of Mountain Goat Software, for his<a title="Burndown across sprints" href="http://www.mountaingoatsoftware.com/scrum/altburndown.php"> innovative extension of burndown</a> for tracking progress across iterations.  The clear explanations and differing applications of this simple visualization technique are inspiring.  We plan to use burndown for tracking progress on our current project.</p>
<p><strong>Tracking Business Analaysis</strong></p>
<p>Consider a project involving a team of business analysts, defining as-is processes and requirements for a portion of a large enterprise software deployment project.  This project is helping a company <a title="Organizing a migration project" href="http://tynerblain.com/blog/2006/03/15/organizing-a-software-migration-project/">migrate from a legacy system</a> to a new solution.</p>
<p>For this hypothetical process, assume that we are documenting 50 as-is processes, with an average <a title="Estimating as-is documentation efforts" href="http://tynerblain.com/blog/2006/09/28/estimating-as-is/">estimate of 10 hours</a> of business analyst effort per process &#8211; or a 500 hour chunk of work.  With 5 analysts working 5 &#8220;on-task&#8221; hours per day, that translates to 125 hours of capacity per week &#8211; or a 4 week cycle for the team.<br />
<strong>Linear Forecast</strong></p>
<p>The burndown principal is that we&#8217;re tracking a fixed amount of work, over a fixed amount of time.  What is interesting is that we don&#8217;t monitor how much work we&#8217;ve done &#8211; just how much work we have remaining.  This is important, because effort already spent is a sunk cost, and should not drive our decisions.  We should focus on the time remaining to complete the committed deliverables.</p>
<p><strong>Erratic Progress </strong></p>
<p>Even if we spend five hours per day on a task, we will not be eliminating five hours of remaining work each day.  Estimates are never perfect.  We discover unanticipated problems along the way that increase our estimates of remaining work.  We have brilliant ideas that can save time &#8211; reducing our estimates of remaining work.</p>
<p><strong>The Ah-Ha! Visual</strong></p>
<p>Combine the ideas of a linear forecast with the notion of tracking time <em>remaining</em> instead of time <em>spent</em>.  Then track daily updates of estimated time remaining.</p>
<p><img title="burndown graph" alt="burndown graph" src="http://sehlhorst.smugmug.com/photos/98842056-M.jpg" /></p>
<p><em>Velocity </em>is what scrum practicioners call the reduction in remaining work per unit time.  Visually, this is the slope of the curve.  The steeper the slope, the greater the velocity (imagine a downhill skier), and the greater the progress.  We&#8217;ve zoomed in on the first half of the burndown graph in the chart above.  The <em>remaining</em> line is our current estimate of remaining effort (the solid red line).  The <em>forecasted</em> line is the original &#8220;project management&#8221; forecast of equal progress every day.  We can take away a few observations from the visual:</p>
<ul>
<li>When the <em>remaining </em>line (solid red) is above the <em>forecast </em>line (dashed blue), we are behind schedule.</li>
<li>When the slope of the <em>remaining</em> line is steeper than the <em>forecast</em> line, we are gaining ground.  When shallower, we are losing ground.</li>
<li>The gap between the two lines shows exactly how far ahead or behind schedule we are.</li>
</ul>
<p><strong>The Excitement</strong></p>
<p>This <a title="Targeted Status Reporting" href="http://tynerblain.com/blog/2006/04/24/targeted-communication-status-reporting/">clear communication of status</a> allows our project manager to know exactly how we&#8217;re doing.  It also allows our team to see exactly how we&#8217;re doing, and makes it easy to visualize goals like &#8220;make up lost ground&#8221; as well as providing nearly instant feedback.  When the <em>remaining</em> line deviates significantly from the <em>forecast</em> line, we can revisit schedules and scope.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Burndown+Bullied+Into+Business+Analysis+http://bit.ly/177Ge5+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/29/burndown/&amp;t=Burndown+Bullied+Into+Business+Analysis" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/29/burndown/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Insight Into Test Driven Development</title>
		<link>http://tynerblain.com/blog/2006/09/12/insight-into-tdd/</link>
		<comments>http://tynerblain.com/blog/2006/09/12/insight-into-tdd/#comments</comments>
		<pubDate>Wed, 13 Sep 2006 04:55:20 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Software requirements specification]]></category>
		<category><![CDATA[Test Automation]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[james kovacs]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[requirements specification]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/09/12/insight-into-tdd/</guid>
		<description><![CDATA[James Kovacs shares a great insight on software testing and the software testing process.  His epiphany about test driven development makes it obvious to all of us why this technique is so powerful.]]></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%252F09%252F12%252Finsight-into-tdd%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Insight%20Into%20Test%20Driven%20Development%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F09%2F12%2Finsight-into-tdd%2F", "style": "big", "title": "Insight Into Test Driven Development" });</script></div>
<p><img title="lightbulb" alt="lightbulb" src="http://sehlhorst.smugmug.com/photos/52406790-M.jpg" /></p>
<p>James Kovacs shares a great insight on software testing and the software testing process.  His epiphany about test driven development makes it obvious to all of us why this technique is so powerful.</p>
<p><strong>TDD</strong></p>
<p>Test driven development is an approach to software development where you write the tests first, and the code second.  This sounds ludicrous at first, but it really does work.  Here&#8217;s James&#8217; epiphany on the subject (emphasis added).</p>
<blockquote><p>I didn&#8217;t understand why TDD practitioner were so zealous about writing the tests first. Why did it matter? I thought it was to ensure that some project manager doesn&#8217;t try to shave some time off the project by cutting the unit tests. Then I started doing some reading about TDD, poking around, asking questions, and trying it out myself. <strong>I discovered the real reason for writing tests first is that TDD isn&#8217;t about testing code, it&#8217;s about designing code.</strong></p>
<p><cite><a title="TDD Article" href="http://www.jameskovacs.com/blog/ATaleOfTwoEpiphaniesTDDAndMocking.aspx">A Tale of Two Epiphanies: TDD and Mocking, James Kovacs</a></cite></p></blockquote>
<p>These tests are <a title="Foundation series on unit testing" href="http://tynerblain.com/blog/2006/01/19/foundation-series-unit-testing-software/">unit tests</a>, and they are <a title="Blackbox vs whitebox tests" href="http://tynerblain.com/blog/2006/01/13/software-testing-series-black-box-vs-white-box-testing/">black-box tests</a> (or at least <em>should be</em> black-box tests &#8211; read <a title="james' article" href="http://www.jameskovacs.com/blog/ATaleOfTwoEpiphaniesTDDAndMocking.aspx">James&#8217; article</a>).</p>
<p><strong>Works Great With Structured Requirements</strong></p>
<p>Not only is this a great way to approach design, but it is a great way to coordinate software development with <a title="Foundation series on structured requirements" href="http://tynerblain.com/blog/2006/01/04/foundation-series-structured-requirements/">structured requirements</a>.  A well-written requirement describes a need <a title="Writing Design-Free Requirements" href="http://tynerblain.com/blog/2006/06/02/writing-design-free-requirements/">without specifying design</a>.  This description then works like a black-box contract.  The implementer then must do <em>something</em> that meets the specification given.  As James points out, TDD is very effective at creating <a title="Foundation series on blackbox testing and whitebox testing" href="http://tynerblain.com/blog/2006/01/12/foundation-series-black-box-and-white-box-software-testing/">black-box tests</a>.</p>
<p>This makes sense, when you consider the outside-in approach that comes from starting with requirements.  This outside in approach leads to API decisions (for a program or module or method).  The API has to support all of the required possible inputs and outputs.  Once an API is written, tests can be written.</p>
<p><strong>Best Applied As Part Of Continuous Integration For Larger Teams</strong></p>
<p>All of the tests will fail (because the code hasn&#8217;t been written).  Then the implementer will write code until the tests pass.  Using a <a title="Foundation series on continuous integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration approach</a> is a very effective way for entire teams to do this simultaneously on larger projects.</p>
<p><strong>Faster Processes</strong></p>
<p>We can also validate the design for completeness prior to creating the implementation.  We can compare the generated APIs (and their rationalizations) with the software specification (or application requirements, or FRS&#8230; see <a title="Variations of Requirements Documents" href="http://tynerblain.com/blog/2006/08/24/alphabet-soup/">alphabet soup article</a>).  This allows us to address some refactoring needs before the code has been implemented &#8211; saving time and money.</p>
<p><strong>Conclusion</strong></p>
<p>Use TDD as an outside-in approach that assures that the delivered software will meet the objectives of the requirements specification.  It also saves time and money by supporting validation in advance of implementation.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Insight+Into+Test+Driven+Development+http://bit.ly/ZI8gI+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/09/12/insight-into-tdd/&amp;t=Insight+Into+Test+Driven+Development" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/09/12/insight-into-tdd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Agile Offshore Teams Work</title>
		<link>http://tynerblain.com/blog/2006/08/23/making-agile-offshore-teams-work/</link>
		<comments>http://tynerblain.com/blog/2006/08/23/making-agile-offshore-teams-work/#comments</comments>
		<pubDate>Thu, 24 Aug 2006 04:56:19 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[agile offshore development]]></category>
		<category><![CDATA[agile process]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[offshore]]></category>
		<category><![CDATA[offshore development]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/08/23/making-agile-offshore-teams-work/</guid>
		<description><![CDATA[Agile processes stress communication and colocation.  Splitting a team into on and offshore resources inhibits the first and prevents the second.  Teams struggle to resolve this apparent conflict of interest.  Applying best practices (for any team) to address these challenges makes it possible.  Martin Fowler provides us with great guidance based on years of experience with his company.]]></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%252F08%252F23%252Fmaking-agile-offshore-teams-work%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Making%20Agile%20Offshore%20Teams%20Work%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F08%2F23%2Fmaking-agile-offshore-teams-work%2F", "style": "big", "title": "Making Agile Offshore Teams Work" });</script></div>
<p><img title="western gymnast" alt="western gymnast" src="http://sehlhorst.smugmug.com/photos/90302040-M.jpg" /><img title="eastern dancer" alt="eastern dancer" src="http://sehlhorst.smugmug.com/photos/90302039-M.jpg" /></p>
<p>Agile processes stress communication and colocation.  Splitting a team into on and offshore resources inhibits the first and prevents the second.  Teams struggle to resolve this apparent conflict of interest.  Applying best practices (for any team) to address these challenges makes it possible.  Martin Fowler provides us with great guidance based on years of experience with his company.</p>
<p><strong>Agile and Offshore</strong></p>
<p><a title="Cockburn on the agile manifesto" href="http://tynerblain.com/blog/2006/05/10/agile-values-alistair-cockburn-on-the-agile-manifesto/">To be agile</a> means more than just having an incremental delivery process.  Agility is built on communication &#8211; ideally face to face communication.  Technology has all but eliminated the communication barriers of geographically distributed teams.  But technology can&#8217;t solve the problem of <em>temporal displacement</em> that comes with teams operating in different time zones.</p>
<p><a title="Agile Requirements" href="http://tynerblain.com/blog/2005/12/05/agile-requirements/">Communication starts with requirements</a> and moves through development and testing.  In an incremental delivery process, this is a continuous, cyclical process with small elements of functionality being processed in each cycle.  Offshore teams &#8211; and most outsourced teams, regardless of location, prefer a more <em>contract-based</em> relationship.  These supplier-consumer type relationships are traditionally managed through delivery against a specification.  Martin calls this a <em>plan-driven</em> process in <a title="Martin's article on offshore and agile" href="http://martinfowler.com/articles/agileOffshore.html">his article</a>.</p>
<p>To be offshore and agile, we have to avoid the extremes and follow the best of both approaches.  We have to recognize a couple immutable truths about the operating theater of splitting a team across the planet:</p>
<ul>
<li>Communication is not real-time.  While there is some overlap, we must account for asynchronous communication between team members.</li>
<li>Cultural barriers are just that &#8211; barriers.  We can surmount them, but only after first acknowledging them.</li>
</ul>
<p><strong>Martin&#8217;s Guidance</strong></p>
<p>Martin provides <a title="Agile Offshore by Martin Fowler" href="http://martinfowler.com/articles/agileOffshore.html">a fantastic (and long) article</a> about how his company has made it work.  Here are some of the key points from Martin&#8217;s article, along with our commentary.</p>
<ul>
<li><strong>Use <a title="Foundation Series on Continuous Integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">Continuous Integration</a></strong>.  Martin points out how effective this is (for any team) at preventing the integration problems that come up in any large or complex software project.  Those integration problems, when not prevented, are solved through collaboration and communication.  Since the teams are seperated temporally as well as geographically, these interchanges become very inefficient.  The key is to prevent the problems, in order to avoid the inefficiencies of solving them without colocated collaborators.</li>
<li><strong>Cross-Pollinate the Teams</strong>.  Don&#8217;t just send some people over to the &#8220;secondary&#8221; location to get things started.  Rotate key contributors through month+ stays at the remote site to establish an ongoing rapport and relationship.  Martin also suggests having recurring visits from other team members both to initiate and cultivate relationships.  It is these relationships that build the foundation for informal and effective communication.</li>
<li><strong>Organize by Feature, not Function</strong>.  Avoid the <a title="Four Models for Software Development" href="http://tynerblain.com/blog/2006/03/31/four-outsourcing-models-for-software-development/">traditional offshoring approach</a> of doing analysis onshore, construction offshore, and then testing onshore.  This &#8220;waterfall model&#8221; serves to create <em>political</em> barriers between the teams, as hand-offs and responsibilities lend themselves to finger-pointing when things go wrong.  Martin suggests that we try and distribute work so that each team can own as much of the process as possible for each given feature.  Splitting the work this way improves the efficiency of communication within each cycle.</li>
</ul>
<p>There is <em>a lot</em> more in Martin&#8217;s article.  Check it out!</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Making+Agile+Offshore+Teams+Work+http://bit.ly/DVIrH+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/08/23/making-agile-offshore-teams-work/&amp;t=Making+Agile+Offshore+Teams+Work" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/08/23/making-agile-offshore-teams-work/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
