<?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; Project Management</title>
	<atom:link href="http://tynerblain.com/blog/category/project-management/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Wed, 08 Feb 2012 16:38:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Agile Estimation, Prediction, and Commitment</title>
		<link>http://tynerblain.com/blog/2011/08/09/agile-estimation/</link>
		<comments>http://tynerblain.com/blog/2011/08/09/agile-estimation/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 06:32:33 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[User Stories]]></category>
		<category><![CDATA[agile estimation]]></category>
		<category><![CDATA[agile prediction]]></category>
		<category><![CDATA[agile release planning]]></category>
		<category><![CDATA[cone of uncertainty]]></category>
		<category><![CDATA[project planning]]></category>
		<category><![CDATA[release planning]]></category>

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

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Agile+Estimation%2C+Prediction%2C+and+Commitment+http%3A%2F%2Fbit.ly%2FnUdL7S+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2011/08/09/agile-estimation/&amp;t=Agile+Estimation%2C+Prediction%2C+and+Commitment" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2011/08/09/agile-estimation/feed/</wfw:commentRss>
		<slash:comments>100</slash:comments>
		</item>
		<item>
		<title>Most Engaging Articles of 2009</title>
		<link>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/</link>
		<comments>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 07:00:18 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Administrivia]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[top ten list]]></category>
		<category><![CDATA[tyner blain]]></category>

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

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Most+Engaging+Articles+of+2009+http%3A%2F%2Fbit.ly%2F4QJ30i+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/&amp;t=Most+Engaging+Articles+of+2009" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2010/01/05/most-engaging-articles-of-2009/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Advanced PERT Estimation</title>
		<link>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/</link>
		<comments>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 03:30:54 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[advanced pert]]></category>
		<category><![CDATA[pert estimate]]></category>
		<category><![CDATA[pert estimation]]></category>

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

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Advanced+PERT+Estimation+http%3A%2F%2Fbit.ly%2FaJU10m+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/&amp;t=Advanced+PERT+Estimation" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2009/06/18/advanced-pert-estimation/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Stakeholders in a Barrel</title>
		<link>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/</link>
		<comments>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 05:52:57 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[effective communication]]></category>
		<category><![CDATA[stakeholder expectations]]></category>
		<category><![CDATA[stakeholder goals]]></category>
		<category><![CDATA[stakeholders]]></category>

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

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Stakeholders+in+a+Barrel+http%3A%2F%2Fbit.ly%2FdWsjGe+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/&amp;t=Stakeholders+in+a+Barrel" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/12/30/stakeholders-in-a-barrel/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Effective Status Reports</title>
		<link>http://tynerblain.com/blog/2008/09/03/effective-status-reports/</link>
		<comments>http://tynerblain.com/blog/2008/09/03/effective-status-reports/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 02:44:07 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[communicating]]></category>
		<category><![CDATA[status reporting]]></category>
		<category><![CDATA[status reports]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/?p=698</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F09%2F03%2Feffective-status-reports%2F", "style": "big", "title": "Effective Status Reports" }); An effective status report is one that Instantly conveys the state of the project. Creates a minimum of overhead for the project team. Gets you help when you need it, and latitude when you don&#8217;t. Is fun / energizing to the author and the readers. [...]]]></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%252F03%252Feffective-status-reports%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Effective%20Status%20Reports%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F09%2F03%2Feffective-status-reports%2F", "style": "big", "title": "Effective Status Reports" });</script></div>
<p><img src="http://photos.smugmug.com/photos/365186523_ws2xg-L.jpg" alt="forecast" width="271" height="200" /></p>
<p>An effective status report is one that</p>
<ul>
<li>Instantly conveys the state of the project.</li>
<li>Creates a minimum of overhead for the project team.</li>
<li>Gets you help when you need it, and latitude when you don&#8217;t.</li>
<li>Is fun / energizing to the author and the readers.</li>
</ul>
<p>An effective status report is not a myth, it is actually easy to achieve.</p>
<p><span id="more-698"></span></p>
<h2>Goals of a Status Report</h2>
<p>You do not create a status report because someone told you to create them.  You create a status report <em>only</em> when it benefits the project.  There are three effective uses of a status report:</p>
<ol>
<li>Get help (escalating) when you need help.</li>
<li>Keep stakeholders <em>in the loop</em> so there are no surprises.</li>
<li>Get visibility for the accomplishments of the people on your team.</li>
</ol>
<h2>Problems of a Status Report</h2>
<p>There are also potential downsides of creating status reports.  This doesn&#8217;t mean you should avoid creating a status report.  It means you should avoid status report mistakes.</p>
<ol>
<li>A bad status report takes a lot of energy (and time) to write, making it expensive.</li>
<li>A bad status report is difficult to read, causing it to fail to communicate.</li>
<li>A bad status report covers up problems or cries &#8220;Wolf!&#8221; when things are under control.</li>
</ol>
<h2>Elements of an Effective Status Report</h2>
<p>The following is one example of an effective status report format.  Other formats can work.  This one does.  We&#8217;ve been using it for months on multiple projects, with great success.  On one of our projects, the first status report in this format was <em>forwarded around</em> by the project sponsor for people to &#8220;check this out!&#8221;  Ever hear of that happening to one of your status reports before?  In a good way?</p>
<p>There are five components in this status report format.</p>
<ol>
<li>The scannable forecast.</li>
<li>Last week&#8217;s accomplishments.</li>
<li>This week&#8217;s planned accomplishments.</li>
<li>Issues and resolutions.</li>
<li>The legend.</li>
</ol>
<h2>The Legend</h2>
<p>Normally, we run through a list in order.  In this case, we will show the last section first.  The legend explains how to read the first section, the <em>scannable forecast</em>.</p>
<p><img src="http://photos.smugmug.com/photos/365186571_9KzE4-O.jpg" alt="status report legend" width="645" height="249" /></p>
<p>You can define any number of different statuses for a project.  &#8220;Red, Yellow, Green&#8221; is the most common.  A couple years ago, we proposed <a title="status reporting" href="http://tynerblain.com/blog/2006/04/24/targeted-communication-status-reporting/">this metaphor for status reporting</a>:</p>
<blockquote><p>A great way to do this is with a stoplight metaphor (at least in the US, where green = go, yellow = caution, red = stop). We can provide a little color in our reports to make the status details and rollup easy to scan. When someone is the audience of a status report, its because the reader needs to know what is going on, but isn’t involved &#8211; and likely is reading status reports from other teams. We need to present a document that gives a quick visual that guides the reader to pay attention to the most critical elements.</p>
<ul>
<li>Red.  Immediate action (by the reader) is required to fix this.</li>
<li>Yellow. We’re at risk of failing to meet expectations. There’s a plan in place, but we thought you should know. Want to know more?</li>
<li>Green.  Meeting or exceeding the plan.  No need to spend cycles on this one.</li>
</ul>
<p>[Update 28 Apr 2007: We have a much improved <a title="Project Dashboard Icons" href="../2007/02/23/project-dashboard-icons/">metaphor for tracking project status - <em>weather forecasting</em></a>.]</p></blockquote>
<p>It works, but it isn&#8217;t great.  You&#8217;ve all seen it, because it is adequate.  However, using red, yellow, and green to provide a <em>scannable</em> status can be confusing &#8211; even if your readers aren&#8217;t colorblind.  Does red mean the project is delayed?  Yellow usually means a project is at risk.  But is it &#8220;at risk, help is needed&#8221; or &#8220;at risk, FYI, help is not needed.&#8221;  That&#8217;s part of why we recommended the weather forecasting metaphor.  Thanks again to <a title="johanna's article" href="http://www.stickyminds.com/s.asp?F=S10522_COL_2">Johanna Rothman</a> for originally sharing the idea.</p>
<h2>The Scannable Forecast</h2>
<p><img src="http://photos.smugmug.com/photos/365186523_ws2xg-L.jpg" alt="forecast" width="271" height="200" /></p>
<p>When you look at the above, even without knowing any details  you know:</p>
<ol>
<li>The project is in worse shape this week than it was last week.</li>
<li>The project will get worse before it gets better.</li>
<li>The team has it under control, today, but might need help next week.</li>
</ol>
<h2>Last Week&#8217;s Accomplishments</h2>
<p>The bulleted list is extremely effective for scannable details.  The secret &#8211; use three to five bullets.  More bullets means you&#8217;re sharing too much, and fewer than three is not enough.  You&#8217;re reporting to a project sponsor who has placed trust in you to manage the details.  Your sponsor, when things are <em>sunny</em> may not even read the details, just relying on you to say &#8220;everything is great.&#8221;  The only time that you need to share more details is when things are stormy.  And those details (1) will come up in the issues section, and (2) will come up in conversation.</p>
<p>When someone on your team does something noteworthy, dedicate one of your bullets to that accomplishment.  If you have a dozen of these, then refine your definition of <em>noteworthy</em>.  You should already be providing feedback to your team about their work.  <em>Noteworthy</em> accomplishments should be broadcast up the chain.  Its a reward for their hard work.  Don&#8217;t under-report, and don&#8217;t over-report.  The people who consistently do great things will begin to get a positive reputation where it counts.  As a bonus, you will get acknowledgment for being a good manager.</p>
<h2>This Week&#8217;s Planned Accomplishments</h2>
<p>This is what you intend to do in the next week.  When your project sponsor does want to get a little more insight, perhaps to make sure that she believes that you will resolve things, she will read these details.  Again &#8211; a three to five item bulleted list is appropriate.</p>
<h2>Issues And Resolutions</h2>
<p>You report issues when you are (or anticipate being) cloudy or stormy.  You don&#8217;t waste your sponsor&#8217;s time on trivial issues that you can resolve on your own.  These are issues that either definitely require escalation, or may require escalation.  Again, you&#8217;re working a three to five item list.  On your project, you will potentially manage ten times as many risks, and you could track them in a spreadsheet, etc.  Those are the issues <em>you</em> are working.  These are the issues you need help to resolve.  And only the issues you need help to resolve.</p>
<p>Note that this isn&#8217;t just an <em>issues</em> section &#8211; it is issues and resolutions.  When you inform a stakeholder that you need help with a problem, the first thing you need to do is propose a solution.  Imagine the following exchange:</p>
<blockquote><p>&#8220;I need help&#8221; &#8211; &#8220;What do you need?&#8221; &#8211; &#8220;I need you to &#8230;.&#8221;</p></blockquote>
<p>Much better than</p>
<blockquote><p>&#8220;I need help&#8221; &#8211; &#8220;What do you need?&#8221; &#8211; &#8220;I don&#8217;t know.  I need help determining what I need.&#8221; &#8211; &#8220;I know what you need, you need help updating your resume.&#8221;</p></blockquote>
<p>For every issue, propose a solution.</p>
<p>The issue section is also not meant to be a standalone document.  Here&#8217;s another bad exchange:</p>
<blockquote><p>&#8220;I need help&#8221; &#8211; a couple days go by &#8211; &#8220;I solved <em>your </em>problem <em>for you</em>.  And I&#8217;m replacing you with someone I can rely on.&#8221;</p></blockquote>
<p>Your project sponsor shouldn&#8217;t have to ask what you need her to do.  She should, however, want to know <em>why</em> you think the proposed solution is best &#8211; and you should talk to her about it, not present a rationale within your status report.</p>
<h2>Practical Experience</h2>
<p>I&#8217;ve created many status reports using this format.  They take anywhere from 15 minutes to 45 minutes, almost always under 30 minutes.  When they did take any significant time, almost all of that time was spent in thinking about the content to report in the &#8220;Planned Accomplishments&#8221; section.  And that is not time that I spent writing a status report &#8211; it is time I spent planning, on those occasions where I procrastinated in my planning, and the writing of the status report triggered a brief planning exercise.</p>
<p>Brevity in a report goes a long way.  As does regular face-to-face (or at least phone-to-phone) conversation.  A status report alone better not be the only way you communicate.  It should be a light-weight artifact that (1) starts the important conversations, (2) preempts the time-wasting conversations, and (3) provides an archive that you can review later, to see the full arc of the project, gain insights, and run your next project even more effectively.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Effective+Status+Reports+http%3A%2F%2Fbit.ly%2FepIukn+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/09/03/effective-status-reports/&amp;t=Effective+Status+Reports" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/09/03/effective-status-reports/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Successful Products: Lucky or Intentional?</title>
		<link>http://tynerblain.com/blog/2008/05/19/successful-products/</link>
		<comments>http://tynerblain.com/blog/2008/05/19/successful-products/#comments</comments>
		<pubDate>Tue, 20 May 2008 03:03:47 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[empirical processes]]></category>
		<category><![CDATA[feedback]]></category>
		<category><![CDATA[market identification]]></category>
		<category><![CDATA[product roadmaps]]></category>
		<category><![CDATA[product success]]></category>
		<category><![CDATA[rolling wave planning]]></category>
		<category><![CDATA[software product success]]></category>

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

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Successful+Products%3A+Lucky+or+Intentional%3F+http%3A%2F%2Fbit.ly%2FgVLce9+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/05/19/successful-products/&amp;t=Successful+Products%3A+Lucky+or+Intentional%3F" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/05/19/successful-products/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Recycling An Article on Timeboxing Your Project Plan</title>
		<link>http://tynerblain.com/blog/2008/04/03/timeboxes-take-two/</link>
		<comments>http://tynerblain.com/blog/2008/04/03/timeboxes-take-two/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 03:25:07 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[project planning]]></category>
		<category><![CDATA[time box]]></category>
		<category><![CDATA[time boxed]]></category>
		<category><![CDATA[time boxing]]></category>
		<category><![CDATA[timebox]]></category>
		<category><![CDATA[timeboxed]]></category>
		<category><![CDATA[timeboxing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2008/04/03/timeboxes-take-two/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F04%2F03%2Ftimeboxes-take-two%2F", "style": "big", "title": "Recycling An Article on Timeboxing Your Project Plan" }); We’re dedicating our “blogging time” this week to doing some infrastructure upgrades &#8211; we have to address some security issues on the site. Until we get through these changes, we’ll be recycling some of our existing content. For our recent [...]]]></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%252F04%252F03%252Ftimeboxes-take-two%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Recycling%20An%20Article%20on%20Timeboxing%20Your%20Project%20Plan%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2008%2F04%2F03%2Ftimeboxes-take-two%2F", "style": "big", "title": "Recycling An Article on Timeboxing Your Project Plan" });</script></div>
