<?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>Eyefodder &#187; Software Estimation</title>
	<atom:link href="http://eyefodder.com/category/engineering/software-estimation/feed" rel="self" type="application/rss+xml" />
	<link>http://eyefodder.com</link>
	<description></description>
	<lastBuildDate>Sat, 26 Aug 2017 21:12:17 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>Performance &#8211; spend it wisely and never raise the debt ceiling</title>
		<link>http://eyefodder.com/2011/08/software-performance-dont-get-downgraded.html</link>
		<comments>http://eyefodder.com/2011/08/software-performance-dont-get-downgraded.html#comments</comments>
		<pubDate>Sat, 06 Aug 2011 23:49:52 +0000</pubDate>
		<dc:creator><![CDATA[Paul Barnes-Hoggett]]></dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[Quality Software]]></category>
		<category><![CDATA[Software Estimation]]></category>

		<guid isPermaLink="false">http://www.eyefodder.com/?p=140</guid>
		<description><![CDATA[<p>The US had it&#8217;s credit rating downgraded yesterday. For many people, it seems at first a little abstract and vaguely ominous—a chance for China to get it&#8217;s own back after being harangued by the US on its undervaluation of the Yuen. Maybe the outcome will be catastrophic, maybe not so much. Only time will tell. [&#8230;]</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/08/software-performance-dont-get-downgraded.html">Performance &#8211; spend it wisely and never raise the debt ceiling</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>The US had it&#8217;s <a href="http://www.nytimes.com/2011/08/06/business/us-debt-downgraded-by-sp.html?ref=global">credit rating downgraded</a> yesterday. For many people, it seems at first a little abstract and vaguely ominous—a chance for <a href="http://www.nytimes.com/2011/08/07/business/global/china-a-big-creditor-says-us-has-only-itself-to-blame.html?hp">China to get it&#8217;s own back</a> after being harangued by the US on its <a href="http://uk.reuters.com/article/2010/09/23/uk-usa-china-yuan-idUKTRE68M09H20100923">undervaluation of the Yuen</a>. Maybe the outcome will be catastrophic, maybe not so much. Only time will tell. What Standard and Poor&#8217;s have basically said is that there is more chance than before that America will fail to pay its bills on time. But what does this have to do with quality software and how it gets built? Well here&#8217;s the thing—the way the US government are managing the economy and the debt ceiling are very similar to the way many software projects go slowly south; everyone recognizes that something needs to be done, but none can agree on what the right course of action actually is.</p>
<div id="attachment_141" style="width: 499px" class="wp-caption aligncenter"><img class="size-full wp-image-141 " title="Don't overpromise and foreclose on your project" src="http://eyefodder.com/wp-content/uploads/2011/08/100-will-buy-this-car-great-depression-stock-crash.jpeg" alt="Stock market crash &quot;100 dollars will buy this car, lost all on stock market&quot;" width="489" height="323" /><p class="wp-caption-text">Don&#039;t overpromise and foreclose on your project</p></div>
<p><span id="more-140"></span></p>
<h2>Performance as money</h2>
<p>I first was introduced to the idea of performance as money through watching an <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/">MIT lecture series on algorithms</a>. In the <a href="http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/lecture-1-administrivia-introduction-analysis-of-algorithms-insertion-sort-mergesort/">opening lecture</a>, Charles Leiserson talks about performance as currency:</p>
<blockquote><p>A good way I think about performance, and the reason it&#8217;s on the bottom of the heap, is sort of like performance is like money, it&#8217;s like currency. You say what good does a stack of hundred dollar bills do for you? Would you rather have food or water or shelter or whatever? And you&#8217;re willing to pay those hundred dollar bills, if you have hundred dollar bills, for that commodity.</p></blockquote>
<p>when he talks about performance being on the bottom of the heap, what he&#8217;s talking about is how other things are more important than performance; features, security, ease of use and so on.</p>
<h2>Performance constraints as the debt limit</h2>
<p>I&#8217;ve posted before on <a href="http://www.eyefodder.com/2011/06/quality-software-non-functional-requirements.html">non functional requirements every application should have</a>, and first and foremost amongst those constraints is performance. The deal you need to make with yourself and your users is how much of that performance stack of bills are you willing or able to spend to get there? all of the decisions you make, from language choice to functionality to visual design are informed by this decision. Setting your performance constraint is just like setting your household budget (or the government&#8217;s debt ceiling).</p>
<h2>And the credit rating?</h2>
<p>To extend the metaphor a little bit further than is natural, the credit rating is akin to the likelihood that your project will fail overall. We don&#8217;t have a good measure for that in software development, but I do think drawing the parallel is interesting. If you read the <a href="http://www.standardandpoors.com/servlet/BlobServer?blobheadername3=MDT-Type&amp;blobcol=urldata&amp;blobtable=MungoBlobs&amp;blobheadervalue2=inline%3B+filename%3DUS_Downgraded_AA%2B.pdf&amp;blobheadername2=Content-Disposition&amp;blobheadervalue1=application%2Fpdf&amp;blobkey=id&amp;blobheadername1=content-type&amp;blobwhere=1243942957443&amp;blobheadervalue3=UTF-8">S&amp;P downgrade overview</a>, you will see that the decision was in part due to the rising debt burden (technical debt?), but more significantly it is due of the infighting and lack of a clear plan forward:</p>
<blockquote><p>More broadly, the downgrade reflects our view that the effectiveness, stability, and predictability of American policymaking and political institutions have weakened…</p></blockquote>
<p>This sounds so much like entrenched behavior of stakeholders on a poorly managed software projects (and its effect) that I couldn&#8217;t pass on the opportunity to use it. Simply put, if you have a lack of alignment and clear plan about what is acceptable, what is important and how you are going to spend your resources (or generate income) things aren&#8217;t going to be plain sailing.</p>
<h2>Performance—Avoid foreclosure</h2>
<p>O.K. I really am stretching it here, but I wanted to finish up with how I think you best avoid getting mired in software rot or simply just building something that no-one wants to use. And it&#8217;s really similar to being financially prudent:</p>
<ul>
<li>Understand that almost everything you do bears some cost to performance</li>
<li>Decide what is an acceptable level of performance…</li>
<li>…and spend within your means</li>
<li>Don&#8217;t go into debt(let performance drop below acceptable level)</li>
<li>But sometimes it&#8217;s going to happen. If it does, get a plan in place quickly to address it.</li>
</ul>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/08/software-performance-dont-get-downgraded.html">Performance &#8211; spend it wisely and never raise the debt ceiling</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eyefodder.com/2011/08/software-performance-dont-get-downgraded.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Try this, my mini-application for software estimation</title>
		<link>http://eyefodder.com/2011/07/try-this-my-mini-application-for-software-estimation.html</link>
		<comments>http://eyefodder.com/2011/07/try-this-my-mini-application-for-software-estimation.html#comments</comments>
		<pubDate>Tue, 05 Jul 2011 18:50:02 +0000</pubDate>
		<dc:creator><![CDATA[Paul Barnes-Hoggett]]></dc:creator>
				<category><![CDATA[Agile Software Development]]></category>
		<category><![CDATA[Quality Software]]></category>
		<category><![CDATA[Software Estimation]]></category>

		<guid isPermaLink="false">http://www.eyefodder.com/?p=134</guid>
		<description><![CDATA[<p>A couple of weeks ago I wrote about a simple yet powerful process for software estimation. When I was done I started to look at my excel worksheet for doing this process and figured that it could be something I could share with a broader audience. Rather than just post an excel file, I decided [&#8230;]</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/07/try-this-my-mini-application-for-software-estimation.html">Try this, my mini-application for software estimation</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>A couple of weeks ago I wrote about a <a title="Software Estimation — A good simple way courtesy of the Navy and the cold war" href="http://www.eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html">simple yet powerful process for software estimation</a>. When I was done I started to look at my excel worksheet for doing this process and figured that it could be something I could share with a broader audience. Rather than just post an excel file, I decided to create a simple software estimation app and post it here. You can go <a title="How long will your project take?" href="http://www.eyefodder.com/how-long-will-your-project-take-software-estimation-app">check it out now</a>, or read on to get a bit more detail into the thinking behind it.</p>
<div id="attachment_128" style="width: 478px" class="wp-caption aligncenter"><a href="http://www.eyefodder.com/how-long-will-your-project-take-software-estimation-app"><img class="size-full wp-image-128" title="Estmator Application" src="http://eyefodder.com/wp-content/uploads/2011/07/EstmatorApp.png" alt="Screenshot of the software estimation app" width="468" height="549" /></a><p class="wp-caption-text">The estimation app in action</p></div>
<p><span id="more-134"></span></p>
<h2>The application</h2>
<p>The application is really simple. You just break down your project into a few tasks and enter three estimates for each—Optimistic, Nominal and Pessimistic (To get what I mean about these terms, check out this <a title="Software Estimation — A good simple way courtesy of the Navy and the cold war" href="http://www.eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html">post</a>). What it then does is calculate the expected duration of the tasks as well as a high and low end of a range that you can have 95% confidence in. On top of that, it consolidates all of your estimates into a rolled up view that tells you how long you can expect your full project to take. See, there can be some science behind software estimation after all (if you want the details behind how the estimates are worked out, they&#8217;re covered in a <a title="Software Estimation — A good simple way courtesy of the Navy and the cold war" href="http://www.eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html">previous post</a>).</p>
<h2>The sparklines</h2>
<p>One of the things I wanted to do over and above a spreadsheet was to make something that was clean and simple to read yet packed a lot of information into each row. What originally was six data points has been reduced to two thanks to using <a href="http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0001OR">sparklines</a>. I could have possibly also done away with the low and high end estimates and had them as rollovers (like in the main result chart) but I just found it to be too overloaded and hard to read. I&#8217;ve found that there has been some really nice outcomes from using the sparklines:</p>
<ul>
<li>I can see which tasks have the most uncertainty in them (those with the broadest range)</li>
<li>I can see how different tasks stack up against one another by comparing the sparklines vertically (they&#8217;re all on the same x axis scale). I can do this much quicker than if it were a numeric table</li>
<li>I can present a hierarchy of information. The ranges are most important, then the expected time (which you can see on rollover), followed by the variance and the shape of the estimate which you can infer from the shape of the chart</li>
</ul>
<h2>The results script</h2>
<p>One of my big frustrations is that when people come up with software estimates, they give you values that imply a far greater precision than is reasonable. I&#8217;ve seen software estimates for a project in terms like &#8220;3042.5 hours&#8221; What this does is <em>imply</em> that the estimate is between 3042.45 and 3042.55 hours. Far more likely is that you have added up a number of estimates and at best you might be precise to within ten, twenty or even fifty hours (tough to say without knowing more about the estimate, but you get the drift). With the results script, I&#8217;ve tried to represent this by using natural language to lessen the implied precision. A few examples:</p>
<ul>
<li>Anything less than 1 is represented as &#8220;A few hours&#8221; &#8220;less than a day&#8221;</li>
<li>Up to a week you have &#8220;A couple of days&#8221; or &#8220;A few days&#8221;</li>
<li>Up to a month you have &#8220;About a week, a couple of weeks, three weeks</li>
<li>More than that, time is measured in months</li>
</ul>
<p>While looking into this, I also found this article talking about the <a href="http://northerneconomics.com/blog/?p=49">psychology of the zero</a>. In essence it says that people are more likely to &#8216;accept&#8217; a number with implied precision than one without. If you want to try this out and use the calculated numbers, rolling over the dots on the results plot will give you them. I also left in the calculated numbers for the individual tasks so you can see what&#8217;s going in to the final estimate.</p>
<h2>What&#8217;s next?</h2>
<p>Well, I&#8217;m hoping you&#8217;ll tell me. Right now, all estimates are in days and part days, but I thought I could add an option so you could put estimates in hours for smaller tasks. Maybe some export options or something. If you use this app and get some value from it, let me know if there&#8217;s anything else you&#8217;d like to see it do. So go ahead and <a title="How long will your project take?" href="http://www.eyefodder.com/how-long-will-your-project-take-software-estimation-app">try it out</a> and let me know what you think!</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/07/try-this-my-mini-application-for-software-estimation.html">Try this, my mini-application for software estimation</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eyefodder.com/2011/07/try-this-my-mini-application-for-software-estimation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Estimation — A good simple way courtesy of the Navy and the cold war</title>
		<link>http://eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html</link>
		<comments>http://eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html#comments</comments>
		<pubDate>Sun, 19 Jun 2011 16:25:33 +0000</pubDate>
		<dc:creator><![CDATA[Paul Barnes-Hoggett]]></dc:creator>
				<category><![CDATA[Quality Software]]></category>
		<category><![CDATA[Software Estimation]]></category>

		<guid isPermaLink="false">http://www.eyefodder.com/?p=115</guid>
		<description><![CDATA[<p>In my last post I told you that your next project will take longer than you think. Now I&#8217;ve destroyed hope I&#8217;m going to show you how you can use this knowledge to be better at software estimation. We&#8217;re going to use a simple but very effective technique first developed by the Navy back in [&#8230;]</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html">Software Estimation — A good simple way courtesy of the Navy and the cold war</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>In my last post I told you that <a title="Your project will take longer than you think and less than a Nukem" href="http://www.eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html">your next project will take longer than you think</a>. Now I&#8217;ve destroyed hope I&#8217;m going to show you how you can use this knowledge to be better at software estimation. We&#8217;re going to use a simple but very effective technique first developed by the Navy back in the &#8217;50s when they were <a href="http://www.lessons-from-history.com/node/116">building the Polaris nuclear submarine</a>. Faced with tremendous risk and uncertainty, they had to work out how to build a missile that had never been built before, to be carried on a submarine more complex than contemporary technology would allow. And by the way, they had to work out how get a missile to launch underwater and hit a target thousands of miles away when no one had built a decent guidance system before. Oh, and the Russians were breathing down their neck with the <a href="http://en.wikipedia.org/wiki/Sputnik_1">Sputnik</a> project. The Navy managed to develop a system of estimation and risk management that was so effective, they delivered three years early. Think your project is harder to estimate than that? Think again. Get on board and read on to find out how you can use this technique for your own means&#8230;</p>
<div style="width: 490px" class="wp-caption aligncenter"><a href="http://www.oldmodelkits.com/index.php?detail=15359&amp;manu=Renwal" target="_blank"><img class=" " title="How long would it take you to build the world's most formidable weapon?" src="http://www.oldmodelkits.com/jpegs/r/Revell%20H308%20NautMP.JPG" alt="" width="480" height="189" /></a><p class="wp-caption-text">How long would it take you to build &#8220;the free world&#8217;s most formidable weapon&#8221;?</p></div>
<p><span id="more-115"></span></p>
<h2>The real reason why your project will take longer than you think</h2>
<p>What the Navy realized is that when you give a baseline estimate, the number you tend to give is how long you think it will take in ordinary circumstances; the outcome that will happen most of the time. This isn&#8217;t however the <em>average</em> amount of time the task will take. How so? Consider this extract from Bob Martin&#8217;s excellent book <a href="http://www.amazon.com/gp/product/0137081073/ref=as_li_ss_tl?ie=UTF8&amp;tag=eyefodder-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0137081073">The Clean Coder</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0137081073&amp;camp=217145&amp;creative=399373" alt="" width="1" height="1" border="0" /> where he describes a typical software estimation conversation:</p>
<blockquote><p>Mike: “How likely is it that you’ll be done in three days?</p>
<p>Peter: “Pretty likely.”</p>
<p>Mike: “Can you put a number on it?”</p>
<p>Peter: “Fifty or sixty percent.”</p>
<p>Mike: “So there’s a good chance that it’ll take you four days.”</p>
<p>Peter: “Yes, in fact it might even take me five or six, though I doubt it.”</p>
<p>Mike: “How much do you doubt it?”</p>
<p>Peter: “Oh, I don’t know … I’m ninety-five percent certain I’ll be done before six days have passed.”</p>
<p>Mike: “You mean it might be seven days?”</p>
<p>Peter: “Well, only if everything goes wrong. Heck, if everything goes wrong, it could take me ten or even eleven days. But it’s not very likely that so much will go wrong.”</p></blockquote>
<p>As <a href="http://www.objectmentor.com/omTeam/martin_r.html">Uncle Bob</a> goes on to explain, what&#8217;s going on here is that Mike is describing a probability distribution, something like this:</p>
<p><img class="aligncenter size-full wp-image-119" title="Chances of delivering on a certain day" src="http://eyefodder.com/wp-content/uploads/2011/06/DeliveryDistribution.png" alt="" width="577" height="331" /></p>
<p>What is happening is that when you describe how long you think it will take, you are describing the <strong><em>mode</em></strong> &#8211; what will happen most often. However because there is more chance of running over than under, you need to take that into account. What the Navy did was find a really quick simple way of finding the mean by looking at three simple estimates for the duration of a task&#8230;</p>
<h2>Three little estimates</h2>
<p>They figured out that if you can get people to estimate these three possible outcomes, you can calculate the expected duration for a task:</p>
<h3>Nominal (ψ)</h3>
<p>This is the standard issue estimate, what people are used to giving—the amount of time you would expect a task to take under normal circumstances. In the example above it would probably be 3.</p>
<h3>Nukem (ω)</h3>
<p>This is the longest it could take if pretty much everything went wrong. This is the one in a thousand worst case scenario, the Nukem (for more on this read my last <a title="Your project will take longer than you think and less than a Nukem" href="http://www.eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html">post</a>). Mike&#8217;s Nukem is 11.</p>
<h3>Mu-nicorn (μ)</h3>
<p>I took extreme license with naming this one, but bear with me. This is the your estimate of how long this would take if the stars aligned, unicorns pair programmed with you and generally everything went so well you have to check yourself.</p>
<h2>Super Simple Math</h2>
<p>Now you have these estimates, you can calculate the expected duration of the task using this formula:</p>
<p><em style="font-size: 3em;">T<sub>e</sub> = (μ + 4ψ + ω)/6</em></p>
<p>You can also get the standard deviation of the estimate, which gives a measure of how uncertain the task is:</p>
<p><em style="font-size: 3em;">σ = (ω &#8211; μ )/6</em></p>
<p>Now, you can tell people that you are pretty confident that your task will take between <em style="font-size: 1.3em;">T<sub>e</sub>-2σ</em> and <em style="font-size: 1.3em;">T<sub>e</sub>+2σ</em>. This statement is not strictly correct, and I will explain at the end why this is so, but to keep it simple, I would use this.</p>
<h2>Putting it to practice</h2>
<p>In order to put this into on your project I would recommend breaking your app up into somewhat smaller, more manageable pieces for estimating. In theory, this helps because the <a href="http://en.wikipedia.org/wiki/Law_of_large_numbers">law of large numbers</a> implies that your errors cancel out. In practice, it&#8217;s also just plain easier to understand your app in small pieces. When you have your estimates for a number of tasks, you can simply add the expected times together to get the expected duration for the project. To get the standard deviation, you have to calculate the square root of the sum of the squares:<br />
<em style="font-size: 3em;">σ<sub style="font-size: .8em;"> project</sub> = √ ∑ σ <sup>2</sup></em></p>
<h2>Conclusion</h2>
<p>There is nothing like real development data and experience to understand how long things are going to take. Unfortunately you will often have a situation when you don&#8217;t have that information available and you are still called upon to give a estimate. This technique can help you do that and have solid reasoning to back you up. I hope you find this useful, and if you want to look into estimation more, I highly recommend both Bob Martins book <a href="http://www.amazon.com/gp/product/0137081073/ref=as_li_ss_tl?ie=UTF8&amp;tag=eyefodder-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399373&amp;creativeASIN=0137081073">The Clean Coder</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0137081073&amp;camp=217145&amp;creative=399373" alt="" width="1" height="1" border="0" /> mentioned above and Mike Cohn&#8217;s book on <a href="http://www.amazon.com/gp/product/0131479415/ref=as_li_ss_tl?ie=UTF8&amp;tag=eyefodder-20&amp;linkCode=as2&amp;camp=217145&amp;creative=399369&amp;creativeASIN=0131479415">Agile Estimating and Planning</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=&amp;l=as2&amp;o=1&amp;a=0131479415&amp;camp=217145&amp;creative=399369" alt="" width="1" height="1" border="0" /></p>
<h2>Post-script &#8211; there (probably) be dragons down here</h2>
<p><em>This gets a little involved down here, so if you want to keep it simple, don&#8217;t worry about this stuff. As you are usually at the beginning of a project when you do this and are wildly imprecise anyway it shouldn&#8217;t make much difference.</em></p>
<p>The more astute amongst you will have seen an issue with how we worked out our range by simply adding / subtracting two standard deviations from the estimated duration of the project. That assumes that its equally likely we run over as it is that we run under—that is, it&#8217;s a <a href="http://en.wikipedia.org/wiki/Normal_distribution">normal distribution</a> like this:</p>
<p><img class="aligncenter size-medium wp-image-120" title="normal distribution chart" src="http://eyefodder.com/wp-content/uploads/2011/06/normalDistribution-300x202.png" alt="normal distribution chart" width="300" height="202" /></p>
<p>Trouble is, as we saw in the example, there is a tail off to the right. This is what&#8217;s known as a <a href="http://en.wikipedia.org/wiki/Beta_distribution">beta distribution</a> (or at least an example of one), something more like this:</p>
<p><img class="aligncenter size-medium wp-image-121" title="beta distribution chart" src="http://eyefodder.com/wp-content/uploads/2011/06/betaDistribution-300x202.png" alt="beta distribution chart" width="300" height="202" /></p>
<p>If you look at these overlaid onto one another, you see that the range estimate when using normal distribution actually underestimates the duration a bit. If you want to keep things simple you are probably ok, but it&#8217;s worth knowing:</p>
<p><img class="aligncenter size-full wp-image-123" title="beta and normal distribution together" src="http://eyefodder.com/wp-content/uploads/2011/06/overlaiddistribution1.png" alt="beta and normal distribution together" width="542" height="411" /></p>
<p>The shape of the distribution is called a beta distribution, and it makes the math for working out the range quite a bit more complicated. You need to calculate a couple of variables that describe the shape of the curve: α and β. These are a bit complicated to work out, but for the sake of completeness, I hunted them down for you <a href="http://www.brighton-webs.co.uk/distributions/beta.asp">here</a>. They are:</p>
<p><em style="font-size: 1.1em;">α = ((mean-min)/(max-min)) * ((((mean-min)*(max-mean))/σ<sup>2</sup>)-1)</em></p>
<p>&nbsp;</p>
<p><em style="font-size: 1.1em;">β = (max-mean)/(mean-min)*α</em></p>
<p>Once you have these, you can use the Excel BETAINV function to get your minimum and maximum ranges. For example, if you want to calculate an duration as a range you can have 95% confidence in:</p>
<p><em style="font-size: 1.1em;">low end of range = BETAINV(0.025,α,β,min,max)</em></p>
<p>&nbsp;</p>
<p><em style="font-size: 1.1em;">high end of range = BETAINV(0.975,α,β,min,max)</em></p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html">Software Estimation — A good simple way courtesy of the Navy and the cold war</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eyefodder.com/2011/06/software-estimation-a-good-simple-way-courtesy-of-the-navy-and-the-cold-war.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Your project will take longer than you think and less than a Nukem</title>
		<link>http://eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html</link>
		<comments>http://eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html#comments</comments>
		<pubDate>Thu, 16 Jun 2011 06:38:36 +0000</pubDate>
		<dc:creator><![CDATA[Paul Barnes-Hoggett]]></dc:creator>
				<category><![CDATA[Quality Software]]></category>
		<category><![CDATA[Software Estimation]]></category>

		<guid isPermaLink="false">http://www.eyefodder.com/?p=113</guid>
		<description><![CDATA[<p>I will tell you how long your next project will take to release. You won&#8217;t like it, but I&#8217;ll tell you. A game is launching this week and in the story of its development is the key to successful software estimation. The game is Duke Nukem Forever, and just like the title, it did pretty [&#8230;]</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html">Your project will take longer than you think and less than a Nukem</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>I will tell you how long your next project will take to release. You won&#8217;t like it, but I&#8217;ll tell you. A game is launching this week and in the story of its development is the key to successful software estimation. The game is Duke Nukem Forever, and just like the title, it did pretty much take forever to launch. Five thousand, one hundred and sixty days to be precise. <a href="http://duke.a-13.net/">That&#8217;s just over 14 years</a>. Longer than it took to build the Empire State Building, the Golden Gate Bridge and the World Trade Center combined. It took so long, people have <a href="http://duke.a-13.net/">put up sites</a> covering how long it took. The game is by most accounts at best <a href="http://www.guardian.co.uk/technology/gamesblog/2011/jun/10/duke-nukem-forever-game-review">mediocre</a> and at worst <a href="http://arstechnica.com/gaming/reviews/2011/06/duke-nukem-forever-review-barely-playable-unfunny-and-rampantly-offensive.ars">atrocious</a>—in my highly opinionated view, the duration of a release is inversely proportional to product quality. But that&#8217;s not the story here. What&#8217;s important is why it happened and what it can tell you about software estimation on your own project.</p>
<div style="width: 455px" class="wp-caption aligncenter"><a href="http://www.gearboxsoftware.com/"><img title="Duke Nukem Launches after 'forever'" src="http://ecx.images-amazon.com/images/I/91undAvADTL._SL1500_.jpg" alt="" width="445" height="631" /></a><p class="wp-caption-text">Duke Nukem Forever Launched after 14 years development; what can this big chested antihero teach you about your project?</p></div>
<p><span id="more-113"></span></p>
<h2>Why it overran</h2>
<p>There are a number of reasons why the Duke took so long to get his politically incorrect ass back out in the wild. As an adoring public were salivating at the <a href="http://forums.3drealms.com/vb/showthread.php?t=30367">thought of a new Nukem</a>, the development team and its management were stuck in a pattern of events that pretty much ensured a death march of a project:</p>
<h3>Scope Creep</h3>
<p>Anyone who has ever been on a development project will be familiar with this problem. After the success of Duke Nukem 3D, George Broussard—the game&#8217;s creator—kept seeing <a href="http://www.wired.com/magazine/2009/12/fail_duke_nukem/2/">opportunities for ever more awesome features to put in the experience</a>:</p>
<blockquote><p>Broussard simply couldn&#8217;t tolerate the idea of <cite>Duke Nukem Forever</cite> coming out with anything other than the latest and greatest technology and awe-inspiring gameplay. He didn&#8217;t just want it to be good. It had to surpass every other game that had ever existed, the same way the original <cite>Duke Nukem 3D</cite> had.</p></blockquote>
<p>Snow scenes? You got it. Online Multiplayer? Of course! These sorts of things may seem price-of-admission now, but bear in mind that these features were being added over ten years ago. And &#8211; I&#8217;m not saying that these were bad ideas or unnecessary ideas, just that the goalposts kept moving, which makes it kind of tough to finish.</p>
<h3>Technology Death Spiral</h3>
<p>When Duke Nukem 3D came out, it was built on a <a href="http://www.youtube.com/watch?v=VSVzn0F3pyQ">game engine named &#8220;build&#8221;</a> by a child prodigy called Ken Silverman. In order to keep up with ever increasing needs of the project (see above), Broussard swapped out for a new game engine not once, but twice. This, again, may have been necessary, but it meant that the development team were always playing catch up.</p>
<h3>Too much cash, not enough business</h3>
<p>Here&#8217;s the thing: Duke Nukem 3D was a runaway success. So much so, that unlike before, Broussard could basically fund development themselves. Creative freedom is great, but without the business reminding you that what your building is for people to use and enjoy you run the risk of getting stuck into some sort of artwank vortex.</p>
<h3>Fear of Success—gilding the lily</h3>
<p>I&#8217;m not a console game developer, but when I heard it takes up to a year from &#8220;locking a game down&#8221; to launch I really felt sorry for those guys. The projects I work on have some level of locking down code to close out the last remaining bugs, but if it took a year, I can see how it would be an almost paralysing decision to make.</p>
<h3><span style="font-size: 19px">You&#8217;re no different from Nukem</span></h3>
<p>To some extent or another, your project will have some of these issues. Or the server will blow up. If you don&#8217;t have complete freedom and never know when to finish the business will be on your ass. Or the IT department. Or someone else&#8217;s sucky APIs will kill you slowly as you realise you&#8217;re the first person to use them. Or you will get a fundamental set of assumptions so wrong that you need to reset. Or you hire someone that turns out to be worse than useless (and yeah &#8211; I know you will <a href="http://www.bothsidesofthetable.com/2011/05/26/startup-mantra-hire-fast-fire-fast/">fire them quickly</a>, but it will still suck energy and time from the team).</p>
<p>Once you realize that some or all of these things will happen to your project, you can start to use this information to your advantage&#8230;</p>
<p><span style="font-size: 19px;font-weight: bold">Duke Nukem Forever is at the limit of how long things will take</span></p>
<p><a href="http://ars.userfriendly.org/cartoons/?id=20030430"><img class="aligncenter" title="Usenet jokes mocking DNF's delay 8 years ago" src="http://www.3drealms.com/duke4/images/uf005450.gif" alt="people are bitter waiting for DNF to launch" width="720" height="274" /></a></p>
<p>See here&#8217;s the thing: Duke Nukem is pretty much at the outer limit of how long you can get away with a project overrunning. Any longer and it would have been be laid to rest. If it weren&#8217;t for the cult-like following DNF&#8217;s only achievement would have been 3 <a href="http://www.wired.com/science/discoveries/news/2004/01/61935?currentPage=all">Vaporware of the year</a> awards (and a lifetime award to boot). <a href="http://www.gearboxity.com/content/view/645/33/">Gearbox Software</a>, the company that picked up development after the <a href="http://www.shacknews.com/article/58519/duke-nukem-developer-3d-realms">original developer went bankrupt</a> probably realized that they were better off launching a mediocre game and starting from scratch than suffering yet another rewrite. This gives them the opportunity to reset the &#8216;development time&#8217; clock.</p>
<h2>Enter the Nukem as a unit of development time</h2>
<p>With all this in mind, I propose that we consider using the lesson of Duke Nukem Forever to give us a new unit of software estimation:</p>
<blockquote style="font-size: 1.2em"><p><strong>A Nukem</strong>: <em>The amount of time a project or part thereof will take when pretty much anything that can go wrong does.</em></p></blockquote>
<h2>So &#8211; how long will your next project take?</h2>
<p>I can&#8217;t be precise, but I can be accurate. This is how long your next project will take longer than you expect it to to and less than a Nukem. Or, in mathematical terms:</p>
<blockquote><p><em style="font-size: 3em">ψ &lt; x &lt; ω</em></p>
<p><em>Where:</em></p>
<p><em><em>ψ = the amount of time you expect it to take</em></em></p>
<p><em><em>x = the amount of time it will actually take</em></em></p>
<p><em><em><em>ω = a Nukem</em></em></em></p></blockquote>
<p>What&#8217;s interesting here is that many of the issues that Nukem had weren&#8217;t really down to code or developers, yet developers are the ones who get asked to estimate project duration and get held to it. Oh well, tough shit, that&#8217;s what you get for being a creator. Broussard&#8217;s stock response of &#8220;<a href="http://forums.3drealms.com/vb/showthread.php?p=654680#post654680">screw you publisher, it&#8217;ll be ready when it&#8217;s ready</a>&#8221; actually ended up killing his baby. Of course if you go to someone who is paying the bills with this range, you&#8217;ll probably not get vey far. But there is hope. In my next post I&#8217;ll show you how you can use this information to arrive at a range that is more palatable to them, has some science behind it, and allows the business to make some decisions based on your assumptions.</p>
<p>The post <a rel="nofollow" href="http://eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html">Your project will take longer than you think and less than a Nukem</a> appeared first on <a rel="nofollow" href="http://eyefodder.com">Eyefodder</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://eyefodder.com/2011/06/your-project-will-take-longer-than-you-think-and-less-than-a-nukem.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
