<?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/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>JP's Weblog</title>
	<atom:link href="http://jpnair.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jpnair.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Sun, 11 May 2008 08:32:30 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='jpnair.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/0107363fe400d6833f1175e50f79b9df?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>JP's Weblog</title>
		<link>http://jpnair.wordpress.com</link>
	</image>
			<item>
		<title>Test Driven Development – Some practical tips</title>
		<link>http://jpnair.wordpress.com/2008/05/11/test-driven-development-%e2%80%93-some-practical-tips/</link>
		<comments>http://jpnair.wordpress.com/2008/05/11/test-driven-development-%e2%80%93-some-practical-tips/#comments</comments>
		<pubDate>Sun, 11 May 2008 08:32:30 +0000</pubDate>
		<dc:creator>jpnair</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[challenges]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[NUnit. JUnit]]></category>
		<category><![CDATA[pitfalls]]></category>
		<category><![CDATA[practical tips]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[TypeMock]]></category>

		<guid isPermaLink="false">http://jpnair.wordpress.com/?p=7</guid>
		<description><![CDATA[In an earlier post, I had touched upon TDD very briefly, and had promised some practical tips on implementing TDD in a future post….Here you go…
 
Having managed teams implementing TDD, Yours Truly has learnt the hard way, that implementing TDD is not cakewalk, the glamour and hype attached to it notwithstanding. So if you are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=7&subd=jpnair&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">In an earlier post, I had touched upon TDD very briefly, and had promised some practical tips on implementing TDD in a future post….Here you go…</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">Having managed teams implementing TDD, Yours Truly has learnt the hard way, that implementing TDD is not cakewalk, the glamour and hype attached to it notwithstanding. So if you are contemplating on implementing TDD, here are some practical tips:</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">1) There will be starting-trouble, since this calls for a complete paradigm shift in the minds of the developers. Most ( if not all) of us have grown up by hearing and practicing this &#8211; Write code, then test. TDD turns that completely topsy-turvy. It says, write a test case (it will obviously fail since it is checking for code which is still not there). Then write code which will just satisfy the test case and make it run (note that the code should do nothing more than barely making the test case run). Then write the <em>next</em> test case, and make it pass by writing the corresponding code. This concept requires some unlearning, and so pls be prepared to add sufficient buffer in your deliverables for implementing this, and don’t crucify your developers for taking some extra time in the beginning of your TDD roll-out. This extra time will come down once they are comfortable with this approach, and then they’ll reach a desirable mindset where they’ll find it difficult to write code without writing test cases, but till then, patience….</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">2) Better to involve those experienced folks who know Unit Testing (eg NUnit, JUnit). If they have worked on Unit Testing for some duration, and have been writing the test cases after the code was written, then they would definitely have faced issues where they&#8217;ve had to refactor the code in order to increase the code coverage from the unit test cases written. This is a constant pain, and TDD removes this by having tests initially, so code-coverage is not an issue (in case you are wondering, &#8216;code-coverage&#8217; gives a measure of how much of the codebase is covered/tested by the unit-test-cases-suite).</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">3) Start with a very small but determined pilot team. Starting with a big team is not really manageable, because of the delivery pressures…</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">4) It is very easy for them to slip back into the traditional way of coding, if there is a schedule pressure….so watch out closely for that.</span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">5) Go for a code coverage of about 70-80%&#8230;more than that could become an overkill in the initial stages… looks like the Pareto rule is kind-of applicable here too &#8212; you can achieve 80% of code coverage with 20% of effort, but the remaining 20% will take about 80% of the effort. Do I have a big array of statistics to prove this? Nope&#8230;Just a few metrics collected in those projects, and a gut feel evolved over time. I have seen the enthusiasm die down because of the amount of additional effort needed to cover that last stretch …It will take significant effort from you to rekindle the enthusiasm. So better to aim for about 70-80 % initially, and it’ll work.</span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">6) Its ok to have less unit tests for UI, since UI needs to get covered more by the Functionality/Usability testing. Focus on using TDD more for the sub-strata (layers below the UI).</span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">7) In the middle layer(s), there would be integration points, and we should make sure that we are not ignoring these parts, especially if they are part of the critical functionality/logic. Now the question is, we are doing Unit Testing (or in other words, we are <em>not</em> doing Integration testing), so how do we cater to the integration points, since there would be some chatting between modules/classes. The solution is to use stubs. That is, create stubs which will be called (instead of the actual foreign class/module) by the unit, and return various values, and so the behavior of the unit can be tested based on the different values returned by the stub. Now the point is, writing stubs can be cumbersome. So for that, you could use some third-party API. For eg, there’s a very good API for this very purpose, called TypeMock. </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;"> </span><span style="font-size:10pt;font-family:Arial;"> </span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"><span style="font-size:10pt;font-family:Arial;">What is outlined above is but some of the pitfalls that you need to watch out for, in your journey towards TDD. Happy <em>Test Driving</em> !</span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jpnair.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jpnair.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpnair.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpnair.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpnair.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpnair.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpnair.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpnair.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpnair.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpnair.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpnair.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpnair.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=7&subd=jpnair&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jpnair.wordpress.com/2008/05/11/test-driven-development-%e2%80%93-some-practical-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d5cf14b1f68d4b592227533b04f603d?s=96&#38;d=identicon" medium="image">
			<media:title type="html">jp</media:title>
		</media:content>
	</item>
		<item>
		<title>To TDD or not to TDD &#8211; Yet another chicken-egg situation ?</title>
		<link>http://jpnair.wordpress.com/2008/05/11/to-tdd-or-not-to-tdd-yet-another-chicken-egg-situation/</link>
		<comments>http://jpnair.wordpress.com/2008/05/11/to-tdd-or-not-to-tdd-yet-another-chicken-egg-situation/#comments</comments>
		<pubDate>Sun, 11 May 2008 08:24:42 +0000</pubDate>
		<dc:creator>jpnair</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[code coverage]]></category>
		<category><![CDATA[difference between Unit testing and TDD]]></category>
		<category><![CDATA[feasibility of TDD]]></category>
		<category><![CDATA[practical tips]]></category>
		<category><![CDATA[tenets]]></category>
		<category><![CDATA[Test Driven Development]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://jpnair.wordpress.com/?p=6</guid>
		<description><![CDATA[

Before trying to answer the above question, let us quickly touch base on what is the difference between the terms ‘Unit Testing’ and ‘Test Driven Development (TDD)’, or is there a difference at all? 
 Here&#8217;s what. Unit Testing simply means that you write unit test cases to exercise minute parts of the codebase. The term [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=6&subd=jpnair&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div></div>
<p><span style="font-size:10pt;font-family:Arial;"></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;">Before trying to answer the above question, let us quickly touch base on what is the difference between the terms ‘Unit Testing’ and ‘Test Driven Development (TDD)’, or is there a difference at all? </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span><span style="font-size:10pt;font-family:Arial;">Here&#8217;s what. Unit Testing simply means that you write unit test cases to exercise minute parts of the codebase. The term &#8216;Unit Testing&#8217; by itself doesnot state the chronological order, ie whether the code comes first and then the unit test case is written, or was it the other way round, ie whether the test case is written first. The latter is actually a simplistic definition for TDD. That is, write unit test cases first and then write code to satisfy those test cases. </span></p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:10pt;font-family:Arial;"> </span><span style="font-size:10pt;font-family:Arial;">So TDD is actually the next step in the evolution of Unit Testing, in that the test cases are written upfront, before the code is written, thus providing various advantages. </span><span style="font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">The code that comes out of TDD is rock solid, high quality, better designed, easily testable (especially regression testing), and easily maintainable (one of the reasons being that the test cases act as documentation). So from that perspective, the question whether TDD makes sense or not, ie whether the code should be written first and then the test case or should it be vice-versa, is a no-brainer (IMHO). TDD has come way beyond the hype stage, and writing test cases first definitely makes proven sense, but whether it will be successful or not, depends wholly on the way it is implemented, the acceptance of this within the team, and the management support to make it work. That’s asking for too much, eh? There are several pitfalls that you need to watch out for, in your journey towards TDD. We’ll examine these in a separate post.</span></span></p>
<p class="MsoNormal" style="margin:0;">
<div class="MsoNormal" style="margin:0;"><span style="font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">Anyway, TDD is not the be-all-end-all of Agile. If you’re able to make it work, great, you’ll see the benefits. But if you’re not, don’t fret, there are other tenets in Agile which can be implemented easily and fetches good results. We’ll examine some of them in the forthcoming posts.</span></span></div>
<div class="MsoNormal" style="margin:0;"></div>
<div class="MsoNormal" style="margin:0;">Ciao </div>
<p> </p>
<div><span style="font-family:Arial;"><span style="font-family:Arial;"><span style="font-family:Arial;"> </span></span></span></div>
<div><span style="font-family:Arial;"><span style="font-family:Arial;"><span style="font-family:Arial;"> </span></span></span></div>
<div><span style="font-family:Arial;"><span style="font-family:Arial;"><span style="font-family:Arial;"> </span></span></span></div>
<p><span style="font-family:Arial;"><span style="font-family:Arial;"><span style="font-family:Arial;"> </p>
<p> </p>
<p></span></span></span></p>
<div><span style="font-family:Arial;"> </span></div>
<div><span style="font-family:Arial;"> </span></div>
<div><span style="font-family:Arial;"> </span></div>
<div><span style="font-family:Arial;"> </span></div>
<p><span style="font-family:Arial;"> </p>
<p></span></p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"> </p>
<p class="MsoNormal" style="margin:0 0 0 0.25in;"> </p>
<p> </p>
<p> </p>
<p></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jpnair.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jpnair.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpnair.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpnair.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpnair.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpnair.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpnair.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpnair.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpnair.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpnair.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpnair.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpnair.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=6&subd=jpnair&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jpnair.wordpress.com/2008/05/11/to-tdd-or-not-to-tdd-yet-another-chicken-egg-situation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d5cf14b1f68d4b592227533b04f603d?s=96&#38;d=identicon" medium="image">
			<media:title type="html">jp</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile Fixedbid &#8212; an oxymoron ?</title>
		<link>http://jpnair.wordpress.com/2008/01/06/agile-fixedbid-an-oxymoron/</link>
		<comments>http://jpnair.wordpress.com/2008/01/06/agile-fixedbid-an-oxymoron/#comments</comments>
		<pubDate>Sun, 06 Jan 2008 05:49:22 +0000</pubDate>
		<dc:creator>jpnair</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[fixed-bid]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[features]]></category>
		<category><![CDATA[integration issues]]></category>
		<category><![CDATA[pair programming]]></category>
		<category><![CDATA[phases]]></category>
		<category><![CDATA[small iterations]]></category>
		<category><![CDATA[sprints]]></category>
		<category><![CDATA[waterfall]]></category>

		<guid isPermaLink="false">http://jpnair.wordpress.com/2008/01/06/agile-fixedbid-an-oxymoron/</guid>
		<description><![CDATA[In an earlier post, we have examined how we can use agile in a fixed-bid project by considering scope as a variable. in this post, we will take a step back and examine the ways in which we can leverage the power of agile within the business constraints imposed by a fixed-bid contract.
1) Continuous Integration (CI) : [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=5&subd=jpnair&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In an earlier post, we have examined how we can use agile in a fixed-bid project by considering <em>scope</em> as a variable. in this post, we will take a step back and examine the ways in which we can leverage the power of agile within the business constraints imposed by a fixed-bid contract.</p>
<p>1) Continuous Integration (CI) : Whether you are following a <em>Dedicated</em> or <em>Time &amp; Material</em> or <em>Fixed-Bid</em> type of engagement, CI is a very useful and proven Agile tenet. The Root Cause Analysis of the issues that come up during the last stages of a typical release will point to Integration issues as one of the root causes.<br />
There tools around which can be used for automatically building and deploying your code at very frequent intervals (or on a need basis) so that the integration issues are closed as and when they are found, instead of accumulating till the end.<br />
One good example is CruiseControl, which has versions for Java as well as Dotnet environments. You could visit the thoughtworks site for more info on CruiseControl.</p>
<p>2) Pair programming: Pair programming is an agile tenet which advocates having a pair of programmers work together on all coding aspects, instead of working individually. Compare this with a typical scenario where the programmers work individually for all<br />
their work. 100% pair programming is a controversial topic, and we will not get into that debate in this post. But what is not controversial, and indeed beneficial, is to use pair programming in a contextual manner. That is, whenever you are faced with a difficult problem, have 2 people work on it. That has proven to be much more productive than the aggregate work done by them separately. Also, there is a knowledge backup within the team for all the difficult sections within the codebase.</p>
<p>3) Small releases: Have an overall fixed-bid contract which allows about 20% deviation in the scope. Then have smaller iterations where small chunks of feature requirements will be identified, zoomed-in, designed, implemented, tested, and be ready to be deployed.</p>
<p>In other words, it is very common to find the fixed-bid billing model tied to the waterfall methodology. There are inherent problems with the traditional waterfall software developement life cycle (SDLC) methodology, and it is better not to mix waterfall and fixed-bid. Pictorially it can be represented this way:</p>
<p>Requirements-&gt;Design-&gt;Coding-&gt;Testing-&gt;UAT-&gt;Golive</p>
<p>Feature set #1&#8212;&gt;Feature set #2 &#8212;&gt;Feature set #3</p>
<address>Where, <br />
the first line indicates the typical approach using Waterfall model</address>
<div align="left">
<address>the second line indicates the approach using smaller closed iterations (Agile model), with the various phases of an sdlc compressed into each iteration.</address>
</div>
<p>The main difference is that in the waterfall model, the compartmentalization is in terms of phases, whereas in Agile, the compartmentalization is in terms of features&#8212;ie, in Agile all the phases will be implemented for each set of features in the order of decreasing priority of features. We will talk more about the mechanics of this, in a future post.<br />
In summary, some of the Agile tenets can indeed be used in a Fixed bid model, actually reducing the heartburn for all the stakeholders in the client&#8217;s as well as the vendor&#8217;s side.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jpnair.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jpnair.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpnair.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpnair.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpnair.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpnair.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpnair.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpnair.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpnair.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpnair.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpnair.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpnair.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=5&subd=jpnair&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jpnair.wordpress.com/2008/01/06/agile-fixedbid-an-oxymoron/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d5cf14b1f68d4b592227533b04f603d?s=96&#38;d=identicon" medium="image">
			<media:title type="html">jp</media:title>
		</media:content>
	</item>
		<item>
		<title>Is Agile suitable for fixed-bid projects ?</title>
		<link>http://jpnair.wordpress.com/2007/12/30/is-agile-suitable-for-fixed-bid-projects/</link>
		<comments>http://jpnair.wordpress.com/2007/12/30/is-agile-suitable-for-fixed-bid-projects/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 12:51:55 +0000</pubDate>
		<dc:creator>jpnair</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[fixed-bid]]></category>
		<category><![CDATA[Aspire system]]></category>
		<category><![CDATA[constraints]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[scope change]]></category>
		<category><![CDATA[scope creep]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://jpnair.wordpress.com/2007/12/30/is-agile-suitable-for-fixed-bid-projects/</guid>
		<description><![CDATA[Let us start by looking at the characteristics of fixed-bid projects:
1) Time-bound
2) Predefined scope &#8212; normally immutable
3) Fixed set of resources
4) Predefined quality checks
Wow ! Isn&#8217;t the set above, a project manager&#8217;s nightmare. What we are essentially saying is that, out of the 3 allowed Project management variables of Scope, Resources, and Time (although there [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=3&subd=jpnair&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Let us start by looking at the characteristics of fixed-bid projects:<br />
1) Time-bound<br />
2) Predefined scope &#8212; normally immutable<br />
3) Fixed set of resources<br />
4) Predefined quality checks</p>
<p>Wow ! Isn&#8217;t the set above, a project manager&#8217;s nightmare. What we are essentially saying is that, out of the 3 allowed Project management variables of Scope, Resources, and Time (although there is a 4th parameter &#8211; Quality, it can obviously never be taken as a variable), none is allowed to be a variable in many fixed-bid projects. That also normally leads to the project not meeting the expectations, because the expectations were unrealistic in the first place. Does it mean that all fixed-bid projects are doomed to fail? Not really&#8230;if there is an upfront understanding among the different stakeholders that one of the 3 (Scope, Resources or Time) is allowed to change from what was agreed in the beginning of the project, that itself increases the probability of success of the project by a significant amount.</p>
<p>So, now that we have agreed (?! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ) that it is preferable to keep one of them as a variable even in a fixed-bid project, let us look at what Agile requires and recommends.</p>
<p>Although there are many Agile methodologies out there, one of the common threads among them is the allowance for a change in scope mid-stream. That automatically fits into (one of) the criteria for the increased probability of success of a fixed-bid project.</p>
<p>But then, if the scope is allowed to change, what is so &#8216;fixed&#8217; about the &#8216;bid&#8217; ? Here goes:<br />
1) Out of the 4 potential variables, 3 (R, T and Q) are supposed to be constants.<br />
2) Now let us zoom-in on the &#8216;Scope&#8217; part. Let us say that the clients want to change the requirements in the middle of the project (sounds so familiar..doesn&#8217;t it?). You could do one of 2 things:<br />
a) Remove lesser priority items for making way for the new high priority items. How? You would most probably have done a size estimation of your project in terms of Scrum-Story-points or XP-User-Stories or XP-Tasks or whatever. Use that for the barter. Pull in the high priority items, and push out the least priority items of equivalent size. Well, can/should it be as accurate as what was expected in/of the &#8216;Merchant of Venice&#8217;? Not really, but at least the gap is significantly reduced to the extent of being manageable&#8230;btw, the exchange accuracy expected in the Merch of Venice was also an overkill (no pun intended), wasn&#8217;t it ?</p>
<p align="left">b) In your fixed-bid agreement itself, keep a provision of about 15-20% for handling the creepiness of scope. That way, you can still inject feasible scope without replacing any agreed scope. Why do I still use the word &#8216;feasible&#8217;? Because of 2 reasons:<br />
 i)  We cannot obviously inject scope more than the allowed percent<br />
 ii) A more implicit reason is that scope cannot be changed (even within allowable limits) if it is coming in too late in the cycle, and if it has a serious impact on the design roots. Needless to say, there may be cases where the scope does come in too late in the cycle, and is also threatening the design roots. In such cases, it is better to re-work the SOW( Statement of Work) and start afresh rather than trying to squeeze the drastic scope-change into the ambit of the current agreement.</p>
<p>In summary, Fixed-bid projects can be done in an Agile manner provided some of the danger zones are taken care of. Is the above approach the only way to bring the obvious advantages of Agile project management to fixed-bid projects? Not really&#8230;.pls do come back for more posts on this&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jpnair.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jpnair.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jpnair.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jpnair.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jpnair.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jpnair.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jpnair.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jpnair.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jpnair.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jpnair.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jpnair.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jpnair.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jpnair.wordpress.com&blog=2407235&post=3&subd=jpnair&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jpnair.wordpress.com/2007/12/30/is-agile-suitable-for-fixed-bid-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d5cf14b1f68d4b592227533b04f603d?s=96&#38;d=identicon" medium="image">
			<media:title type="html">jp</media:title>
		</media:content>
	</item>
	</channel>
</rss>