<p><img title="recycling" alt="recycling" src="http://sehlhorst.smugmug.com/photos/174257363_XH3Ya-L.jpg" /></p>
<p>We’re dedicating our “blogging time” this week to doing some infrastructure upgrades &#8211; we have to address some security issues on the site. Until we get through these changes, we’ll be recycling some of our existing content. For our recent readers, it will be “new to you” and for our long time readers, we appreciate your patience. Today we look at one of our most popular articles &#8211; on using Timeboxes to manage your project plan.</p>
<p><span id="more-656"></span></p>
<h3><a title="timeboxed project plan" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">How To Use Timeboxes for Scheduling Software Delivery</a></h3>
<p><img title="time in a box" alt="time in a box" src="http://sehlhorst.smugmug.com/photos/64224831-M.jpg" /></p>
<p>A timebox is a fixed unit of development capacity. An easy way to visualize a timebox is as a two-dimensional graph. Along the vertical axis is the cost of the development team (per unit time). Along the horizontal axis is time. The longer an iteration is, the wider a timebox is.</p>
<p><img alt="fixed capacity" title="fixed capacity" src="http://sehlhorst.smugmug.com/photos/64224627-M.png" /></p>
<p>The important thing to notice is that with Cost and Time fixed, the capacity of the timebox is fixed. There is only so much that can be accomplished with a given team and a given amount of time.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Recycling+An+Article+on+Timeboxing+Your+Project+Plan+http%3A%2F%2Fbit.ly%2FgA5mXc+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2008/04/03/timeboxes-take-two/&amp;t=Recycling+An+Article+on+Timeboxing+Your+Project+Plan" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2008/04/03/timeboxes-take-two/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Outsourcing Debate &#8211; Two Guys Talk it Out</title>
		<link>http://tynerblain.com/blog/2007/11/01/outsourcing-debate/</link>
		<comments>http://tynerblain.com/blog/2007/11/01/outsourcing-debate/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 01:59:14 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/11/01/outsourcing-debate/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F11%2F01%2Foutsourcing-debate%2F", "style": "big", "title": "Outsourcing Debate - Two Guys Talk it Out" }); Bill Miller, who writes You Want it When?, a blog focused on improving the way you manage software development and I had a debate over email about outsourcing. We looked at pro&#8217;s and con&#8217;s, and our discussion centered around the [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F11%252F01%252Foutsourcing-debate%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Outsourcing%20Debate%20-%20Two%20Guys%20Talk%20it%20Out%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F11%2F01%2Foutsourcing-debate%2F", "style": "big", "title": "Outsourcing Debate - Two Guys Talk it Out" });</script></div>
<p><img title="ping pong paddles" alt="ping pong paddles" src="http://sehlhorst.smugmug.com/photos/216100420-M.jpg" /></p>
<p>Bill Miller, who writes <a title="Software Development Management blog" href="http://www.yuwantitwhen.com/blog/"><em>You Want it When?</em></a>, a blog focused on improving the way you manage software development and I had a debate over email about outsourcing.  We looked at pro&#8217;s and con&#8217;s, and our discussion centered around the best outsourcing model, and what the ramifications of outsourcing really are.   Read on to see the back-and-forth.</p>
<p><span id="more-590"></span></p>
<h2>The Context</h2>
<p>Bill and I started this debate based on the following:</p>
<ul>
<li>We really enjoyed some back and forth discussions that grew around other topics we had written about previously and wanted to do it again.  We both really respected the other person&#8217;s well-reasoned positions, and both felt that we learned a lot from the other person.</li>
<li>We thought it would be even better if we were able to open the conversation up to others &#8211; so we decided to have a debate that we would then post to our blogs so that other people could join in, or at least see reasoned arguments on both sides of the issue.</li>
<li>There are a lot of thorny issues where reasonable people can disagree.  We looked forward to discussing one of them, and look forward to discussing more of them.</li>
</ul>
<p>Bill had a great suggestion &#8211; we are each posting a copy of the back-and-forth (we couldn&#8217;t figure out a <em>usable</em> way to make you go back and forth between our blogs).   If you want to make a point or ask a question of Bill, post it to <a title="The debate at bill's blog" href="http://www.yuwantitwhen.com/blog/2007/11/02/outsourcing-debate-two-guys-talk-it-out/">the copy of the debate on his blog</a>.  If you have a question for me &#8211; post it here.</p>
<h2>The Outsourcing Debate</h2>
<p><strong>Scott</strong></p>
<p>What do you think the best model for offshore outsourcing is?  To narrow the field (initially, I&#8217;m sure it will expand as we go), let&#8217;s use this article to frame our discussion:</p>
<p><a title="outsourcing models" href="http://thinkingstreet.com/business/2007/09/30/outsourcing-models-for-software-development/">Outsourcing Models for Software Development (at ThinkingStreet.com)</a><br />
I think the best model, when trying to write innovative software is to start with low-level outsourcing, until you work out the kinks in operations and develop mutual trust.  Then I think you should move to high-level outsourcing and leverage the increasing skills of the team you&#8217;ve partnered with.  I don&#8217;t think you should go to the next step of complete technical outsourcing.  As much as some people want to believe that it is effective, and it may be, in the short run, it is a recipe for long term failure.  If you lose the capability to innovate technically &#8211; both in products and process (QA, etc), you die a slow death.  Further, I believe the collaboration of &#8220;to solve this problem, I think we should do this &#8211; what do you think?&#8221; is easier than an open ended charter across cultural, language, and temporal boundaries to &#8220;solve this problem.&#8221;</p>
<p><strong>Bill</strong></p>
<p>I’ve read your article and your email that started this off.  You’re email actually raises a number of issues that we can discuss.  I’ll start on this one: “I don&#8217;t think you should go to the next step of complete technical outsourcing.  As much as some people want to believe that it is effective, and it may be, in the short run, it is a recipe for long term failure.“  We have to get some better definitions of what complete technical outsourcing means.  What if the technical center is owned by the company is that complete technical outsourcing?  For example, at one multi-national company I worked at, we opened up wholly owned offices in India and moved entire products to be developed in India. Would you consider that complete technical outsourcing?  The motivations for opening the technical centers in India were entirely based on saving operating expenses.  When I was at another multi-national company, they had development offices on every continent on the planet except for Antarctica.  Is that complete technical outsourcing?  When you have another company do the work in a remote office, is that the only form of outsourcing?  The challenges are similar whether you own the offices or you contract for the people.  If you hire a company in the same city to do all the work, is that complete technical outsourcing.  I’m trying to understand what about outsourcing is unique that makes it a slow death if it’s complete.  Is it distance, the fact that another company is doing it, both or something else?</p>
<p><strong>Scott</strong></p>
<p>You die a slow death when you outsource everything, because you are outsourcing your innovative capabilities along with the contract to create short-term innovations.  Neither of the multi-national company examples you gave have that problem.  In both examples, you&#8217;re keeping your intellectual property &#8220;in house.&#8221;  I would say, generally, that the location that does the work is the one best equipped to invent the future.  As long as your company owns it &#8211; and is ok with the innovation coming from that location, then great.  But if you don&#8217;t have control / ownership of the group doing the work, you&#8217;re doomed to a slow death.</p>
<p>I agree with you that all geographically distributed teams face the same execution challenges more or less.  That element is just one of efficiency.  If the extra impedance and (presumably temporary) inefficiencies of transitioning work to a different (again, presumably) lower cost provider are smaller than the savings of distributing the work, it makes sense.</p>
<p>But not when you give away the responsibility outside of  your company.</p>
<p><strong>Bill</strong></p>
<p>The employees at both multi-national companies that I worked at felt there was no difference between a consulting outfit taking the work and an offshore development center being created to take on the work.  Most felt the fact that the work was moving away from the originators the project was doomed to failure.  They thought it was doomed to fail because the team and the knowledge base was destroyed in the process – true for either model.   Do you really lose the IP when you give the work to a consulting company?  I don’t believe so because the requirements, designs, and code are all owned by the company doing the outsourcing.  Isn’t the IP the artifacts?  Programming, managerial, and QA skills are not so unique that they cannot be reassembled elsewhere.   The fact that they are reassembled from the US to let’s say India in the form of an outsourcing model is proof of that these skills are readily available.  There are inefficiencies in reassembling teams that slow progress down, but once the team is up to speed, they should be just as effective as any capable team of doing the work.</p>
<p><strong>Scott</strong></p>
<p>Maybe &#8220;slow death&#8221; is too harsh.  How about a door rusting shut?  You can open it again, by reinvesting in getting the IP back into the company, but you are introducing an effort and challenge that must be overcome to do it.  When you &#8220;outsource&#8221; within your company, you are only moving the expertise and &#8220;off cycle inventiveness&#8221; that comes from having a working familiarity with the space.  When you outsource outside your company, you no longer have anyone who can do that work (without a ramp-up or investment period).</p>
<p>Imagine that you are a publisher of horror novels.  You have in-house authors that write for you.  You sack them, and get freelance authors to write books for you.  Initially, they are writing on spec &#8211; creating books based on ideas your authors already had.  Eventually, they are writing books based on their own ideas.  Being immersed in the horror genre for a while, they&#8217;ve gotten pretty good at it.  And they ship you all of the books and outlines.</p>
<p>Then one day, the authors decide to cut out the middle-man (you) and self-publish.</p>
<p>Just because you have a stack of books and outlines that they created for you does not mean you are in a position to write and publish horror novels any more.  You have to start over.</p>
<p><strong>Bill</strong></p>
<p>Some people use off shoring and outsourcing interchangeably, and I was looking to understand if you were too.  As I understand you, you see them as two separate models: off shoring works and outsourcing is a death sentence. I’d like to explore that more, but I need to understand your position on IP better before I can.</p>
<p>You seem to be using a nonstandard definition of IP.  IP is a product of people’s minds: art, technology, design processes, solutions to a problem, trademarks, patents, etc.  These are all protected by international law.  Companies own IP; they don’t own people.  The IP isn’t lost when you outsource or offshore.  I tried finding a definition that supported your use, and I was unable to find it.  Here’s one reference to IP definition on a Cornell University web site.  http://www.library.cornell.edu/newhelp/glossary.html#I   I don’t accept that IP is lost when companies outsource or offshore unless they give it away in the contract.  I’d like to understand better what it is that you feel a company is losing when they outsource to respond more effectively.</p>
<p><strong>Scott</strong></p>
<p>Great points, Bill.  I believe that the phrase &#8220;invest in your people&#8221; is more than a platitude &#8211; that years of immersion in, exposure to, and thinking about a domain creates an unrealized asset in the minds of the people.  You&#8217;re absolutely right that &#8220;yesterday&#8217;s ideas&#8221; are your property in an outsourcing arrangement.  I see those as two different classes of asset.  But they are both intellectual assets, and in some respects, they are both property.  Hence my liberal use of intellectual property as a short-hand description of the stuff in people&#8217;s heads.</p>
<p>When you&#8217;re investing (implicitly) in the heads of the outsourcing employees, you are doing it at the expense of investing in your own people.</p>
<p>And this effect will only be felt in the long run &#8211; &#8220;yesterday&#8217;s ideas&#8221; have the same value regardless of who invented them.  And as you point out, in an outsourcing arrangement, you own those inventions.  Since few management decisions are made with the long run in mind, it is easy to see the allure of outsourcing as a short term cost reduction with no tangible or immediate down-side.  My contention is that there is a long term down-side.</p>
<p><strong>Bill</strong></p>
<p>I can’t say I like the changes taking place in the IT industry with regard to outsourcing and off shoring, but that’s only because of my own personal reasons.  The corporate world is changing.  I don’t believe it makes sense to fight inevitable change.  Globalization is here to stay, and so are it’s consequences to how we work. It’s similar to the changes that occurred in the 18th century at the dawn of the industrial revolution with similar effects on how people live and work and how business is conducted.  But I don’t believe all the outsourcing is motivated out of cheap labor because of globalization.  It’s because the software industry has matured and global commerce is changing business practices.</p>
<p>As the corporate world evolves, many activities that were once done in house are now outsourced: whether it’s through a consulting arrangement or the purchase of services from a 3rd party provider.  This makes obvious sense when the services or products are not strategic for the company.  For example, ADP and Paychecks do payroll processing for many companies.  It should be cheaper for a company to purchase this service from ADP and Paychecks than to hire staff and support this in house. Few companies have IT departments for payroll services any longer.   For many companies IT is just a tool like a typewriter or copy machine.  It never made sense for a company to build its own typewriters and copy machines, and they didn’t, and so for many companies, it doesn’t make sense for them to write their own software and manage their own computers either.  They will never be any good at it because it’s not their business.</p>
<p>How did we get here with companies getting into the software development business when that was never the purpose of their business in the first place?  Why should Hospitals or Insurance companies have IT departments?  These are support services.  We got here because the software industry was new, and there weren’t businesses that companies could go to, to purchase the software they needed, so they created it in house because it made financial sense.  The return was greater than the investment.  Now that the software business has matured, there are companies providing products and services that 20 or 30 years ago were unavailable.  The industry has now matured where companies can purchase what they need rather than build it in house.  So now they have started the process of unwinding the departments that they would have never created in the first place if software wasn’t such a nascent industry.</p>
<p>This is mostly a win-win situation.  It is always a better career choice for an IT professional to work at ADP developing payroll processing systems than to work at Aetna, for example, developing payroll processing systems. At ADP payroll processing is a profit center and a core competency for Aetna payroll processing is a cost center and a necessary chore. At Aetna if the payroll processing system is working well, there is less motivation to improve it.  At ADP there are competitive reasons to improve the payroll processing system. This usually means that the IT person working at ADP will be keeping up with the changes in the field faster than the IT person working at Aetna.  (note, the company names are only used as an example to illustrate a hypothetical point.)</p>
<p>As for the concern that investing in the heads of outsourcing companies is a competitive disadvantage, I don’t see it for a few reasons.  If Aetna outsources to ADP its payroll processing system and ADP develops talent that gets really good at this, I don’t believe Aetna lost anything strategic in the process.  Now if a company hires an outsourcing company to develop a unique application that gives it an advantage in the marketplace, I still don’t believe a company loses anything here either.  Let’s take Wipro; it would be bad business for them to offer contracting services and then start competing with the companies they offer contracting services to.  I don’t believe any company has anything to fear from Wipro entering into their market space.  Wipro is a multi-billion dollar software contract house; they are going to look to make their next billion growing that business – not entering the businesses of their customers.  Second, all of these contracts have agreements for who owns the software created etc…  It would be a breach of contract if they were to break that agreement, and there are legal remedies for it.  Let’s assume the employee quits Wipro and enters the market themselves; that’s no different than any employee today quitting and doing the same thing, and it’s done all the time today.</p>
<p>I still struggle to see the loss of inventiveness that you speak of.  I actually see an enhancement of inventiveness for many of the kinds of companies that I’ve described in this response.  These companies are freeing up capital to invest in the reasons they went into business in the first place.  With that extra capital, they have the opportunity to invent even more because less is being spent on non strategic purposes.  Outsourcing for many industries has been with us for decades.  The IT profession has been experiencing it marginally as well for decades, but we’ve hit an inflection point where the change has been dramatic.  This is permanent.  The companies that learn how to manage this successfully will win in the marketplace.</p>
<p>I believe, instead of the software professionals fighting this inevitable trend, we should be looking to accept it and recommend how to adopt these changes successfully.  There’s no turning the clock back, and the dire predictions are specious.  Oh some will fail at this, but many that do are probably already struggling with IT in the first place.  If we do accept it, the possibilities for IT professionals in this new model are boundless unless, of course, the only measure of good is to see that you are doing things today the way you did those things 20 years ago.  The world leaves those behind who don’t move on.  We may be the early 20th century equivalent of a blacksmith.  It would have been a mistake for the blacksmith to not accept the change that was upon him.  Likewise, the 21st century software engineer needs to accept the changes that are upon us.  Only then can the software community begin to build the future that is possible.  Fortunately, the need for software engineers will not vanish like the blacksmith, but what will change is the niche we fill in the value chain.  Only when we embrace change can we conquer change.  When we fight change, change conquers us.</p>
<p><strong>The end?</strong></p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Outsourcing+Debate+%E2%80%93+Two+Guys+Talk+it+Out+http%3A%2F%2Fbit.ly%2FhWiFH1+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/11/01/outsourcing-debate/&amp;t=Outsourcing+Debate+%E2%80%93+Two+Guys+Talk+it+Out" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/11/01/outsourcing-debate/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Estimating an Inestimable Project</title>
		<link>http://tynerblain.com/blog/2007/10/04/estimating/</link>
		<comments>http://tynerblain.com/blog/2007/10/04/estimating/#comments</comments>
		<pubDate>Fri, 05 Oct 2007 03:58:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[estimate]]></category>
		<category><![CDATA[estimates]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[project manager]]></category>
		<category><![CDATA[project managers]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/10/04/estimating/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F10%2F04%2Festimating%2F", "style": "big", "title": "Estimating an Inestimable Project" }); We create cost estimates at many times in a project. From budgetary estimates at the start of a project all the way to PERT estimates of tasks in a work breakdown structure. Creating a budgetary estimate seems impossible &#8211; you have to make many [...]]]></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%252F10%252F04%252Festimating%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Estimating%20an%20Inestimable%20Project%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F10%2F04%2Festimating%2F", "style": "big", "title": "Estimating an Inestimable Project" });</script></div>
<p><img title="gondola" alt="gondola" src="http://sehlhorst.smugmug.com/photos/204153647-M.jpg" /></p>
<p>We create cost estimates at many times in a project.  From budgetary estimates at the start of a project all the way to PERT estimates of tasks in a work breakdown structure.  Creating a budgetary estimate seems impossible &#8211; you have to make many assumptions, your estimates are based on the unknown &#8211; they can&#8217;t be good.   There are ways to make budgetary estimates easier to generate and refine &#8211; but they can create a sense of false precision.<br />
<span id="more-578"></span></p>
<h2>Small Tasks Can Be Estimated Accurately</h2>
<p>We wrote before about <a title="why projects fail" href="http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/">reasons that a project plan will fail</a>.  One of those reasons is bad estimates.  One of the best ways to assure that you have reasonable estimates is to manage the size of those estimates.  When you keep your estimates to tasks in the 1 to 8 hour range, you are forced to put additional thought into design, implementation <em>gotchas</em>, and you end up making better estimates.</p>
<h2>Early Estimates for Large Jobs</h2>
<p>At the other end of the spectrum, we sometimes have to build budgetary estimates for large jobs.  Jobs that are too big to estimate in terms of small tasks &#8211; at least in the time that we have to create the estimates.  <a title="Estimating with use case points" href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">Use case points</a> can be used as a framework to provide a reasonable estimate of large jobs.  To use a use case points analysis, you have to have an understanding of scope and goals that allows you to identify a set of use cases, with enough detail to know how complex they are.</p>
<p>Sometimes we have to make estimates <em>before</em> we have the level of detail needed to apply use case points (or other structured techniques) to build a budgetary estimate.</p>
<p>Our only hope for very large, ill-defined estimation is to create a <em>very</em> rough estimate &#8211; in man-days or man-months.</p>
<h2>Just Kidding yourself</h2>
<p>You can make an argument that any estimate of a project so poorly defined that you don&#8217;t know the use cases well enough to estimate them is a waste of time &#8211; that you&#8217;re just kidding yourself.  If you are trying to build an <em>accurate</em> estimate &#8211; we agree.  But you sometimes have to make decisions without accurate estimates.  A business often has to make relative decisions about which projects to pursue, before there is detailed information which can take time to gather.</p>
<p>OK, so you&#8217;re in an impossible position &#8211; what do you do?</p>
<ol>
<li>Breath.</li>
<li>Plan for the future.</li>
<li>Build a <em>budgetary</em> estimate (also known as a <em>rough order of magnitude</em> estimate).</li>
</ol>
<h2>Breath</h2>
<p>Recognize that you&#8217;re the &#8220;expert&#8221; and your executives are looking to you to give them some insight about how big the job is.</p>
<h2>Planning for the Future</h2>
<p>When you do an early, budgetary estimate, you should expect that you will be iteratively refining that estimate &#8211; maybe multiple times per day.  And you&#8217;re estimating something large, with a lot of moving parts, and a lot of assumptions.  If it wasn&#8217;t a large, complex, messed-up, ambiguous affair, you would have been able to make better estimates.  So plan on making a lot of changes to the estimates.</p>
<h2>Building A Budgetary Estimate</h2>
<p>Don&#8217;t look at a big project and say &#8220;It&#8217;s 1000 man-months&#8221; and call it a day.  Decomposition helps you make better estimates on small tasks &#8211; the same is true on large projects.  So, decompose as much as you can.  If you&#8217;re estimating an enterprise deployment of multiple applications, break down the estimates to a <em>per-application</em> level.  Assuming you can&#8217;t go any further, estimate the effort at this level.  Then set up a spreadsheet to roll up the estimates for the applications into an overall estimate.</p>
<p>There are some other things you can look at at this point</p>
<ul>
<li>Sequencing &#8211; are there any obvious dependencies that force serial development activities?  What can be done in parallel.</li>
<li>Staffing &#8211; do you have an unlimited supply of team members, or do you need to stagger development due to resource constraints?</li>
<li>Regional teams &#8211; can you split the development or testing to <a title="Outsourcing models" href="http://tynerblain.com/blog/2006/03/31/four-outsourcing-models-for-software-development/">outsourced or regional teams</a>?</li>
</ul>
<p>These inputs help you with staggering the allocation of effort over time.  They also allow you to apply a burden rate for the labor (based on financial models for staffing costs).</p>
<h2>Iteration</h2>
<p>Your spreadsheet should roll all of the costs (over time) up to final numbers.  You end up with a whole bunch (maybe hundreds) of &#8220;small numbers&#8221; that, with assumptions, become one big number.</p>
<p>Then you show this to your executive &#8211; who sees hundreds of numbers, and one big number.  Improperly positioned, your executive will walk away believing that the big number is precise, because the estimation looks complex.  This introduces a sense of false precision.  You know that the &#8220;small&#8221; numbers are educated guesses.  So adding it all up gives you just one big educated guess.  If you miscommunicate at this stage, you could be setting yourself up for disaster.  Your exec might shoot down the project because of your unacceptably high estimate.  Or even worse, commit you to a dangerous and impractically low estimate.</p>
<p>The way you climb out of this morass is with iterations.  So plan your spreadsheet to make it easier to change.  Get better estimates, validate assumptions.  Start detailed planning.  With each iteration, remove an unknown.  Create a better estimate for a subset of your massive project.  The more time you have, the better your estimate becomes.  Just keep in mind that it is still budgetary, until you use a rigorous estimation technique like the ones we mentioned above.</p>
<h2>Directional</h2>
<p>Now you&#8217;ve uncomfortably delivered a budgetary estimate, hopefully set expectations so that it will be received the right way.  You&#8217;ve improved it as much as you can with the time you have available by iterating.  What now?</p>
<p>Breath again.</p>
<p>Your estimate is likely to be <em>directionally correct</em>, however wrong the actual numbers may be.  Your estimate is going to be compared with other estimates that are likely to be just as inaccurate.  But your numbers do provide some insight into the relative sizes of the different projects.  And they will allow executives to make the best decisions they can on very limited information.</p>
<h2>Conclusion</h2>
<p>Do what you have to do.  Understand how suspect the numbers are.  And make them better, as much as you can.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Estimating+an+Inestimable+Project+http%3A%2F%2Fbit.ly%2FgYzJcR+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/10/04/estimating/&amp;t=Estimating+an+Inestimable+Project" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/10/04/estimating/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Your Project Plan Will Fail</title>
		<link>http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/</link>
		<comments>http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/#comments</comments>
		<pubDate>Fri, 21 Sep 2007 04:51:56 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[combining pert estimates]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[pert]]></category>
		<category><![CDATA[pert analysis]]></category>
		<category><![CDATA[pert estimate]]></category>
		<category><![CDATA[pert estimates]]></category>
		<category><![CDATA[project plan mistakes]]></category>
		<category><![CDATA[project planning]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F20%2Fwhy-your-project-plan-will-fail%2F", "style": "big", "title": "Why Your Project Plan Will Fail" }); You&#8217;ve written a project plan. Your team is ready to start. Here&#8217;s the bad news &#8211; you&#8217;re going to fail. But why? How can you avoid failure? The Undergrad Mistakes Failing to plan is planning to fail. We&#8217;ve all heard this 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%252F09%252F20%252Fwhy-your-project-plan-will-fail%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Why%20Your%20Project%20Plan%20Will%20Fail%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F09%2F20%2Fwhy-your-project-plan-will-fail%2F", "style": "big", "title": "Why Your Project Plan Will Fail" });</script></div>
<p><img alt="moving targets" title="moving targets" src="http://sehlhorst.smugmug.com/photos/198322782-M.jpg" /></p>
<p>You&#8217;ve written a project plan.  Your team is ready to start.  Here&#8217;s the bad news &#8211; you&#8217;re going to fail.  But why?  How can you avoid failure?</p>
<p><span id="more-572"></span></p>
<h2>The Undergrad Mistakes</h2>
<p>Failing to plan is planning to fail.  We&#8217;ve all heard this one before.  Its become a <em>cliche</em>.  Steve McConnell opens his article, <a title="project planing sins" href="http://tynerblain.com/blog/www.construx.com/Page.aspx?hid=1190"><em>The Nine Deadly Sins of Project Planning</em></a> with this old saw.  Well, we certainly can&#8217;t argue with that.  And Steve offers some other suggestions that also fall into the project management 101 class &#8211; don&#8217;t use the same plan for every project, plan for risks, don&#8217;t plan in too much detail too soon, to name a few.  Let&#8217;s assume we know that stuff already.</p>
<p>Christopher Hawkins provides us with project management 211 topics in his article, <em><a title="schedule problems" href="http://www.christopherhawkins.com/02-23-2006.htm#103">Why Your Schedule is No Good &#8211; And How to Fix It</a>.</em>  He goes into detail on six more common mistakes:</p>
<ol>
<li>People take vacation &#8211; is that in the plan?</li>
<li>People get sick &#8211; is that in the plan?</li>
<li>Don&#8217;t forget holidays.  And for global teams, don&#8217;t forget holidays in other countries.</li>
<li>What about personal days?</li>
<li>Have you planned for disaster?  Christopher adds 5 days of contingency to a 3 month project.</li>
<li>No-one is productive for 8 hours per day &#8211; is that in the plan?  We plan on 5 or 6 hours of &#8220;on task&#8221; time per day.</li>
</ol>
<p>His article is a really good one.  These are the things you know to do <em>if</em> you&#8217;ve managed projects before.  You didn&#8217;t do them because someone told you to do them &#8211; you planned for these because they happened (and they <em>always</em> happen), and you got burned.  So you remembered.</p>
<h2>The Graduate Mistake: Everything Is Late</h2>
<p>Doug DeCarlo has an article at Gantthead, <a title="project planning problems" href="http://www.gantthead.com/content/articles/237897.cfm"><em>Why Traditional Project Planning Often Fails</em></a>.  He applies some interesting insights, that help put things in perspective.</p>
<p>First, he cites a variation on <a title="parkinson's law" href="http://en.wikipedia.org/wiki/Parkinson's_law">Parkinson&#8217;s Law</a>, that the tasks will grow to fill the allotted time.  They may not all be late, but many will &#8211; and few will be early.  In addition to &#8220;feeling right&#8221; intuitively, this has some mathematical impacts on the schedule that I don&#8217;t believe any estimation software accounts for.</p>
<p>When you run two tasks in parallel, and one or both are late, you&#8217;re done when the last of the two finishes.  By running tasks in parallel, you can infer that they are independent.  Unfortunately, this isn&#8217;t universally true when planning.  When tasks are run in series and the first task is late, the second one starts late.</p>
<p><strong>A Quick Refresher on PERT</strong><br />
When we look at <a title="how to make pert estimates" href="http://tynerblain.com/blog/2006/04/13/foundation-series-basic-pert-estimate-tutorial/">traditional PERT analysis</a>, we have a mathematical way of dealing with this.  Imaging two tasks estimated to take 4/6/8 hours (best case / likely case / worst case) each.  With PERT estimates, you are saying that 90% of the time, the task will take between 4 and 8 hours.  Each task has a 5% chance of taking more than 8 hours, and a 50% chance of taking more than 6 hours.</p>
<p>When you run those two tasks in parallel, that means you only have a 25% chance that your project will finish in 6 hours &#8211; the odds are that at least one of the tasks will run long.  And you have an almost 10% chance that your project will take more than 8 hours.  If you&#8217;re running 5 tasks at once, you have a 23% chance that the project will take more than 8 hours.</p>
<p>Many people will think that if they have 5 tasks, running at the same time, each with a 95% chance of being done in under 8 hours, that they have a 95% chance of being done in 8 hours.  They don&#8217;t.  The problem is that you aren&#8217;t done until <em>all the tasks</em> are done.  And you only have a 77% chance that they will all be done in under 8 hours.</p>
<p>Where PERT gets interesting is when the tasks run in series.  The two 4/6/8 tasks will complete in 9/12/15 with the same expectations &#8211; 95% of the time, the two tasks will have finished in under 15 hours.  The odds get better because sometimes, when one task runs long, the other one runs short.  This is the interpretation of combining PERT estimates.</p>
<p><strong>Back to DeCarlo</strong></p>
<p>The problem, according to DeCarlo, is that the tasks will never come up short.  Does this mean that PERT estimates are junk?  No &#8211; it just means that our estimates might be.  Imagine the task were ten times as large, with a PERT estimate of 40/60/80.  Suspend for a moment your urge to reject an estimate that large.  40/60/80 is symmetrical.  That means you believe 40 to be just as likely as 80.  If DeCarlo is right, then 55/60/80 would be much more believable.  This would represent that the task often runs long, and almost never runs short.</p>
<p>Thankfully, we can still combine PERT estimates in this way.  If our two tasks were in series, and were estimated as 5.5/6/8, the final project estimate would be 10/12/14.  The final distribution has tightened up, as we would expect &#8211; because the original estimates are tighter.</p>
<p>We think DeCarlo is at least on to something.  When reviewing project post-mortems, we do find that under-estimated tasks exceed over-estimated tasks, by about 2 to 1, at least for tasks in the 2 to 8 hour size range.</p>
<p>Make sure and review the estimates &#8211; and pay particularly close attention to the &#8220;low side&#8221; of the estimate &#8211; is it really believable?</p>
<h2>The Post-Hole-Digger Mistake</h2>
<p>That&#8217;s how my grandfather described people with doctorate degrees.  He felt that practical knowledge was worth more than theory.  This works well for the last mistake, because for some people, this one is <em>well, duh &#8211; practical</em>, and for others it is <em>enlightened study &#8211; aha!</em> smart.</p>
<p>Your project is a moving target.  Your project <em>plan</em> is a static document.  Instead of proving it to you, I&#8217;ll quote Bill Miller from his blog, <a title="project management tips" href="http://www.yuwantitwhen.com/blog/"><em>You Want it When?</em></a>,</p>
<blockquote><p>A project with no requirements changes is either mismanaged or a dead project walking.  If the project you are delivering is something that has a future and the project stakeholders are excited and interested about, requirements change is an inevitable consequence.</p>
<p><cite>Bill Miller, <a title="embrace change" href="http://www.yuwantitwhen.com/blog/2007/08/13/embrace-change/">Embrace Change</a></cite></p></blockquote>
<p>Read the rest of Bill&#8217;s article &#8211; it&#8217;s really good.  He and I have been discussing the warts and merits of agile project management, and reminiscing about the good old days of waterfall development and rotary phones for a while.  Seriously good insights and healthy skepticism of the hype you see everywhere (even here, sometimes).</p>
<ul>
<li>When requirements change, deliverables change.</li>
<li>When deliverables change, the work tasks and estimates change.</li>
<li>When tasks and estimates change, the project changes &#8211; and so should the plan.</li>
</ul>
<p>You don&#8217;t have to tell anyone if this was <em>obvious</em> to you, or if it seems <em>enlightened</em> &#8211; don&#8217;t ask, don&#8217;t tell.  And if you haven&#8217;t been on a project where the project manager refused or at least resisted changes to the plan, you haven&#8217;t been on very many projects.</p>
<h2>Conclusion</h2>
<p>There are many things that can go wrong with project planning, ranging from the obvious to the insightful.  From the high level (plan for change) to the low (be wary of symmetrical PERT estimates).  The more of these things you <em>plan</em> for (pun intended), the better your plan will be.  Most importantly, realize that your project is a moving target, so your plan better move with it.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Why+Your+Project+Plan+Will+Fail+http%3A%2F%2Fbit.ly%2Ff4zmjn+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/&amp;t=Why+Your+Project+Plan+Will+Fail" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/09/20/why-your-project-plan-will-fail/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Why Gannt Charts Are Useless For Agile Projects</title>
		<link>http://tynerblain.com/blog/2007/08/13/agile-gannt-charts/</link>
		<comments>http://tynerblain.com/blog/2007/08/13/agile-gannt-charts/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 04:38:32 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile gannt]]></category>
		<category><![CDATA[agile gant]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[gannt]]></category>
		<category><![CDATA[gannt charts]]></category>
		<category><![CDATA[gant charts]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[regression]]></category>
		<category><![CDATA[regression testing]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/08/13/agile-gannt-charts/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F13%2Fagile-gannt-charts%2F", "style": "big", "title": "Why Gannt Charts Are Useless For Agile Projects" }); What can you learn about your agile project from this Gannt chart? The one above looks out two years. It shows task dependencies and concurrencies. If you&#8217;re iteratively developing software, do you really expect to know what you&#8217;ll be doing [...]]]></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%252F13%252Fagile-gannt-charts%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Why%20Gannt%20Charts%20Are%20Useless%20For%20Agile%20Projects%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F13%2Fagile-gannt-charts%2F", "style": "big", "title": "Why Gannt Charts Are Useless For Agile Projects" });</script></div>
<p><img alt="gannt chart" title="gannt chart" src="http://sehlhorst.smugmug.com/photos/183715156-M.gif" /></p>
<p>What can you learn about your agile project from this Gannt chart?  The one above looks out two years.  It shows task dependencies and concurrencies.  If you&#8217;re iteratively developing software, do you really expect to know what you&#8217;ll be doing two years from now, to know if you truly have a dependency?  You may understand the dependencies with a two-month time horizon.  But how much effort are you investing in creating a detailed, two-month Gannt chart?  And how much value are you getting from it?</p>
<p><span id="more-556"></span></p>
<h2>Hat Tip</h2>
<p>Hat tip to Johanna Rothman, who <a title="gannt charts and agile" href="http://www.jrothman.com/weblog/2007/08/gantt-charts-and-agile.html">doesn&#8217;t like Gannt charts</a>, and who linked to an awesome article by Tate Stuntz, <a title="gannt charts and agile" href="http://www.techdarkside.com/?p=127"><em>The Demise of the Gannt Chart in Agile Software Projects</em></a>.</p>
<h2>The Demise of the Gannt Chart</h2>
<p>Tate starts his article with a nice statement about Gannt charts.  Namely, Gannt charts work for manufacturing processes.  In effect, he points out that they work because Gannt charts are good for optimizing systems with dependencies &#8211; and manufacturing processes have relatively immutable dependencies.  Tate&#8217;s basic premise is that agile software development is so mutable, both strategically and tactically, that creating a Gannt chart of the process is both hard and of questionable value.</p>
<p>One thing I really like about his argument is the way he starts with an analogy to show the value of Gannt charts.  He points out that Gannt charts are effective for managing projects with sequential dependencies (the argument applies to finish-to-finish, staggered start-to-start, and other types of sequential dependencies, not just  finish-to-start dependencies).</p>
<p>He points out the obvious efficiencies of re-use and parallelism that can come from over-arching project sequencing.  He uses the canonical house-construction model: build the foundation, then the other parts next.  He also alludes to the argument that software development does not require this model to be in place.  To reinforce that argument, consider pre-manufactured homes, where the walls may be constructed in advance of pouring the foundation &#8211; the dependency is severed.</p>
<p>Tate argues that agile teams sever these dependencies all the time.  And he points to some elements of agile development that enable this &#8211; or arguably, are required if you want to sever.</p>
<ul>
<li><strong>Generalist team members</strong>.  Generalists can re-sequence tasks within an iteration as they see fit.  To quote Tate -<br />
<blockquote><p>&#8220;Well, if your Agile project goes like the ones I’ve seen, the team members will display the irritating behavior of constantly moving around to different tasks as seems most effective to them within the iteration &#8211; regardless of what you’ve written down.&#8221;</p></blockquote>
<p>And I agree, based on my experiences too.  His argument is that the predictability that comes from using specialists comes at the cost of efficiency, due to bottlenecks introduced into the system.   I don&#8217;t know if that&#8217;s true, from my own experiences, but it may be.  I suspect that an optimized dependent/sequential system can be as efficient as a severed system.  The point to remember is that agile is designed to deal with change, so change causes fewer cascading ramifications.  It makes sense to argue that the dependent system is less efficient, <em>given the presumption of change</em>.</li>
<li><strong>Pair programming</strong>.  An interesting point about pair-programming is that it spreads knowledge throughout the team &#8211; making them <em>modular</em>.  This modularity reduces or eliminates <em>resource-constrained sequential dependencies</em>.  In other words, whatever tasks make the most sense to be done now, can be done by anyone who is available, rather than only the person who understands it.  This is a variation of the generalist staffing model &#8211; but it is the practice that increases the generalizing nature of the participants.</li>
<li><strong>Refactoring and Regression</strong>.  Tate argues, as have we, that automated regression testing is critical to being able to change and refactor.  This is a key tenet of <a title="continuous integration explained" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a>, something that <a title="continuous integration essentials" href="http://tynerblain.com/blog/2006/05/09/ten-essential-practices-of-continuous-integration/">every project should use</a>, regardless of process.</li>
</ul>
<p>A very interesting argument.  Tate also cites Scott Ambler&#8217;s <a title="agile survey 2007" href="http://www.ambysoft.com/surveys/agileMarch2007.html">survey of agile adoption rates</a> as showing that Gannt charts were the least-valued artifacts among agile teams.</p>
<h2>Counterpoint</h2>
<p>As interesting as Tate&#8217;s article is, the discussion in the comments is perhaps even more valuable.  The comments vary from disagreement to nit-picking of points to agreement with the premise.  There are some interesting ideas in the thread that end up augmenting Tate&#8217;s points, and also putting them in perspective (to prevent us from extrapolating).</p>
<ul>
<li>Do <em>some</em>, but not too much, up-front planning.  A few people touch on this, in the context of architectural work.  One suggestion is for an architectural sprint to start the project, based on Poppendieck&#8217;s work.  In practice, we&#8217;re at least guilty of this (if you disagree) or proponents-by-example (if you agree).  More importantly, we think the &#8220;strategic view&#8221; is <a title="Agile development of use cases" href="http://tynerblain.com/blog/2007/04/02/agile-development-of-use-cases/">best explored shallowly in terms of requirements</a>, prior to prioritizing what should be done in detail in each iteration.  However, this doesn&#8217;t suggest that Gannt charts should be used.  A roadmap showing relative sequence, without trying to manage dependencies may be more effective.</li>
<li>Emergent architecture versus planned architecture.  One commenter points out that this is still a &#8220;dark art.&#8221;  We would agree that making good architectural decisions before you know what you are building is much harder than after.  But it gets back to an agile argument &#8211; <em>you don&#8217;t actually know, even if you think you do</em> at the time of planning  <em>what you are building</em>.  If we actually could know, then planned architecture would be better, and likely more efficient.  But not necessarily <a title="value of early delivery" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">more valuable</a>.  But to achieve that value, you need some understanding of the big picture.  And <a title="value maximization" href="http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/">a good approach to prioritization</a>.</li>
<li>People generally affirm that detailed insight into the distant future is impossible.  That&#8217;s why we have <a title="planning with expected change" href="http://tynerblain.com/blog/2007/01/24/failing-to-plan/">rolling-wave planning</a>.  Time spent on the uncertain future is wasted.  A high level view of the future is not uncertain &#8211; you are defining scope and value.  A low-level plan is uncertain.  Gannt charts don&#8217;t provide useful dependency information at a high level, and the information at a low-level, in the distant future, is worth less than the low-level-tasks it sequences.</li>
</ul>
<h2>Conclusion</h2>
<p>Gannt charts for the immediate term have a very high effort to value ratio for agile projects.  Generalists manage dependencies, and change them, continuously.  Updating the chart isn&#8217;t updating a plan for action, it is updating a tally of the score (of things already done).  Not adding much value here.</p>
<p>Gannt charts for the long term have almost no value for high level activities.  Dependency information doesn&#8217;t make sense for high level stuff.  Gannt charts for low level tasks in the long term are also suspect, because we fully expect that the low level tasks will change.  And therefore, their dependencies will change.  So the work is throw-away work.  Even worse, it implies a sense of predictability, or at least creates a false precision about upcoming work.</p>
<p>In short, Gannt charts won&#8217;t help you plan an agile development project.  At least not enough to justify the expense of creating them.</p>
<p><strong>Imagine you have someone good enough</strong> to create a Gannt chart, and keep it current through the change.  This superman is also tracking and communicating those changes and effectively managing stakeholder expectations.  Now imagine what other valuable things you could have someone <em>that good</em> doing.  <strong>Where do you really want them investing their time</strong>?</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Why+Gannt+Charts+Are+Useless+For+Agile+Projects+http%3A%2F%2Fbit.ly%2Fhhhctz+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/08/13/agile-gannt-charts/&amp;t=Why+Gannt+Charts+Are+Useless+For+Agile+Projects" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/08/13/agile-gannt-charts/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Barrier To Agile Development</title>
		<link>http://tynerblain.com/blog/2007/08/07/barrier-to-agile-development/</link>
		<comments>http://tynerblain.com/blog/2007/08/07/barrier-to-agile-development/#comments</comments>
		<pubDate>Wed, 08 Aug 2007 05:37:10 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[cognitive dissonance]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[software development process analysis]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/08/07/barrier-to-agile-development/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F07%2Fbarrier-to-agile-development%2F", "style": "big", "title": "Barrier To Agile Development" }); Why don&#8217;t more companies and teams use agile development techniques? We know some teams just aren&#8217;t aware of them &#8211; although that list is getting shorter every year. The benefits of iterative development over waterfall development are pretty well established. I don&#8217;t believe I&#8217;ve [...]]]></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%252F07%252Fbarrier-to-agile-development%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Barrier%20To%20Agile%20Development%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F07%2Fbarrier-to-agile-development%2F", "style": "big", "title": "Barrier To Agile Development" });</script></div>
<p><img title="brain scan" alt="brain scan" src="http://sehlhorst.smugmug.com/photos/181631337-M.jpg" /></p>
<p>Why don&#8217;t more companies and teams use agile development techniques?  We know some teams just aren&#8217;t aware of them &#8211; although that list is getting shorter every year.  The benefits of iterative development over waterfall development are pretty well established.  I don&#8217;t believe I&#8217;ve seen a study that shows that <a title="is waterfall more effective than agile?" href="http://tynerblain.com/blog/2007/04/16/is-agile-bad-for-software/">waterfall is <em>more</em> effective</a>.  Do people <em>refuse</em> to <a title="benefits of incremental delivery" href="http://tynerblain.com/blog/2006/04/18/two-big-benefits-of-incremental-delivery/">believe in the data</a>?  Or maybe they are unable to believe.</p>
<p><span id="more-554"></span></p>
<h2>Inspiring This Article</h2>
<p>Mishkin Berteig just wrote <a title="time is not negotiable" href="http://www.agileadvice.com/archives/2007/07/time_is_not_neg.html">another article</a> inspiring this one.  He&#8217;s done it before, when talking about <a title="broken windows" href="http://tynerblain.com/blog/2007/01/12/code-debt/">code debt and quality</a>, and we&#8217;ve highlighted his article on the <a title="core elements of agile development" href="http://tynerblain.com/blog/2006/09/07/core-of-agile/">core elements of an agile approach</a>.  Generally speaking, you should just <a title="agile advice" href="http://www.agileadvice.com/">read his blog</a>.</p>
<p>His most recent article talks about the <em>non</em>-negotiability of software quality when pressed for time.  Although the comments thread seems to be going off on a tangent about the iron triangle of project negotiations (scope/content, cost, and time), the article is pushing a different idea.  The idea that <em>time already spent is a sunk cost</em>.</p>
<blockquote><p>The idea of sunk costs, also know as &#8220;don&#8217;t throw good money after bad&#8221; is difficult for most people at a psychological level. We often feel like making just a little more investment of time, work or cash will turn an ailing effort around. Unfortunately, a traditional waterfall or phased-based approach to project work increases the psychological pressure to continue working, even when the project is &#8220;bad&#8221;.</p>
<p><cite>Mishkin Berteig</cite></p></blockquote>
<p>The point that Mishkin seems to be driving at is that by using an agile process, you dramatically reduce the sunk cost <em>psychological</em> issue.  One thing Alan Cooper said about agile processes that really stuck with me is that <a title="agile vs ux" href="http://tynerblain.com/blog/2006/03/07/interaction-design-explained-by-alan-cooper/">agile processes are optimized to deal with change</a>.  His comment was in the context of a left-handed compliment, that agilists presume that change is inevitable because it is impossible to know in advance what needs to be done.  That is an interesting debate, and even mentioning it here is likely to cause our discussion to go off on a tangent.</p>
<p>Taking those two ideas together &#8211; it makes sense that people who anticipate and plan for change will not incur a psychological <em>penalty</em> for changing their solution in response to changes in requirements.  It makes for good support to Mishkin&#8217;s argument.  <a title="waterfall process definition" href="http://tynerblain.com/blog/2006/01/03/foundation-series-software-process-waterfall-process-versus-incremental-process/">Waterfall processes</a> make change harder because of sunk costs.  But there&#8217;s more.</p>
<h2>Cognitive Dissonance</h2>
<p>OK, now the picture of a brain scan might make more sense for this article.</p>
<blockquote><p>Cognitive dissonance is a psychological term which describes the uncomfortable tension that may result from having two conflicting thoughts at the same time, or from engaging in behavior that conflicts with one&#8217;s beliefs.</p>
<p><cite><a title="definition of cognitive dissonance" href="http://en.wikipedia.org/wiki/Cognitive_dissonance">Wikipedia</a></cite></p></blockquote>
<p>The reason that people feel uncomfortable about <a title="definition of sunk costs" href="http://tynerblain.com/blog/2006/03/24/definition-of-sunk-cost/">sunk costs</a> is rational.  Making decisions based on sunk costs is irrational.  Here&#8217;s how cognitive dissonance can play out in a waterfall project:</p>
<ol>
<li>We know we&#8217;re good at what we do.  We gathered requirements and we&#8217;re implementing a solution based on those requirements &#8211; and we&#8217;ve developed a test plan to validate that we actually did what we set out to do.  In short &#8211; we rock.</li>
<li>We&#8217;ve invested a lot of time implementing what we&#8217;ve done so far.</li>
<li>We&#8217;ve just been told that what the customer really needs is something else.</li>
<li>If we accept that the customer needs &#8220;something else&#8221;, then that means that we wasted a bunch of time and money doing the wrong thing.  The delays (time is not negotiable &#8211; see Mishkin, we get it) may doom this product to failure even if we do fix it.  This of course means that we are a lousy product team.</li>
</ol>
<p>Cognitive dissonance is introduced between items 1 and 4 in the list above.  We can not both rock and be lousy.  These two ideas are mutually exclusive.  In <em>Mistakes Were Made, But Not By Me</em> (linked in the &#8216;Recommended Reading&#8217; box at the end of this article), Carol Tavris and Elliot Aronson describe this situation and its global ramifications in a way that will enlighten and frighten you.  A quick quote from Dr Cathy Goodwin that sums up the central idea behind the book:</p>
<blockquote><p>Why do people refuse to admit mistakes &#8211; so deeply that they transform their own brains? They&#8217;re not kidding themselves: they really believe what they have to believe to justify their original thought.</p></blockquote>
<p>And that&#8217;s what we have here.  Cognitive dissonance  prevents people from accepting that change is important in a waterfall project, because they have conspicuously avoided change for the life of the project.  It almost seems like they go out of their way to make sure that they don&#8217;t accidentally uncover changes until the project is complete.  And the higher the waterfall, the more vested interest, the more likely it is that change is needed, and the greater the cognitive dissonance.</p>
<h2>Cognitive Dissonance Prevents Adoption of Agile Development</h2>
<p>Not only does the notion of cognitive dissonance explain why people freak out about sunk costs, but it explains why waterfall projects are <em>so</em> terrifically bad when they fail.</p>
<p>Now take this tactical assessment and apply it to the longer term.</p>
<ol>
<li>We&#8217;re good at software development.</li>
<li>We run waterfall projects, we have <em>check-gates</em>, and other processes to assure that we get the job done right.</li>
<li>Sure,  many of our projects fail.  And maybe our &#8220;successes&#8221; are not as big as we initially planned them to be.</li>
<li>Agile development would make this better.  The CHAOS report, many other companies, and many thought leaders in the space all seem to agree.  We don&#8217;t do agile.  We&#8217;re really not good at software development.</li>
</ol>
<p>We&#8217;re introducing cognitive dissonance again.  We can&#8217;t be good at software development if our process choice was the wrong one.</p>
<h2>Catch and Release</h2>
<p>There&#8217;s a catch to cognitive dissonance.  And this is the striking part.  It isn&#8217;t the case that rational people see the data and don&#8217;t like the conclusions to which it leads.  Cognitive dissonance is a <em>subconscious</em> process.  People are not aware.  In an interview on NPR&#8217;s Science Friday podcast, Dr. Aronson referenced studies with brain scans that demonstrated the dissonance affect.</p>
<p>How big is this affect?  In the podcast, Dr. Aronson refers to multiple cases where prosecutors discover that innocent people are incarcerated (and will continue to be incarcerated).  They have, for example, DNA evidence that the convicted person could not have committed the crime.  And those prosecutors would rather (subconsciously) let the innocent person rot in jail for the rest of his sentence than accept that he was wrongly convicted.  That&#8217;s powerful stuff!</p>
<p>The pleasure centers of the brain of an affected individual are rewarded when they resolve the dissonance by ignoring or discounting the &#8220;conflicting idea.&#8221;   We subvert the possibility of being wrong, at a subconscious level, and our brains reward us for it.  That&#8217;s the catch.</p>
<p>So what do we do?  Our only hope is to consciously accept the premise that our old ideas might be bad.  That we might in fact, <em>not</em> be good at software development (or whatever).  By making the change to acceptance of the new idea &#8211; and perhaps even experiencing contrition about it &#8211; we also will satisfy the pleasure centers of our brains.  That&#8217;s the release.</p>
<h2>Summary</h2>
<p>Cognitive dissonance explains why people feel bad about sunk costs.  The effect is amplified with waterfall processes.</p>
<p>Cognitive dissonance also exists as a barrier to adopting agile processes.  People experience cognitive dissonance when exposed to data that what they&#8217;ve been doing with waterfall processes would be improved by changing to agile processes.  These people resist changing how they run their projects as much as they resist the acknowledgment of changing needs during their projects.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Barrier+To+Agile+Development+http%3A%2F%2Fbit.ly%2FebS7Sc+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/08/07/barrier-to-agile-development/&amp;t=Barrier+To+Agile+Development" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/08/07/barrier-to-agile-development/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Perpetually Almost Finished Projects</title>
		<link>http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/</link>
		<comments>http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 04:07:43 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[burndown]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[project estimation]]></category>
		<category><![CDATA[rolling wave planning]]></category>
		<category><![CDATA[scheduling requirements changes]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[task estimation]]></category>
		<category><![CDATA[use case points]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F06%2Fperpetually-almost-finished-projects%2F", "style": "big", "title": "Perpetually Almost Finished Projects" }); Your project is almost finished. Last week, it was almost finished. And you suspect that next week, it will still be almost finished. Why does this happen, and what can you do about it? In some ways, we&#8217;ve known about this problem for almost [...]]]></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%252F06%252Fperpetually-almost-finished-projects%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Perpetually%20%3Ci%3EAlmost%3C%2Fi%3E%20Finished%20Projects%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F08%2F06%2Fperpetually-almost-finished-projects%2F", "style": "big", "title": "Perpetually <i>Almost</i> Finished Projects" });</script></div>
<p><img title="tortoise" alt="tortoise" src="http://sehlhorst.smugmug.com/photos/181208878-M.jpg" /></p>
<p>Your project is almost finished.  Last week, it was almost finished.  And you suspect that next week, it will still be <em>almost finished</em>.  Why does this happen, and what can you do about it?  In some ways, we&#8217;ve known about this problem for almost <strong>2500 years</strong>  But the solutions are still far from widespread.</p>
<p><span id="more-553"></span></p>
<h2>Zeno&#8217;s Paradox</h2>
<p>The Greek philosopher, Zeno of Alea, posed <a title="zeno's paradox" href="http://en.wikipedia.org/wiki/Zeno%27s_paradoxes">a paradox</a>, in the form of a race between Achilles and a tortoise.  <a title="tortoise wins" href="http://www.mathacademy.com/pr/prime/articles/zeno_tort/index.asp">The tortoise won</a>.  And not like the tortoise and the hare &#8211; the lesson here is mathematical, not one of having good work ethics.  The solution to Zeno&#8217;s paradox is found in infinite series mathematics.  Here&#8217;s an easy to understand version of the paradox:</p>
<blockquote><p>Zeno&#8217;s Paradox may be rephrased as follows. Suppose I wish to cross the room. First, of course, I must cover half the distance. Then, I must cover half the remaining distance. Then, I must cover half the remaining distance. Then I must cover half the remaining distance . . . and so on forever. The consequence is that I can never get to the other side of the room.</p>
<p><cite><a title="zeno and achilles" href="http://www.mathacademy.com/pr/prime/articles/zeno_tort/index.asp">Prime Articles</a></cite></p></blockquote>
<p>As an engineer, frankly, I struggled with infinite series in college.  Differential equations?  Cake.  Infinite Series?  &#8220;Let them eat cake.&#8221;  I struggled to overcome the notion that once you get <em>close enough</em>, you just take a step that is larger than the remaining fraction of the distance, and you&#8217;re done.  There is an interesting parallel in project estimates, and therefore a point to this story.</p>
<h2><em>Almost</em> Completed Tasks</h2>
<p>If you&#8217;ve ever been working on a deliverable, and thought to yourself, &#8220;I&#8217;m almost done,&#8221; then you&#8217;re halfway there.  A day later, you find that you&#8217;re still &#8220;almost done.&#8221;  And after that &#8211; still <em>almost done</em>.  Have you ever depended upon someone to deliver something for you, to have them perpetually <em>almost done</em>?  Like Achilles, some people simply lose out to the tortoise.  But it isn&#8217;t a problem with the people, it&#8217;s a problem with how they are keeping track of their work.  Or with how <em>you&#8217;re</em> asking them to keep track of their work.</p>
<p>Johanna Rothman writes about this exact issue.</p>
<blockquote><p>Imagine you&#8217;re a project manager. You talk to your technical lead and ask how far along the team is. &#8220;Oh, we&#8217;re about 90 percent done,&#8221; he says. If you&#8217;re like most project managers, your heart sinks. You&#8217;ve been here before. Ninety percent done means the other 90 percent is left to do.</p>
<p><cite><a title="johanna's article" href="http://www.stickyminds.com/sitewide.asp?Function=edetail&#038;ObjectType=COL&#038;ObjectId=12569&#038;tth=DYN&#038;tt=siteemail&#038;iDyn=37">Eliminating the 90 Percent Done Game</a></cite></p></blockquote>
<p>We&#8217;ll look at one of the techniques Johanna identifies in her article &#8211; and as we talk about it, we&#8217;ll overlap several of her other suggestions.</p>
<h2>Discrete Deliverables</h2>
<p>Johanna offers several tips to address this issue &#8211; and one of them reminds me of my <em>engineer&#8217;s solution</em> &#8211; just take a step, and to heck with the halfway stuff.  We sidestep the percent complete problem, by having people report a discrete status on a smaller amount of work.  Then we roll those estimates up and describe &#8220;percent of the small tasks that are completed&#8221; instead of &#8220;percent of the nebulous task that has been completed.&#8221;</p>
<p>If people estimate tasks in large chunks (like weeks or months), then when you ask for updates, they can give you an arbitrary percentage complete.  Johanna suggests having developers break up their larger tasks into daily tasks.  In our experience, when building a detailed estimate from the bottom up, all of your tasks should be between 2 and 8 hours.  If a task is shorter than 2 hours, you&#8217;re becoming inefficient &#8211; the time spent tracking the deliverable becomes too burdensome.  And if the task is longer than 8 hours, then you really aren&#8217;t getting a way from the <em>percent complete</em> idea.  This has been very effective for us in projects with both junior and senior people, and in projects with all sorts of deliverables.</p>
<p>Here&#8217;s the interesting part.  Every contributor, working against a set of these 2 to 8 hour deliverables reports them as <em>complete or incomplete</em> &#8211; not with a percentage.  Anything less than completely done is simply tracked as &#8220;not done.&#8221;  Think of it as moving from an analog to a digital world.  Instead of a week-long task like &#8220;Secure the website from hackers&#8221; you would create multiple tasks like &#8220;Whitelist all displays of user generated content&#8221; and &#8220;Implement SQL-Injection protection.&#8221;  For a large site, you might have to break this down further, perhaps by areas of the site, etc.</p>
<p>Rolling these discrete estimates up gives you a top-level <em>percentage complete</em>.  But by breaking it up into discrete deliverables that are independently <em>complete or incomplete</em>, you prevent the &#8220;almost there&#8221; problem.  Eventually, there is only one step left &#8211; and you just take it.</p>
<p>Armed with this approach for task-tracking, you can become even more effective by <a title="burndown for project tracking" href="http://tynerblain.com/blog/2006/09/29/burndown/">using the burndown technique</a> popularized in the scrum world for tracking projects.  We&#8217;ve used this very effectively as a means to help new business analysts manage some large requirements deliverables on a high-profile project.  The new analysts did not have experience in estimation of their tasks, and the project manager did not have confidence in, or visibility of their progress.  By introducing burndown for managing requirements deliverables (use case and activity diagram development and validation), we simultaneously improved the ability of the team to communicate and estimate status.</p>
<p>Johanna also suggests <a title="incremental project management" href="http://tynerblain.com/blog/2006/07/25/incremental-project-mgmt/">using rolling wave planning</a> to track these detailed level tasks.  And this is important &#8211; the further you look into the future, the more changes there will be to the plan before you get to the future.  And therefore the more likely that your planning work will be discarded, as you are asked to do something different.  So only do the detailed planning one release out.  Do <a title="planning with use case points" href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">higher level planning</a> across all the releases.  And then <a title="scheduling requirements changes part 1" href="http://tynerblain.com/blog/2006/04/10/scheduling-requirements-changes-part-1/">establish a process and expectations</a> for how <a title="scheduling requirements changes part 2" href="http://tynerblain.com/blog/2006/04/11/scheduling-requirements-changes-part-2/">changes to the plan</a> will be managed.</p>
<h2>Summary</h2>
<p>When people report the percentage complete of a single task, that estimate is suspect because of the hard-to-nail-down definition of <em>almost done</em>.  When people report the completion of multiple tasks, we can then quantitatively add those up to provide a reliable percentage complete estimate of a set of tasks.</p>
<p>This approach provides for more reliable reporting, and a better feedback loop (helping the estimators get better at estimating).  A side benefit is that the decomposition of large tasks forces or reinforces (depending on how you think about it) the act of decomposing larger tasks into smaller, actionable activities.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Perpetually+%3Ci%3EAlmost%3C%2Fi%3E+Finished+Projects+http%3A%2F%2Fbit.ly%2FhOQL5q+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/&amp;t=Perpetually+%3Ci%3EAlmost%3C%2Fi%3E+Finished+Projects" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/08/06/perpetually-almost-finished-projects/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Prioritization and Value Maximization</title>
		<link>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/</link>
		<comments>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 05:52:15 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Expert systems]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[prioritizing use cases]]></category>
		<category><![CDATA[time boxes]]></category>
		<category><![CDATA[time boxing]]></category>
		<category><![CDATA[timeboxes time-boxes]]></category>
		<category><![CDATA[timeboxing]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[value maximization]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F07%2F31%2Fprioritization-and-value-maximization%2F", "style": "big", "title": "Prioritization and Value Maximization" }); We all know the story about the emperor&#8217;s new clothes. I&#8217;ve been thinking about prioritization and scheduling, and as far as I know, no one is promoting that we maximize value &#8211; they (and we) have been promoting that we do the most valuable [...]]]></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%252F07%252F31%252Fprioritization-and-value-maximization%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Prioritization%20and%20Value%20Maximization%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F07%2F31%2Fprioritization-and-value-maximization%2F", "style": "big", "title": "Prioritization and Value Maximization" });</script></div>
<p><img title="emperor's clothes" alt="emperor's clothes" src="http://sehlhorst.smugmug.com/photos/179245489-M.jpg" /></p>
<p>We all know the story about the emperor&#8217;s new clothes.  I&#8217;ve been thinking about prioritization and scheduling, and as far as I know, no one is promoting that we maximize value &#8211; they (and we) have been promoting that we do the most valuable stuff first.  Doing the most valuable things first does not result in getting value the fastest.  In this article, we show why not.</p>
<p><span id="more-550"></span></p>
<h2>Genesis</h2>
<p>About a month ago, I read an <a title="Prioritize intuitively" href="http://kw-agiledevelopment.blogspot.com/2007/06/how-to-prioritise-quickly-and.html">article by Kelly Waters on how to prioritize intuitively</a>.  He presents a magic square diagram, showing both the &#8220;how valuable is it&#8221; and the &#8220;how hard is it to do&#8221; axes.  I&#8217;m oversimplifying, read his article for more details &#8211; he incorporates elements of risk, complexity, etc.  I really liked that he was addressing the &#8220;missing element&#8221; of how much work is involved.  However, his diagrammatic approach, while presenting this information very well, does not really yield insights into <em>what to do first</em>.  Kelly and I had a great discussion over the next couple weeks, exploring the interplay of work and value in prioritization, trying to find a way to encourage value-maximizing decisions.</p>
<h2>Prioritize By Value</h2>
<p>We have talked about prioritizing the <em><a title="prioritize by value" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">most</a> <a title="prioritize across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">valuable</a> <a title="cost reduction potential" href="http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/">requirements</a></em> first repeatedly.  And in the last of those links, we accidentally hinted at, but didn&#8217;t grasp the real goal:</p>
<blockquote><p>We will only consider those steps where the profitability of change  exceeds our <a title="definition of npv" href="http://tynerblain.com/blog/2006/03/05/definition-of-npv-net-present-value/">hurdle rate</a> for investment.</p></blockquote>
<p>We&#8217;ve also talked in the past about using <a title="Planning a delivery schedule with use cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">use cases as the basis for scheduling</a>, as each use case represents realizable value.  For the rest of this article, we&#8217;ll talk in the context of scheduling use cases across releases.</p>
<p>Consider a very simple example &#8211; you have five use cases, with values of 10, 9, 9, 8, and 7 respectively (the units don&#8217;t matter).  If you sort those use cases in order by value, from left to right, they would look like the following:</p>
<p><img alt="use cases in order by value" title="use cases in order by value" src="http://sehlhorst.smugmug.com/photos/179245556-M.png" /></p>
<p>The size of each box shows the relative value of having the use case implemented.</p>
<p>Based on our previous guidance (and everyone else&#8217;s), you would implement them in order, from left to right.  Makes sense.  Do the most valuable thing first.  Do the next most valuable thing next.  Repeat until the value is not high enough to continue.</p>
<h2>What About The Amount of Work?</h2>
<p>OK, the amount of work required should play a role too.  In our <a title="how to timebox" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">time-boxing article</a>, we describe each release as having a given capacity, which you can visualize in terms of cost (resource) and time (duration of applying resources):</p>
<p><img alt="empty timebox" title="empty timebox" src="http://sehlhorst.smugmug.com/photos/64224627-M.png" /></p>
<p>We fill up that capacity with use cases, based upon how much work is involved.</p>
<p><img alt="filled timebox" title="filled timebox" src="http://sehlhorst.smugmug.com/photos/64224630-M.png" /></p>
<p>We can estimate the work involved with each use case by any of a number of methods &#8211; but the earliest estimates can be developed using <a title="use case points tutorial" href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">use case points</a>.</p>
<p>Consider the following &#8220;work&#8221; measurements, identified for each of our use cases from above:</p>
<p><img alt="prioritize by value with work" title="prioritize by value with work" src="http://sehlhorst.smugmug.com/photos/179245541-M.png" /></p>
<p>We have the same sequence of use case implementation (based on value), but now we can visually see that there are different amounts of work associated with each use case.  The area of each box represents the relative level of effort required to implement the use case.</p>
<h2>Prioritize By Value Results</h2>
<p>The best way to explain the flaw with the classical &#8220;prioritize by value&#8221; approach is to show what happens after the first release.  Consider that you can accomplish 30 units of work in the first release.</p>
<p><img title="empty timebox of size 30" alt="empty timebox of size 30" src="http://sehlhorst.smugmug.com/photos/179245531-M.png" /></p>
<p>We can schedule the first two use cases for this release.  The size of the time-box above represents the amount of work that can be accomplished.  With the first two use cases scheduled, the time-box will look like the following:</p>
<p><img title="first release" alt="first release" src="http://sehlhorst.smugmug.com/photos/179245535-M.png" /></p>
<p>We have completely used up the available capacity of the team (Work = W = 30 = 10 + 20) by delivering the two most valuable use cases.  We have delivered <strong>19 units of value</strong> (Value = V = 10 + 9 = 19).</p>
<h2>Value Maximization</h2>
<p>When we consider both the value (V) and the cost (in terms of work, W) of each use case, we see that some use cases generate more value <em>per unit of work</em> than other use cases.  If we consider the ratios of value to work (V/W), and sort the use cases based on this approach, we would see the following:</p>
<p><img title="ratio order" alt="ratio order" src="http://sehlhorst.smugmug.com/photos/179245567-M.png" /></p>
<p>And with the previous specific value and work values:</p>
<p><img title="value and work in ratio order" alt="value and work in ratio order" src="http://sehlhorst.smugmug.com/photos/179245574-M.png" /></p>
<p>If we were to organize our delivery of use cases based on this ratio, we would be saying &#8220;<strong>prioritize the most effective use cases in terms of value per unit of work</strong>.&#8221;  This may seem counter intuitive, but it makes sense &#8211; get the most bang for the buck earlier, and you will get more value faster.</p>
<p>Consider what our first release would look like:</p>
<p><img title="timebox scheduled by ratio" alt="timebox scheduled by ratio" src="http://sehlhorst.smugmug.com/photos/179245564-M.png" /></p>
<p>We would complete three use cases (using 25 units of available work), and we would deliver <strong>25 units of value</strong>.  We would also be able to start working on one of the use cases that would be delivered in the next release.</p>
<h2>True Maximization</h2>
<p>To find the mathematically proven maximal value, we have to do a bunch more work.  This prioritization exercise is actually an example of the <em>bin-packing problem</em>, an np-complete computer science puzzle.  To make a long story short, we can&#8217;t use a simple heuristic and guarantee that in all cases it will be optimal.  But we can do better than &#8220;most valuable first.&#8221;</p>
<p>If we use the scheduling rule as follows:</p>
<p>Schedule the use cases in order based on the highest value-to-work ratio, skipping use cases that are &#8220;too big&#8221; for the current release.</p>
<p>Then we will get value out of the system as fast as possible.  There are a couple problems with this approach:</p>
<ol>
<li>It does not take into account that you can apply work from one release to a use case that is scheduled in a future release.  Intuitively, any &#8220;remaining time&#8221; after scheduling complete use cases should be spent on the next highest-ratio use case.  I haven&#8217;t proven that mathematically, but it makes sense.</li>
<li>Use cases, and their underlying requirements, and the implementation tasks to support those requirements are not actually independent.  You may need to introduce one use case before another &#8211; the second use case may not be possible without the first one.  Implementing a requirement that is shared across use cases will reduce the &#8220;remaining work&#8221; for those other use cases &#8211; causing a need to recalculate ratios.  Implementation tasks are often dependent upon one another.  The discrete tasks to support a valuable use case may require implementation work that is also leveraged in lower value use cases.  Further, some implementation tasks <em>must</em> be performed sequentially.  You can&#8217;t optimize a query before defining a database schema, for example.</li>
</ol>
<p>The second problem actually applies to any prioritization approach that incorporates value.  The nature of software development introduces constraints (X must be  completed before Y can be started).  Those constraints narrow the possible scheduling choices.  And they make it impractical to determine the &#8220;optimal&#8221; solution.  At least with commercially available tools, excluding expert systems, which can be used to solve this type of problem.</p>
<h2>Conclusion</h2>
<ul>
<li>Sequencing use cases based <em>solely</em> on value does not maximize the delivery of value over time.</li>
<li>Sequencing those use cases based upon the ratio of value to effort will increase the rate at which value is delivered to customers.</li>
<li>It is impractical (and possibly marginally valuable) to determine the optimal sequence for scheduling use cases to maximize value.</li>
</ul>
<p>You should use the &#8220;highest ratio first&#8221; approach, and when a use case can&#8217;t be delivered yet because of interdependencies, skip it.  Also &#8211; apply judgement to sanity check if you are doing something that seems odd &#8211; like delaying a high ratio, high value use case.  Explore with the development team if there are ways to adjust their dependencies to allow for a &#8220;more valuable&#8221; delivery sequence</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Prioritization+and+Value+Maximization+http%3A%2F%2Fbit.ly%2FdTO4vm+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/&amp;t=Prioritization+and+Value+Maximization" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Juggling The Elements of An Iteration</title>
		<link>http://tynerblain.com/blog/2007/06/28/pipelining-anti-pattern/</link>
		<comments>http://tynerblain.com/blog/2007/06/28/pipelining-anti-pattern/#comments</comments>
		<pubDate>Fri, 29 Jun 2007 05:01:16 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[agile software development]]></category>
		<category><![CDATA[iteration]]></category>
		<category><![CDATA[iterative development]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[release scheduling]]></category>
		<category><![CDATA[scheduling software releases]]></category>
		<category><![CDATA[use cases]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/28/pipelining-anti-pattern/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F28%2Fpipelining-anti-pattern%2F", "style": "big", "title": "Juggling The Elements of An Iteration" }); You expect analysis to happen before design, and both to happen before implementation and testing. But how much should these activities be staggered? When a project is being run with monthly releases, it might seem logical to have each group working on [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F06%252F28%252Fpipelining-anti-pattern%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Juggling%20The%20Elements%20of%20An%20Iteration%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F28%2Fpipelining-anti-pattern%2F", "style": "big", "title": "Juggling The Elements of An Iteration" });</script></div>
<p><img title="juggling" alt="juggling" src="http://sehlhorst.smugmug.com/photos/167652719-M.jpg" /></p>
<p>You expect analysis to happen before design, and both to happen before implementation and testing.  But how much should these activities be staggered?  When a project is being run with monthly releases, it might seem logical to have each group working on a different release.  For example, the test team working on the current release (3), the developers on the next release (4), and architects and analysts working on releases 5 and 6 respectively.</p>
<p>If your team is this staggered, you have a problem.  It takes <strong>four months</strong> for a requirement to be released from the time the analyst has documented it.<br />
<span id="more-531"></span></p>
<h2>The Pipelining Anti-Pattern</h2>
<p>Mike Griffiths has an awesome article on the <a title="Leading Answers" href="http://leadinganswers.typepad.com/leading_answers/">LeadingAnswers blog</a> where he describes the <a title="Pipelining Anti-pattern" href="http://leadinganswers.typepad.com/leading_answers/2007/06/the_pipelining_.html"><em>Pipelining Anti-Pattern</em></a>.</p>
<p>A pattern in the software world is a generalized description of a design, a solution, a process, or some other solution to a common problem.  Patterns are intended to be re-used.  <em>Anti-patterns</em> are the same thing &#8211; except they represent descriptions of common bad practices.  An anti-pattern can be a very effective tool for describing a bad way to do something.  It is especially effective when the anti-pattern is prevalent &#8211; most readers start out with &#8220;oh no &#8211; that&#8217;s what we do.&#8221;  It also helps when the anti-pattern is followed with a prescription for a good way to address the common problem, after pointing out the weaknesses and flaws in the anti-pattern.  Mike does a great job with this one.</p>
<p>Pipelining, or as one of Mike&#8217;s commenters calls it, <em>full-pipelining</em>, results in a project being managed as a series of tiny waterfalls &#8211; handing off &#8220;approved requirements&#8221; to yield &#8220;completed designs&#8221; followed by implementation, and ultimately by tests.  If you want a more detailed understanding, and have been lucky enough to never live through this, now would be a good time to check out Mike&#8217;s article.</p>
<p>This can result in months of delay between when a need is identified and when it is satisfied.  During those delays, requirements change.  Teams focus on different releases.  Switching gears to try and collaborate is both hard and expensive.</p>
<p>There has to be a better way.</p>
<h2>Completely Insane Juggling</h2>
<p>At the opposite extreme, everyone is working on the same thing at the same time.  An analyst meets with users in the morning, gathers some requirements, and that afternoon the developers begin implementation and the test team starts defining the validation tests.</p>
<p>Also during the afternoon, the analyst discovers that the requirement was <em>half-baked</em> &#8211; he missed several pieces.  He completes his analysis, writes it up and shares the changes with the rest of the team the next morning.  The developers have to completely throw away the design and the work they&#8217;ve already done &#8211; so they start over.</p>
<p>By the next day, the analyst has discovered that there are bigger fish to fry &#8211; after reviewing his preliminary findings with the business sponsor, he concludes that there are other far more valuable goals to be addressing.  By the time he gets those defined, the developers have already finished the lower-value implementation, and don&#8217;t have time to get the most important features into this release.</p>
<p>We&#8217;ve lost an important premise &#8211; that the most important things get built first.  And we&#8217;ve got some serious inefficiencies, as team members are forced to discard work as their priorities and requirements change underneath them.</p>
<p>There has to be a better way.</p>
<p>Imagine driving on a cliff-side highway.  On one side you have steep rock walls, and on the other, a long, quiet fall.  You really need to avoid either extreme.</p>
<p><img alt="cliff road" title="cliff road" src="http://sehlhorst.smugmug.com/photos/167663475-M.jpg" /></p>
<h2>Finding a Middle Ground</h2>
<p>Some staggering is required.  There&#8217;s a reason that the pipelining anti-pattern ever came into existence.  There are benefits to waiting until you know what to do before you start doing it.  But if you wait too long, the cost of delays ends up exceeding the benefits of efficiency.  At the same time, all of the roles on the team require collaboration &#8211; having people distinctly separated introduces the inefficiency of context switching.  And taken to extremes, introduces unwarranted delays.</p>
<p>The main body of Mike&#8217;s article reads <em>almost </em>like an encouragement to go with the &#8220;fully synchronized&#8221; team.  However, in the comments, there is some clarification and acknowledgment that having analysts run 1/4 to 1/2 iterations ahead of the rest of the team is a good balance in practice.  We&#8217;ve seen that work effectively.  We take an approach that is a little bit different, but nets out to about the same thing.</p>
<h2>Synchronizing Activities</h2>
<p>First, we look at synchronizing development and testing.  Following a <a title="Intro to continuous integration" href="http://tynerblain.com/blog/2006/05/08/foundation-series-continuous-integration/">continuous integration</a> methodology, we keep development and test in sync.  Part of the development process must be testing of their code.  While we may rely on a QA role to assure that the code addresses the needs, the developers must assure that the code does what they intend.  That way, any issues that arise out of QA are issues of misinterpretation of the spec &#8211; not bad code.  This helps avoid the dreaded <a title="code freeze is inefficient" href="http://tynerblain.com/blog/2006/03/01/the-code-freeze-is-killing-the-dinosaurs/">code-freeze</a>.</p>
<p>Second, QA can begin defining the requirements-validation tests as soon as there is a specification to validate.  This happens in parallel with development.  Test cases should be defined from <a title="Use Case Scenarios" href="http://tynerblain.com/blog/2007/04/10/what-are-use-case-scenarios/">use case scenarios</a>.  And use cases are implementation agnostic &#8211; so you don&#8217;t have to wait for the code to be completed.  You need to know how the UI is designed to create test scripts, but not to create the test plan.  So there may be a little lag in execution (of the test team, relative to the development team), but there is very significant overlap.</p>
<p>Third, we deal with the tough one &#8211; defining the spec.  Mike sums this up as two activities &#8211; business modeling and analysis/requirements.  His approach to exploring the tasks (versus the roles) really helps sidestep any turf wars &#8211; or at least sets the stage for rational discussion of the things that need to happen.  We&#8217;ll keep this loose definition, and interpret it as follows: business modeling &#8211; determining what needs to be accomplished (definition of goals, prioritization, etc), analysis / requirements &#8211; defining user stories (or use cases) and the supporting requirements (or specifications).</p>
<p>Before development begins, you have to <a title="How to start agile use cases" href="http://tynerblain.com/blog/2007/03/28/how-to-start-use-cases/">explore the breadth of the project</a> at some level of depth, in order to both scope and prioritize.  Many teams call this &#8220;iteration 0.&#8221;  With that prioritization in place, modeling and analysis can begin in detail for the first release.  This happens before the development team starts developing functionality.  When the team members are started in parallel, this is a great time to get your test harness, source code control, and other operational infrastructure things in place.  Developers can also use this time to get conversant in the domain, if they are not already.</p>
<p>This ultimately results in &#8220;just in time requirements&#8221;, with the development team as close behind as possible.</p>
<p>There is extensive collaboration with developers and testers during spec creation &#8211; helping to assure that what is being requested is both feasible and clearly understood.  This collaboration also enables initial scoping to allow for <a title="scheduling development tasks for stories" href="http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/">scheduling of implementation tasks</a>.</p>
<p>As soon as something is believed to be understood well enough, the development team can start.  Our experience has been that this is usually a couple weeks after analysis begins &#8211; consistent with the &#8220;half a cycle&#8221; comments on Mike&#8217;s article.  We <a title="scheduling requirements changes" href="http://tynerblain.com/blog/2006/04/11/scheduling-requirements-changes-part-2/">manage changes to requirements</a> based upon the complexity of the proposed change.  If a change is too large, or the release too close, the change gets incorporated into the next release.  There are a couple benefits to this approach.  First, expectations are set with developers, so that they aren&#8217;t pressured in a way that might jeopardize quality for a given release.  Second, expectations are maintained with customers, so that their expectations of what is delivered in a particular release are managed effectively.</p>
<p>My personal experience is that this is more effective, results in faster response to change, and when presented professionally, results in higher levels of customer satisfaction than &#8220;drop everything change it now&#8221; approaches.</p>
<h2>What about UX?</h2>
<p>We&#8217;ve been talking in terms of requirements, but the same general approach applies to user experience efforts.  Initial ethnographic studies and branding (layout, look and feel, IA, internal standards) work can be started in iteration 0, with mockups, prototype development, usability studies (at varying degrees of fidelity) happening in parallel with specification development.  And like spec-development, this involves collaboration both with users and developers.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Juggling+The+Elements+of+An+Iteration+http%3A%2F%2Fbit.ly%2FiiVoD2+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/06/28/pipelining-anti-pattern/&amp;t=Juggling+The+Elements+of+An+Iteration" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/28/pipelining-anti-pattern/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Benefits of Agile Story Decomposition</title>
		<link>http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/</link>
		<comments>http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/#comments</comments>
		<pubDate>Thu, 28 Jun 2007 04:55:02 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[managing releases]]></category>
		<category><![CDATA[managing software releases]]></category>
		<category><![CDATA[software release schedule]]></category>
		<category><![CDATA[tasks]]></category>
		<category><![CDATA[user stories]]></category>
		<category><![CDATA[user story]]></category>
		<category><![CDATA[user story break down]]></category>
		<category><![CDATA[user story decomposition]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F27%2Fbenefits-of-agile-stories%2F", "style": "big", "title": "Benefits of Agile Story Decomposition" }); When you plan a release, agile user stories, or classic use cases are the best sized pieces to use in the planning &#8211; from the perspective of your customers. Each user story can be further decomposed into a set of specifications, and those [...]]]></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%252F27%252Fbenefits-of-agile-stories%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Benefits%20of%20Agile%20Story%20Decomposition%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F27%2Fbenefits-of-agile-stories%2F", "style": "big", "title": "Benefits of Agile Story Decomposition" });</script></div>
<p><img alt="open book" title="open book" src="http://sehlhorst.smugmug.com/photos/60909481-M.jpg" /></p>
<p>When you plan a release, agile user stories, or classic use cases are the best sized pieces to use in the planning &#8211; from the perspective of your customers.  Each user story can be further decomposed into a set of specifications, and those into development tasks.  Development tasks are the right sized unit to manage your work breakdown structure &#8211; communicating the release schedule <em>internally</em> with your development team.</p>
<p><span id="more-528"></span></p>
<h2>Overview of Structure</h2>
<p>Even agile projects benefit from having a structured perspective on why and how to develop the software.</p>
<ul>
<li>Customers have goals, and those goals have value.</li>
<li>Those goals are achieved through user stories (or use cases).</li>
<li>Capabilities, usually defined in a specification,  enable people to execute the stories.</li>
<li>Development tasks represent the work that must be done to implement those capabilities.</li>
<li>Tests can be defined to validate the capabilities, and assure that code is working as-designed.</li>
</ul>
<h2>Scheduling Releases</h2>
<p>We&#8217;ve written before about <a title="use cases and release schedules" href="http://tynerblain.com/blog/2005/12/22/communicating-a-delivery-schedule-with-use-cases/">communicating a release schedule with use cases</a>.  The fundamental concept is that you need to deliver actionable, valuable capabilities with each release.  Since customers get value from goals by executing use cases, you need to deliver a complete use case (or user story) for the customer to get value from it.  This also helps with the &#8220;why do I care about release X?&#8221; question &#8211; because it provides value.</p>
<p>Although your customers don&#8217;t need to know which development tasks are included in what release, your team does.  And as a point of clarification, when you are scheduling the work that fits in the <a title="time box scheduling" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">time box for a release</a>, you absolutely can schedule tasks that do not add up to a complete use case.  Sometimes all of the work required to implement a single use case can&#8217;t fit within a single time box.  And there&#8217;s no particular benefit to trying to force it to always happen that way.  It is more important to schedule the most valuable use cases (or user stories) first.  And then communicate to your customers the releases in which those use cases are completed.</p>
<h2>Nine Development Team Benefits</h2>
<p>Doug Blis, at Visionpace, just wrote a good article listing <a title="dividing into tasks" href="http://blog.visionpace.com/2007/06/why_use_tasks.html">nine reasons to divide user stories into tasks</a>.  He provides a couple of paragraphs of detail on each of the following reasons:</p>
<ol>
<li>Iteration Planning</li>
<li>Iteration Burndown</li>
<li>Accountability</li>
<li>Shared &#038; Individual Learning</li>
<li>Tasks Encourage Better Design</li>
<li>Forecasting Velocity</li>
<li>Tasks Serve as Reminders</li>
<li>Talk to the Dog</li>
<li>What if you hear &#8220;can&#8217;t/won&#8217;t task?&#8221;</li>
</ol>
<p>These are all excellent <em>how do we improve as a development team</em> benefits.  Managing your development team&#8217;s efforts at the task level provides enough data-points to improve, without being so much work that it hinders.  Tasks are also the perfect size for extrapolation and improved estimation on future projects.</p>
<h2>Getting Bigger Picture Benefits</h2>
<p>In addition to your development team getting better by using tasks, you can improve your overall software delivery process.  The key is to be able to clearly define the traceability for the project.  Traceability won&#8217;t really help the development team get better at developing (which may be why not many agile proponents talk about it).  But it will help you manage your project, and therefore the release schedule for your product.  And that allows you to improve your relationships with your customers.</p>
<p>Better forecasting of tasks (combined with traceability) yields better forecasting of capabilities.  And this also leads to better forecasting of user stories (or use cases).  This allows you to spend less time <a title="Scheduling Requirements Changes" href="http://tynerblain.com/blog/2006/04/10/scheduling-requirements-changes-part-1/">dealing with changes to the schedule</a> &#8211; and more time focusing on finding huge value for your customers.  And fewer schedule changes result in better relationships, more trust, and higher profit (when you can leverage that trust into higher prices, and when you avoid the costs of schedule changes).<br />
Do it so your development team gets better.  And do it so you deliver better products, and build better relationships.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Benefits+of+Agile+Story+Decomposition+http%3A%2F%2Fbit.ly%2Fe2Ag9v+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/&amp;t=Benefits+of+Agile+Story+Decomposition" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/27/benefits-of-agile-stories/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Failure To Deliver Is Not An Option</title>
		<link>http://tynerblain.com/blog/2007/06/20/failure-to-deliver/</link>
		<comments>http://tynerblain.com/blog/2007/06/20/failure-to-deliver/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 04:54:03 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[product management communication]]></category>
		<category><![CDATA[release communication]]></category>
		<category><![CDATA[release planning]]></category>
		<category><![CDATA[release scheduling]]></category>
		<category><![CDATA[releases]]></category>
		<category><![CDATA[scheduling releases]]></category>
		<category><![CDATA[scheduling releases by use case]]></category>
		<category><![CDATA[software product management]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/20/failure-to-deliver/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F20%2Ffailure-to-deliver%2F", "style": "big", "title": "Failure To Deliver Is Not An Option" }); But sometimes, it happens anyway. The Cranky PM started a great thread of conversation asking how product managers deal with the job of telling customers (and sales folks) that a feature is not going to be available in the promised release. [...]]]></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%252F20%252Ffailure-to-deliver%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Failure%20To%20Deliver%20Is%20Not%20An%20Option%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F20%2Ffailure-to-deliver%2F", "style": "big", "title": "Failure To Deliver Is Not An Option" });</script></div>
<p><img title="rocket launch" alt="rocket launch" src="http://sehlhorst.smugmug.com/photos/165002818-M.jpg" /></p>
<p><em>But sometimes, it happens anyway</em>.</p>
<p>The <a title="Cranky PM" href="http://www.crankypm.com/">Cranky PM</a> started a great thread of conversation asking how product managers deal with the job of telling customers (and sales folks) that a feature is not going to be available in the promised release.</p>
<p><span id="more-522"></span></p>
<h2>CPMs Question</h2>
<p>1) What&#8217;s your favorite PM breakdancing move for telling (or avoiding telling) an important customer that his favorite feature is not planned for any of the next 3 releases?</p>
<p>2) What about for telling the same thing to a sales droid who claims a multi-gazillion dollar deal is going down the toilet because you don&#8217;t have Feature X?</p>
<p><cite>Cranky PM, in <a title="pm backpeddling" href="http://www.crankypm.com/2007/03/share_your_secr.html">Share Your Secret Moves</a></cite></p>
<h2>Several Answers</h2>
<p>The readers of that article really stepped up with nine responses.  Check out CPM&#8217;s article for the details &#8211; but here is a summary of the answers.  Some of these are bad ideas, and some are good.  Usually, the bad ones were written as &#8220;I used to&#8230;&#8221;  Our thoughts about each are also included in the list.</p>
<ul>
<li>[Bad] Wait until the last minute, then deliver the bad news.  We agree &#8211; about the only way to lose credibility faster would be to not admit the feature was missing until <em>after</em> the release, when the customer calls to ask.</li>
<li>[Good] Tell the customer that the scope and priorities have been updated, as soon as the decision has been made.  This builds on, or at least sustains a cooperative trust-based relationship.</li>
<li>[Other] When a customer has multiple features slated for a release, ask them to prioritize them, and try and include them in priority order.  This should be happening anyway, before finalizing the schedule &#8211; but if it hasn&#8217;t already happened, it definitely should happen when the realization occurs.</li>
<li>[Other] Think outside the box &#8211; outsource to get the <em>to-be-missed</em> features included anyway.  Deal with the integration hassles internally.  This can be good or bad, depending on both your team and the partner.</li>
<li>[Bad] Re-characterize the release as a &#8220;get the basics in place&#8221; release, explaining that the <em>to-be-missed</em> features need to come after the basics.  There is some validity to the logic behind this (that you can&#8217;t really know what you need <em>in detail</em> until you start using the application).  But to suddenly discover this after having already committed to a schedule is not good.</li>
<li>[Good] Restructure the release schedule and add a &#8220;next&#8221; release to include the <em>to-be-missed</em> features.  This is one of the tactics we identify when <em>over-filling</em> <a title="rescheduling with timeboxes" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">a time box</a>.</li>
<li>[Good] Don&#8217;t make promises you aren&#8217;t sure you can keep.  This is a preventative solution &#8211; set expectations appropriately, don&#8217;t make promises of content until you near the release.  If you&#8217;re using iterative development, for example, you might be creating a build every month.  You may only be releasing once a quarter to your customer.  If you are using continuous integration, and testing effectively, you know you can avoid regression bugs &#8211; so you know you can release all of the features from the previous interim builds.  Let the customer know that those features have been completed.  You&#8217;re reducing (perceived) risk for the customer &#8211; only the last (and ideally, lowest value) features are still undecided.</li>
<li>[Funny] If the feature is for sales bigwigs, you&#8217;re fired.  If the sales person has less clout, make them follow procedure (justify the business value and document it, etc&#8230;).</li>
<li>[Good] Challenge the premise that a sale is <em>dependent upon</em> feature X.  Push back on or work with the sales folks to identify the true requirements &#8211; not the proposed solution.  From what I&#8217;ve seen of enterprise software, sales are made based on relationships, not features &#8211; and not even price.</li>
<li>[Other] Distract the customer by emphasizing all of the stuff that is important to them that <em>will</em> be in the release.  Softens the blow.  Done well, this can really work.  If you are implementing the most important stuff (to the market) first, the odds are that it is also the most important to this customer.  And by the reverse, the better aligned this customer is to your market, the less effort you are spending on &#8220;one-off&#8221; customizations.  So this redirection technique, when you&#8217;re doing everything else right, could also be classified as &#8220;put it in perspective for the customer.&#8221;  When you do that &#8211; this is definitely good.  If, on the other hand, your priorities are messed up, this can be a bad thing.</li>
<li>[Bad] Make the excuse that the feature slipped because of &#8220;security enhancements&#8221; (or other &#8216;sounds more important&#8217;) taking priority at the last minute.  If this is true, then this is just an example of &#8216;more important stuff is slipping&#8217; &#8211; if it is false, it is lying.  Again &#8211; the &#8216;rabbit out of a hat&#8217; thing should not happen in a positive relationship.  Maybe this is an ethical gray area for some folks, but we choose not to take this approach.</li>
<li>[Good] Share the product road map regularly with customers.  Use the road map as an artifact to set delivery expectations.  That practice is a good one, and is effective in working with sales droids.  It doesn&#8217;t help with <em>to-be-missed</em> features, however.</li>
<li>[Good] De-value the <em>feature request</em> and focus on the <em>benefit request</em>.  Another good one for the <em>feature-X request</em>.  Work with sales to identify the <em>reason why</em> behind the feature.  Then incorporate a solution into the product plan.</li>
</ul>
<p>Really some great answers.  How do we mix these into a recipe for success?</p>
<h2>Success Recipe</h2>
<p>Unfortunately, fire-fighting seems to get more attention than fire-prevention.  We tend to get rewarded more for fixing problems than preventing them.  This of course leads us to get better at extinguishing fires than avoiding them.  But a good software product success strategy is built on fire-prevention, with some contingency plans.</p>
<p>Do the following to prevent problems:</p>
<ul>
<li>Prioritize goals (aka needs or problems) based on market value.  This is the strategic, <em>multi-</em>customer view of your product.</li>
<li><a title="Communicate Releases with Use Cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">Communicate release schedules based on the use cases</a> that enable your customers to achieve those goals.  Note that you may be scheduling <a title="use case versions" href="http://tynerblain.com/blog/2006/12/12/incremental-delivery-and-use-cases/"><em>improving</em> versions of the same use case</a>.</li>
<li>Share that schedule with your customers.  Since you should be continuously refining this plan, you should also be continuously sharing it.  Use this road map in discussions with sales folks.</li>
<li>Make sure that the <a title="Set the right release dates" href="http://tynerblain.com/blog/2007/03/01/scheduling-product-releases/">release dates are not arbitrary</a>.  If you&#8217;re releasing regularly (monthly, for example) &#8211; this is less of an issue.</li>
<li>Establish expectations that your <em>sales-support</em> activities are market-focused, multi-customer activities.</li>
<li>When a sales person approaches you with <em>feature X</em>, work to uncover <em>problem X</em> and then assess and prioritize it for <em>the market</em> relative to everything else.  There are limits to how quickly you can<a title="scheduling requirements changes" href="http://tynerblain.com/blog/2006/04/10/scheduling-requirements-changes-part-1/"> include it in the development schedule</a> without being disruptive.  If you need to be disruptive, make sure it is justified.</li>
</ul>
<p>And when you do have to slip something from the current release:</p>
<ul>
<li>Let the customer(s) who are really dependent upon it know as soon as you suspect.</li>
<li>Keep them appraised as you make progress (or lose ground).  Think of the status report you might give to your manager about a project&#8217;s status.  Well, you really work for the customers, right?  Let them know.</li>
<li>Put things in context.  When you slip something, it better be the lowest priority item.  And if your customer&#8217;s individual needs are aligned with the overall market needs, this is easier to deal with.  When the customer does not represent the market, you have to determine what expenses you are willing to absorb to service the customer.  Not every sale is a good one &#8211; especially if one customer detracts from your ability to sell to multiple customers, or pulls you away from your strategy.</li>
</ul>
<p>Another form of slippage is when you re-prioritize future features.  Now you&#8217;re saying &#8220;here are the changes to the roadmap.&#8221;  The same <em>tell people right away</em>, <em>focus on strategic value</em>, and <em>put things in context</em> ideas still work the best here.</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Failure+To+Deliver+Is+Not+An+Option+http%3A%2F%2Fbit.ly%2Ff1MmvT+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/06/20/failure-to-deliver/&amp;t=Failure+To+Deliver+Is+Not+An+Option" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/20/failure-to-deliver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Planning for Effective Meetings</title>
		<link>http://tynerblain.com/blog/2007/06/13/planning-for-effective-meetings/</link>
		<comments>http://tynerblain.com/blog/2007/06/13/planning-for-effective-meetings/#comments</comments>
		<pubDate>Thu, 14 Jun 2007 04:10:23 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Consulting]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[effective meetings]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[managing meetings]]></category>
		<category><![CDATA[planning effective meetings]]></category>
		<category><![CDATA[planning for meetings]]></category>
		<category><![CDATA[review meetings]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/13/planning-for-effective-meetings/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F13%2Fplanning-for-effective-meetings%2F", "style": "big", "title": "Planning for Effective Meetings" }); Jonathan Babcock has written a couple interesting articles on preparing for a review meeting. He touches on a couple generic &#8220;good ideas&#8221; and explores one critical idea in more detail. We focus on that detail &#8211; helping participants be prepared to participate &#8211; 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%252F06%252F13%252Fplanning-for-effective-meetings%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Planning%20for%20Effective%20Meetings%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F13%2Fplanning-for-effective-meetings%2F", "style": "big", "title": "Planning for Effective Meetings" });</script></div>
<p><img title="effective meetings" alt="effective meetings" src="http://sehlhorst.smugmug.com/photos/162705621-M.jpg" /></p>
<p>Jonathan Babcock has written a couple interesting articles on preparing for a review meeting.  He touches on a couple generic &#8220;good ideas&#8221; and explores one critical idea in more detail.  We focus on that detail &#8211; helping participants be prepared to participate &#8211; in this article.  His articles, and this topic in general are useful to anyone who runs meetings that require participation from attendees &#8211; business analysts, product managers, and project managers, for example.<br />
<span id="more-516"></span></p>
<h2>Meeting Planning Articles</h2>
<p>We&#8217;ve created a <em>bundle</em> of articles at <a title="collecting the best articles on project management" href="http://tynerblain.com/nexus/">nexus</a> about <a title="How to plan and run effective meetings" href="http://tynerblain.com/nexus/bundle/show/2-how-to-plan-and-run">how to plan and run effective meetings</a>.  The bundle includes both of Jonathan&#8217;s articles, as well as one of our own on making meetings more effective and a Business Week article on how Google runs meetings.</p>
<p>The bundle is open for collaboration, so other nexus users may add other articles on the topic.  You don&#8217;t have to be a registered user at nexus to read the articles, so click on over and check them out.  Then take a couple minutes to register and rate or review the articles &#8211; because the seconds you spend vetting these articles will save others minutes when they are researching in the future.</p>
<h2>Summarizing the Main Prep-Points</h2>
<p>Jonathan&#8217;s main prep points include</p>
<ul>
<li>Distributing the material early enough for participants to review and provide feedback</li>
<li>Circulating an agenda in advance</li>
<li>Reserve the meeting room &#038; equipment</li>
<li>Request confirmation of attendance or delegation where appropriate</li>
</ul>
<p>The other articles include the following prep points</p>
<ul>
<li>Defining the goals and deliverables of the meeting up front to set expectations</li>
<li>Assigning a note-taker or scribe for the meeting</li>
</ul>
<h2>Unprepared Participants</h2>
<p>Jonathan raises an interesting issue &#8211; when, in spite of your prep work, people fail to prepare for the meeting, what should you do?  This is a tough one.  If you start with the assumption that only people who <em>need to be in the meeting</em> are actually invited to the meeting, this issue becomes critically important.  In many organizations, too many people attend meetings.  They are certainly wasting their own time, and often end up wasting everyone&#8217;s time.  If you are <em>culturally obligated</em> to invite superfluous people to the meetings, that&#8217;s unfortunate, but don&#8217;t worry about making sure they are prepared.  Focus on the people who <em>need</em> to be there and be prepared.</p>
<p>Jonathan writes his advice specifically for requirements specification review meetings &#8211; where people&#8217;s input is critically important.  The issues and advice apply to any of a number of collaborative or approval meetings.  They can be generally described as meetings where multiple people need the information, should provide input, and ultimately must agree on the outcome of the meeting.</p>
<h2>Don&#8217;t Do This</h2>
<p>Sometimes you, and everyone else in the meeting needs to take the efficiency hit of dragging along the folks who didn&#8217;t do their homework.  If you have to, you have to.  After the meeting, talk privately with the person who let everyone down, and work together to prevent it from happening in the future.</p>
<p>Don&#8217;t attack the person publicly in the meeting.  Don&#8217;t slam your notebook closed and declare the meeting to be over because <em>someone had something more important to do</em>.  That would be just as unprofessional as it was to discover that people were unprepared for the meeting.  Maybe that person did have something more important to do.  The problem truly isn&#8217;t that they were unprepared, the problem is that you didn&#8217;t know about it in advance, and couldn&#8217;t respond appropriately.</p>
<p>That&#8217;s the crux of the issue, and the reason that Jonathan&#8217;s advice is good.</p>
<h2>Do This Instead</h2>
<p>Touch base with the attendees before the meeting.  Make sure that everyone who needs to be prepared is prepared.  If someone needs to bring materials, make sure they have them ready to go.  Work with them to get them completed if you need to.  Reschedule the meeting if you need to.  Carry on with the meeting, and deal with the missing contributions if that is what is appropriate.  You can&#8217;t do everyone&#8217;s job for them &#8211; but you can do your job for everyone.  The meeting attendees are implicitly relying upon you to not waste <em>their</em> time.  And since it is your meeting, if someone you are relying upon is failing to deliver, it is your responsibility to adapt.</p>
<p>Jonathan offers a couple suggestions to get attendees to prepare for the meeting.  His first suggestion is to get their inputs so that you can incorporate them into the agenda.  This is a good approach, because it helps attendees develop a sense of ownership in the agenda.  Even if they don&#8217;t modify the agenda, they are taking some ownership in what you have put together by acknowledging and accepting it.</p>
<p>Jonathan also suggests letting attendees know that you will cancel or reschedule the meeting if you don&#8217;t have their inputs a day or two in advance of the meeting.  We would approach this with a slightly lighter touch, but we like the base idea.  When there are inputs that would crater the meeting if they were absent, work with the contributors to assure that they will have those inputs ready.  If they can&#8217;t get them done in time, work with them to reschedule the meeting (before the meeting begins) so that you can carry out the meeting with their inputs.</p>
<p>Often, meetings get derailed when people who are &#8220;too busy&#8221; are simply not conversant with the material to be covered.  They don&#8217;t have the background they need, or a deep enough understanding to be effective in the meeting.  The classic example is a decision maker who needs to know the context for making decisions.  When everyone else in the meeting has the context, you&#8217;re wasting their time getting the decision maker up to speed during the meeting.  Work with that attendee to find a time to help them review before the meeting, or reschedule the meeting, or ask them not to attend it at all.  If you have a one hour meeting with seven people, you&#8217;re wasting six hours (across the team) by going over the material again to get the laggard up to speed.  Wouldn&#8217;t it be better to spend two hours in a one-on-one with that person before the group gets together?</p>
<p>To quote Jonathan:</p>
<blockquote><p>Worst of all, whether it’s completely fair or not, the productivity of a Business Analyst’s meetings are seen as a direct reflection on the his/her organizational and interpersonal skills.</p></blockquote>
<h2>Other Approaches</h2>
<p>Craig Brown offers a couple tips in the comments on Jonathan&#8217;s second article.  He suggests meeting with the leaders in advance of the meeting, and also providing them with printed versions of the materials before the meeting.  Craig suggests letting the leaders know that you will collect their &#8220;marked up&#8221; versions of the documents [before] the meeting.  I&#8217;ve seen this be very effective with upper managers and decision makers.  There&#8217;s something about marking up a print-out that engages these folks.</p>
<p>Maybe they are less comfortable with electronic documents (although that is becoming less true every day, and varies from company to company).  I suspect that marking up a paper copy allows someone to &#8220;scan&#8221; more effectively, cross-reference with other documents, and put things in context better.  Often the &#8220;decision makers&#8221; are in a unique position of having fewer details and more context.  Giving them an alternative medium for reviewing the docs may help them to put things in perspective more effectively.</p>
<p>What approaches would you suggest?</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Planning+for+Effective+Meetings+http%3A%2F%2Fbit.ly%2FgxOOFi+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/06/13/planning-for-effective-meetings/&amp;t=Planning+for+Effective+Meetings" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/13/planning-for-effective-meetings/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>APR: Scope and Vision</title>
		<link>http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/</link>
		<comments>http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/#comments</comments>
		<pubDate>Thu, 19 Apr 2007 02:00:26 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Agile Project: Ratings]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile case study]]></category>
		<category><![CDATA[agile project]]></category>
		<category><![CDATA[agile requirements management]]></category>
		<category><![CDATA[agile software development]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[project scope]]></category>
		<category><![CDATA[project vision]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[scope and vision]]></category>
		<category><![CDATA[vision]]></category>
		<category><![CDATA[vision document]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/</guid>
		<description><![CDATA[topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F04%2F18%2Fapr-scope-and-vision%2F", "style": "big", "title": "APR: Scope and Vision" }); To define the boundaries for our agile project, we need to define the scope. To provide a guiding framework for the rest of the work, we need to document the vision. We could create heavy-weight scope documents and vision documents. And we could run [...]]]></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%252F04%252F18%252Fapr-scope-and-vision%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22APR%3A%20Scope%20and%20Vision%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F04%2F18%2Fapr-scope-and-vision%2F", "style": "big", "title": "APR: Scope and Vision" });</script></div>
<p><img alt="telescope" title="telescope" src="http://sehlhorst.smugmug.com/photos/144864280-M.jpg" /><br />
To define the boundaries for our agile project, we need to define the scope.  To provide a guiding framework for the rest of the work, we need to document the vision.  We could create heavy-weight scope documents and vision documents.  And we could run them through reviews and get approvals and wordsmith them to death.</p>
<p>But we won&#8217;t.  Agile processes are about documenting <em>enough</em>, not documenting for the sake of documenting.  This is a small project with an even smaller team (one person right now &#8211; but that will grow as people start helping out).  An informal documentation style will be sufficient.  The key element is to have something referenceable and mutable.  If we can&#8217;t change the scope or the vision based on market feedback, we aren&#8217;t being agile.</p>
<p>These two project management artifacts seem logical to combine into a single article</p>
<p><span id="more-465"></span></p>
<h2>Vision Document</h2>
<p>Create a site that allows people in our niche to help each other find great articles, regardless of who wrote them.  People will identify and evaluate (rate/review/score) articles on their merits.  People will also categorize (taxonomy/folksonomy) the articles to make it easier for others to find documents that they are looking for at that time.  When a person is searching in our space for an article, it is either as a beginner or an expert (on that subtopic).  This site should help people filter to look for articles appropriate for the type of search they are doing at that time.</p>
<p>[Update 26 Apr 2007: We've <a title="Vision Update" href="http://tynerblain.com/blog/2007/04/26/apr-vision-update-1/">updated the vision for the project</a> - the update is included below]</p>
<p>Using the language described in Gene Smith’s <em>Social Software Building Blocks</em> (http://nform.ca/publications/social-software-building-block), we want to focus on sharing and reputation, while incorporating elements of identity, conversations, and relationships. We do not want to focus features on groups or presence.   The diagram for our site would therefore look like the following:</p>
<p><img alt="social honeycomb" title="social honeycomb" src="http://sehlhorst.smugmug.com/photos/147204373-M.png" /></p>
<p><img title="ratings site honeycomb" alt="ratings site honeycomb" src="http://sehlhorst.smugmug.com/photos/147204376-M.png" /></p>
<h2>Scope</h2>
<p>In this project, we talk a lot about &#8220;our space&#8221; and &#8220;our niche.&#8221;  Our niche is intended to be articles about:</p>
<ul>
<li>product management</li>
<li>business analysis</li>
<li>requirements definition and management</li>
<li>business rule definition and management</li>
<li>business process modeling</li>
<li>agile processes</li>
<li>interaction design</li>
</ul>
<p>In terms of functionality, our scope is limited to improving everyone&#8217;s ability to find great content in our niche.  That might mean making it easy for authors to tell people about articles, but more intentional is the ability for people to highlight great articles for each other.  The scope is not intended to provide a mechanism for people to  content.  People should be able to indicate some assessment of the content &#8211; not just an unadorned link to the content.  That may mean ratings, reviews, comments, thumbs up/down, etc.</p>
<p>In terms of deployment, this project will be a &#8220;self contained website&#8221; that is intended to be deployed into a subfolder at Tyner Blain ( http://tynerblain.com/folder/ ).  We may elect to deploy it somewhere else (like a subdomain, or a separate TLD).</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+APR%3A+Scope+and+Vision+http%3A%2F%2Fbit.ly%2Ff4w8JK+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/&amp;t=APR%3A+Scope+and+Vision" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/04/18/apr-scope-and-vision/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Agile Release Planning With Games</title>
		<link>http://tynerblain.com/blog/2007/03/30/agile-release-planning/</link>
		<comments>http://tynerblain.com/blog/2007/03/30/agile-release-planning/#comments</comments>
		<pubDate>Sat, 31 Mar 2007 02:00:31 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[agile development]]></category>
		<category><![CDATA[agile project management]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[release planning]]></category>
		<category><![CDATA[software release planning]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/03/30/agile-release-planning/</guid>
		<description><![CDATA[Leading Answers, an agile project management blog, has a great article that details some agile techniques for release planning exercises.  Their article includes explanations and great diagrams.]]></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%252F03%252F30%252Fagile-release-planning%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Agile%20Release%20Planning%20With%20Games%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F03%2F30%2Fagile-release-planning%2F", "style": "big", "title": "Agile Release Planning With Games" });</script></div>
<p><img alt="monopoly money" title="monopoly money" src="http://sehlhorst.smugmug.com/photos/139790667-M.jpg" /></p>
<p><a title="Leading Answers" href="http://leadinganswers.typepad.com/leading_answers/">Leading Answers</a>, an agile project management blog, has a great article that details some <a title="Agile Release Planning" href="http://leadinganswers.typepad.com/leading_answers/2007/03/release_and_ite.html">agile techniques for release planning</a> exercises.  Their article includes explanations and great diagrams.  Check it out.</p>
<p>We haven&#8217;t done any of these particular exercises, but really liked the article and ideas.  Especially the transition from the &#8220;Remember the Future&#8221; exercise to the &#8220;Shape the Product Tree&#8221; exercise.</p>
<p>Anyone tried these agile release planning techniques before?  Have any success or horror stories?</p>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=By+%40sehlhorst%3A+Agile+Release+Planning+With+Games+http%3A%2F%2Fbit.ly%2Fif0wy2+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/03/30/agile-release-planning/&amp;t=Agile+Release+Planning+With+Games" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/en/facebook/tt-facebook-big4.png" alt="Post to Facebook" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/03/30/agile-release-planning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

