<?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>Agile Advice - Working With Agile Methods (Scrum, OpenAgile, Lean) &#187; Agile Engineering</title>
	<atom:link href="http://www.agileadvice.com/category/agileengineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.agileadvice.com</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 14:18:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Agile 2010 Session Proposal: TDD for iPhone Development</title>
		<link>http://www.agileadvice.com/2010/02/08/announcements/agile-2010-session-proposal-tdd-for-iphone-development/</link>
		<comments>http://www.agileadvice.com/2010/02/08/announcements/agile-2010-session-proposal-tdd-for-iphone-development/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:53:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/?p=869</guid>
		<description><![CDATA[I&#8217;ve just submitted a proposed session to the Agile 2010 web site: Test-Driven Development for the iPhone, iPod and iPad Please go to the site and let me know in the comments there if you have any suggestions about the proposal! Share and Enjoy:]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2010/02/08/announcements/agile-2010-session-proposal-tdd-for-iphone-development/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Agile+2010+Session+Proposal%3A+TDD+for+iPhone+Development";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>I&#8217;ve just submitted a proposed session to the Agile 2010 web site:</p>
<p><a href="http://agile2010.agilealliance.org/node/5369">Test-Driven Development for the iPhone, iPod and iPad</a></p>
<p>Please go to the site and let me know in the comments there if you have any suggestions about the proposal!</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=I%27ve%20just%20submitted%20a%20proposed%20session%20to%20the%20Agile%202010%20web%20site%3A%0D%0A%0D%0ATest-Driven%20Development%20for%20the%20iPhone%2C%20iPod%20and%20iPad%0D%0A%0D%0APlease%20go%20to%20the%20site%20and%20let%20me%20know%20in%20the%20comments%20there%20if%20you%20have%20any%20suggestions%20about%20the%20proposal%21" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;bodytext=I%27ve%20just%20submitted%20a%20proposed%20session%20to%20the%20Agile%202010%20web%20site%3A%0D%0A%0D%0ATest-Driven%20Development%20for%20the%20iPhone%2C%20iPod%20and%20iPad%0D%0A%0D%0APlease%20go%20to%20the%20site%20and%20let%20me%20know%20in%20the%20comments%20there%20if%20you%20have%20any%20suggestions%20about%20the%20proposal%21" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;notes=I%27ve%20just%20submitted%20a%20proposed%20session%20to%20the%20Agile%202010%20web%20site%3A%0D%0A%0D%0ATest-Driven%20Development%20for%20the%20iPhone%2C%20iPod%20and%20iPad%0D%0A%0D%0APlease%20go%20to%20the%20site%20and%20let%20me%20know%20in%20the%20comments%20there%20if%20you%20have%20any%20suggestions%20about%20the%20proposal%21" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development&amp;annotation=I%27ve%20just%20submitted%20a%20proposed%20session%20to%20the%20Agile%202010%20web%20site%3A%0D%0A%0D%0ATest-Driven%20Development%20for%20the%20iPhone%2C%20iPod%20and%20iPad%0D%0A%0D%0APlease%20go%20to%20the%20site%20and%20let%20me%20know%20in%20the%20comments%20there%20if%20you%20have%20any%20suggestions%20about%20the%20proposal%21" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;t=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2010%2F02%2F08%2Fannouncements%2Fagile-2010-session-proposal-tdd-for-iphone-development%2F&amp;Title=Agile%202010%20Session%20Proposal%3A%20TDD%20for%20iPhone%20Development" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2010/02/08/announcements/agile-2010-session-proposal-tdd-for-iphone-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ANN: Agile Software Engineering Practices training by Isráfíl Consulting</title>
		<link>http://www.agileadvice.com/2009/01/02/agileengineering/ann-agile-software-engineering-practices-training-by-israfil-consulting/</link>
		<comments>http://www.agileadvice.com/2009/01/02/agileengineering/ann-agile-software-engineering-practices-training-by-israfil-consulting/#comments</comments>
		<pubDate>Fri, 02 Jan 2009 20:31:31 +0000</pubDate>
		<dc:creator>Christian Gruber</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[christian edward gruber]]></category>
		<category><![CDATA[course]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[extreme programming]]></category>
		<category><![CDATA[implementation]]></category>
		<category><![CDATA[incremental]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[Israfil]]></category>
		<category><![CDATA[kitchener-waterloo]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[ottawa]]></category>
		<category><![CDATA[practices]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[test driven development]]></category>
		<category><![CDATA[testability]]></category>
		<category><![CDATA[toronto]]></category>
		<category><![CDATA[training]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2009/01/02/agileengineering/ann-agile-software-engineering-practices-training-by-israfil-consulting/</guid>
		<description><![CDATA[  Isráfíl Consulting  is finally prepared for the first series of its Agile Software Engineering Practices training courses. ...  The initial run will be in Ottawa, Toronto (Markham), and Kitchener/Waterloo. &#160;&#160;  Topics covered will include Test Driven Development (TDD), testability, supportive infrastructure such as build and continuous integration, team metrics, incremental design and evolutionary architecture, dependency injection, and so much more.   (This course won't present the planning side of  XP , but covers many other aspects common to XP projects) It makes a great complement for training in Agile Processes such as XP, Scrum, or OpenAgile. ...  The courses are scheduled for:      2009-02-05: 2 Day Agile Software ENGINEERING Practices Training - Kichener/Waterloo, Ontario (15 Spots)            2009-02-12: 2 Day Agile Software ENGINEERING Practices Training - Markham/Toronto, Ontario (15 Spots)      


   2009-02-19: 2 Day Agile Software ENGINEERING Practices Training - Ottawa, Ontario (15 Spots)   


     The course is $1250 CAD per student, and participants receive a transferrable discount of $100 CAD for other training with Berteig Consulting as a part of our ongoing partnership. ]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2009/01/02/agileengineering/ann-agile-software-engineering-practices-training-by-israfil-consulting/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "ANN%3A+Agile+Software+Engineering+Practices+training+by+Isr%C3%A1f%C3%ADl+Consulting";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p><a href="http://www.israfil.net/">Isráfíl Consulting</a> is finally prepared for the first series of its Agile Software Engineering Practices training courses. This series is offered in partnership with <a href="http://www.berteigconsulting.com/">Berteig Consulting</a> who are graciously hosting the registration process. Their team has also helped greatly in shaping the presentation style and structure of the course. The initial run will be in Ottawa, Toronto (Markham), and Kitchener/Waterloo. &nbsp;&nbsp;</p>
<p>Topics covered will include Test Driven Development (TDD), testability, supportive infrastructure such as build and continuous integration, team metrics, incremental design and evolutionary architecture, dependency injection, and so much more. (This course won&#8217;t present the planning side of <a href="http://www.extremeprogramming.org/">XP</a>, but covers many other aspects common to XP projects) It makes a great complement for training in Agile Processes such as XP, Scrum, or OpenAgile. The overview slide presentation is available for free download from <a href="http://www.israfil.net/training-materials/ASEP-overview.pdf">the Isráfíl web site</a>.</p>
<p>The courses are scheduled for:</p>
<ul>
<li><span style="font-family: Verdana; line-height: 20px;"><a href="http://www.berteigconsulting.com/AgileEngineeringPracticesTrainingFebruary2009Waterloo-KitchenerOntarioCanada" style="color: #3165B0; text-decoration: none;"><span style="font-size: 10px;">2009-02-05: 2 Day Agile Software ENGINEERING Practices Training &#8211; Kichener/Waterloo, Ontario (15 Spots)</span></a><span style="font-size: 10px;"><a href="http://www.berteigconsulting.com/AgileScrumCertificationCSMTrainingFebruary2009BeijingChina" style="color: #3165B0; text-decoration: none;"></a></span></span></li>
<li><span style="font-family: Verdana; line-height: 20px;"><a href="http://www.berteigconsulting.com/AgileEngineeringPracticesTrainingFebruary2009Markham-TorontoOntarioCanada" style="color: #3165B0; text-decoration: none;"><span style="font-size: 10px;">2009-02-12: 2 Day Agile Software ENGINEERING Practices Training &#8211; Markham/Toronto, Ontario (15 Spots)</span></a></span></li>
<li>
    <span style="font-family: Verdana; line-height: 20px;"><a href="http://www.berteigconsulting.com/AgileEngineeringPracticesTrainingFebruary2009OttawaOntarioCanada" style="color: #3165B0; text-decoration: none;"><span style="font-size: 10px;">2009-02-19: 2 Day Agile Software ENGINEERING Practices Training &#8211; Ottawa, Ontario (15 Spots)</span></a></span></p>
<div class="views-row-6 views-row-even"></div>
</li>
</ul>
<p>The course is $1250 CAD per student, and participants receive a transferrable discount of $100 CAD for other training with Berteig Consulting as a part of our ongoing partnership. I initially prototyped this course in Ottawa this December, and am very excited to see this through in several locales. Class size is limited to 15, so we can keep the instruction style more involved. The above schedules are linked to Berteig Consulting&#8217;s course system and have registration links at the bottom of the description. Locations are TBD, but will be updated at the above links as soon as they&#8217;re finalized.</p>
<p>A further series is planned for several US cities in March, and we&#8217;ll be sure to announce them as well.</p>
<p></p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=%20%20Isr%C3%A1f%C3%ADl%20Consulting%20%20is%20finally%20prepared%20for%20the%20first%20series%20of%20its%20Agile%20Software%20Engineering%20Practices%20training%20courses.%20...%20%20The%20initial%20run%20will%20be%20in%20Ottawa%2C%20Toronto%20%28Markham%29%2C%20and%20Kitchener%2FWaterloo.%20%26nbsp%3B%26nbsp%3B%20%20Topics%20covered%20will%20include%20Test%20Driven%20Development%20%28TDD%29%2C%20testability%2C%20supportive%20infrastructure%20such%20as%20build%20and%20continuous%20integration%2C%20team%20metrics%2C%20incremental%20design%20and%20evolutionary%20architecture%2C%20dependency%20injection%2C%20and%20so%20much%20more.%20%20%20%28This%20course%20won%27t%20present%20the%20planning%20side%20of%20%20XP%20%2C%20but%20covers%20many%20other%20aspects%20common%20to%20XP%20projects%29%20It%20makes%20a%20great%20complement%20for%20training%20in%20Agile%20Processes%20such%20as%20XP%2C%20Scrum%2C%20or%20OpenAgile.%20...%20%20The%20courses%20are%20scheduled%20for%3A%20%20%20%20%20%202009-02-05%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Kichener%2FWaterloo%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%20%20%20%20%20%202009-02-12%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Markham%2FToronto%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%0A%0A%0A%20%20%202009-02-19%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Ottawa%2C%20Ontario%20%2815%20Spots%29%20%20%20%0A%0A%0A%20%20%20%20%20The%20course%20is%20%241250%20CAD%20per%20student%2C%20and%20participants%20receive%20a%20transferrable%20discount%20of%20%24100%20CAD%20for%20other%20training%20with%20Berteig%20Consulting%20as%20a%20part%20of%20our%20ongoing%20partnership.%20" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;bodytext=%20%20Isr%C3%A1f%C3%ADl%20Consulting%20%20is%20finally%20prepared%20for%20the%20first%20series%20of%20its%20Agile%20Software%20Engineering%20Practices%20training%20courses.%20...%20%20The%20initial%20run%20will%20be%20in%20Ottawa%2C%20Toronto%20%28Markham%29%2C%20and%20Kitchener%2FWaterloo.%20%26nbsp%3B%26nbsp%3B%20%20Topics%20covered%20will%20include%20Test%20Driven%20Development%20%28TDD%29%2C%20testability%2C%20supportive%20infrastructure%20such%20as%20build%20and%20continuous%20integration%2C%20team%20metrics%2C%20incremental%20design%20and%20evolutionary%20architecture%2C%20dependency%20injection%2C%20and%20so%20much%20more.%20%20%20%28This%20course%20won%27t%20present%20the%20planning%20side%20of%20%20XP%20%2C%20but%20covers%20many%20other%20aspects%20common%20to%20XP%20projects%29%20It%20makes%20a%20great%20complement%20for%20training%20in%20Agile%20Processes%20such%20as%20XP%2C%20Scrum%2C%20or%20OpenAgile.%20...%20%20The%20courses%20are%20scheduled%20for%3A%20%20%20%20%20%202009-02-05%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Kichener%2FWaterloo%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%20%20%20%20%20%202009-02-12%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Markham%2FToronto%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%0A%0A%0A%20%20%202009-02-19%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Ottawa%2C%20Ontario%20%2815%20Spots%29%20%20%20%0A%0A%0A%20%20%20%20%20The%20course%20is%20%241250%20CAD%20per%20student%2C%20and%20participants%20receive%20a%20transferrable%20discount%20of%20%24100%20CAD%20for%20other%20training%20with%20Berteig%20Consulting%20as%20a%20part%20of%20our%20ongoing%20partnership.%20" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;notes=%20%20Isr%C3%A1f%C3%ADl%20Consulting%20%20is%20finally%20prepared%20for%20the%20first%20series%20of%20its%20Agile%20Software%20Engineering%20Practices%20training%20courses.%20...%20%20The%20initial%20run%20will%20be%20in%20Ottawa%2C%20Toronto%20%28Markham%29%2C%20and%20Kitchener%2FWaterloo.%20%26nbsp%3B%26nbsp%3B%20%20Topics%20covered%20will%20include%20Test%20Driven%20Development%20%28TDD%29%2C%20testability%2C%20supportive%20infrastructure%20such%20as%20build%20and%20continuous%20integration%2C%20team%20metrics%2C%20incremental%20design%20and%20evolutionary%20architecture%2C%20dependency%20injection%2C%20and%20so%20much%20more.%20%20%20%28This%20course%20won%27t%20present%20the%20planning%20side%20of%20%20XP%20%2C%20but%20covers%20many%20other%20aspects%20common%20to%20XP%20projects%29%20It%20makes%20a%20great%20complement%20for%20training%20in%20Agile%20Processes%20such%20as%20XP%2C%20Scrum%2C%20or%20OpenAgile.%20...%20%20The%20courses%20are%20scheduled%20for%3A%20%20%20%20%20%202009-02-05%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Kichener%2FWaterloo%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%20%20%20%20%20%202009-02-12%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Markham%2FToronto%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%0A%0A%0A%20%20%202009-02-19%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Ottawa%2C%20Ontario%20%2815%20Spots%29%20%20%20%0A%0A%0A%20%20%20%20%20The%20course%20is%20%241250%20CAD%20per%20student%2C%20and%20participants%20receive%20a%20transferrable%20discount%20of%20%24100%20CAD%20for%20other%20training%20with%20Berteig%20Consulting%20as%20a%20part%20of%20our%20ongoing%20partnership.%20" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting&amp;annotation=%20%20Isr%C3%A1f%C3%ADl%20Consulting%20%20is%20finally%20prepared%20for%20the%20first%20series%20of%20its%20Agile%20Software%20Engineering%20Practices%20training%20courses.%20...%20%20The%20initial%20run%20will%20be%20in%20Ottawa%2C%20Toronto%20%28Markham%29%2C%20and%20Kitchener%2FWaterloo.%20%26nbsp%3B%26nbsp%3B%20%20Topics%20covered%20will%20include%20Test%20Driven%20Development%20%28TDD%29%2C%20testability%2C%20supportive%20infrastructure%20such%20as%20build%20and%20continuous%20integration%2C%20team%20metrics%2C%20incremental%20design%20and%20evolutionary%20architecture%2C%20dependency%20injection%2C%20and%20so%20much%20more.%20%20%20%28This%20course%20won%27t%20present%20the%20planning%20side%20of%20%20XP%20%2C%20but%20covers%20many%20other%20aspects%20common%20to%20XP%20projects%29%20It%20makes%20a%20great%20complement%20for%20training%20in%20Agile%20Processes%20such%20as%20XP%2C%20Scrum%2C%20or%20OpenAgile.%20...%20%20The%20courses%20are%20scheduled%20for%3A%20%20%20%20%20%202009-02-05%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Kichener%2FWaterloo%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%20%20%20%20%20%202009-02-12%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Markham%2FToronto%2C%20Ontario%20%2815%20Spots%29%20%20%20%20%20%20%0A%0A%0A%20%20%202009-02-19%3A%202%20Day%20Agile%20Software%20ENGINEERING%20Practices%20Training%20-%20Ottawa%2C%20Ontario%20%2815%20Spots%29%20%20%20%0A%0A%0A%20%20%20%20%20The%20course%20is%20%241250%20CAD%20per%20student%2C%20and%20participants%20receive%20a%20transferrable%20discount%20of%20%24100%20CAD%20for%20other%20training%20with%20Berteig%20Consulting%20as%20a%20part%20of%20our%20ongoing%20partnership.%20" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;t=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2009%2F01%2F02%2Fagileengineering%2Fann-agile-software-engineering-practices-training-by-israfil-consulting%2F&amp;Title=ANN%3A%20Agile%20Software%20Engineering%20Practices%20training%20by%20Isr%C3%A1f%C3%ADl%20Consulting" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2009/01/02/agileengineering/ann-agile-software-engineering-practices-training-by-israfil-consulting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dependecy Injection on J2ME/CLDC devices.</title>
		<link>http://www.agileadvice.com/2008/08/02/announcements/dependecy-injection-on-j2mecldc-devices/</link>
		<comments>http://www.agileadvice.com/2008/08/02/announcements/dependecy-injection-on-j2mecldc-devices/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 22:57:52 +0000</pubDate>
		<dc:creator>Christian Gruber</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[christian edward gruber]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[incremental]]></category>
		<category><![CDATA[isrá]]></category>
		<category><![CDATA[Israfil]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[test driven development]]></category>
		<category><![CDATA[testability]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[useful tools]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2008/08/02/agileengineering/dependecy-injection-on-j2mecldc-devices/</guid>
		<description><![CDATA[This post is a little geeky and technical and product-related for AgileAdvice, and is a shameless self-promotion. Nevertheless, since testability, test-driven-development, and incremental design are non-exclusive sub-topics of Agile, I though I&#8217;d report this here anyway. Many developers use the Dependency Injection and Inversion of Control (IoC) patterns through such IoC containers as Spring, Hivemind, [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2008/08/02/announcements/dependecy-injection-on-j2mecldc-devices/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Dependecy+Injection+on+J2ME%2FCLDC+devices.";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>This post is a little geeky and technical and product-related for AgileAdvice, and is a shameless self-promotion. Nevertheless, since testability, test-driven-development, and incremental design are non-exclusive sub-topics of Agile, I though I&#8217;d report this here anyway.</p>
<p>Many developers use the Dependency Injection and Inversion of Control (IoC) patterns through such IoC containers as Spring, Hivemind, Picocontainer, and <a href="http://en.wikipedia.org/wiki/Dependency_injection#Existing_frameworks">others</a>. They have all sorts of benefits to testability, flexibility, etc. that I won&#8217;t repeat here, but can be read about <a href="http://martinfowler.com/articles/injection.html">here</a>, <a href="http://picocontainer.codehaus.org/inversion-of-control.html">here</a>, and <a href="http://en.wikipedia.org/wiki/Dependency_injection">here</a>. A great summary of the history of &#8220;IoC&#8221; can be found <a href="http://picocontainer.codehaus.org/inversion-of-control-history.html">here</a>. J2ME developers, however, especially those on limited devices that use the CLDC configuration of J2ME, cannot use the substantial number of IoC/DI containers out there, because they nearly all rely on reflection. These also often make use of APIs not present in the CLDC &#8211; APIs which could not easily be added. Lastly there&#8217;s a tendency among developers of &#8220;embedded software&#8221; to be very suspicious of complexity.</p>
<p>In working out some examples of DI as part of a testability workshop at one of my clients, I whipped up a quick DI container, and being the freak that I am, hardened it until it was suitable for production, because I hate half-finished products. So allow me to introduce the <a href="http://www.israfil.net/projects/micro/israfil-micro-container/">Israfil Micro Container</a>. (That is, the Container from the Israfil Micro project). As I mention in the docs, &#8220;FemtoContainer&#8221; just was too ridiculous, and this container is smaller than pico-container. The project is BSD licensed, and hosted on <a href="http://code.google.com/p/israfil-micro/">googlecode</a>, so source is freely available and there&#8217;s an issue/feature tracker, yadda yadda.</p>
<p>Essentially I believe that people working on cellphones and set-top boxes shouldn&#8217;t be constrained out of some basic software design approaches &#8211; you just have to bend the design approach to fit the environment. So hopefully this is of use to more than one of my clients. It currently supports an auto-wiring registration, delayed object creation (until first need), and forthcoming are some basic lifecycle support, and a few other nicities. It does not use reflection (you use a little adapter for object creation instead), and performs quicker than pico-container. Low, low overhead. It&#8217;s also less than 10 classes and interfaces (including the two classes in the util project). It&#8217;s built with Maven2, so you can use it in any Maven2-built project with ease, but of course you can always also just download the jar (and the required util jar too). Enjoy&#8230;</p>
<p>P.S. There are a few other bits on googlecode that I&#8217;m working on in the micro-zone. Some minimalist backports of some of java.lang.concurrency (just the locks), as well as some of the java.util.Collections stuff. Not finished, but also part of the googlecode project.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=This%20post%20is%20a%20little%20geeky%20and%20technical%20and%20product-related%20for%20AgileAdvice%2C%20and%20is%20a%20shameless%20self-promotion.%20Nevertheless%2C%20since%20testability%2C%20test-driven-development%2C%20and%20incremental%20design%20are%20non-exclusive%20sub-topics%20of%20Agile%2C%20I%20though%20I%27d%20rep" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;bodytext=This%20post%20is%20a%20little%20geeky%20and%20technical%20and%20product-related%20for%20AgileAdvice%2C%20and%20is%20a%20shameless%20self-promotion.%20Nevertheless%2C%20since%20testability%2C%20test-driven-development%2C%20and%20incremental%20design%20are%20non-exclusive%20sub-topics%20of%20Agile%2C%20I%20though%20I%27d%20rep" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;notes=This%20post%20is%20a%20little%20geeky%20and%20technical%20and%20product-related%20for%20AgileAdvice%2C%20and%20is%20a%20shameless%20self-promotion.%20Nevertheless%2C%20since%20testability%2C%20test-driven-development%2C%20and%20incremental%20design%20are%20non-exclusive%20sub-topics%20of%20Agile%2C%20I%20though%20I%27d%20rep" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices." title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices." title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices.&amp;annotation=This%20post%20is%20a%20little%20geeky%20and%20technical%20and%20product-related%20for%20AgileAdvice%2C%20and%20is%20a%20shameless%20self-promotion.%20Nevertheless%2C%20since%20testability%2C%20test-driven-development%2C%20and%20incremental%20design%20are%20non-exclusive%20sub-topics%20of%20Agile%2C%20I%20though%20I%27d%20rep" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;t=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices." title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F08%2F02%2Fannouncements%2Fdependecy-injection-on-j2mecldc-devices%2F&amp;Title=Dependecy%20Injection%20on%20J2ME%2FCLDC%20devices." title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2008/08/02/announcements/dependecy-injection-on-j2mecldc-devices/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Quality is not an attribute, it&#8217;s a mindset</title>
		<link>http://www.agileadvice.com/2008/05/14/agileengineering/quality-is-not-an-attribute-its-a-mindset/</link>
		<comments>http://www.agileadvice.com/2008/05/14/agileengineering/quality-is-not-an-attribute-its-a-mindset/#comments</comments>
		<pubDate>Wed, 14 May 2008 18:39:03 +0000</pubDate>
		<dc:creator>Christian Gruber</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[christian edward gruber]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[systems]]></category>
		<category><![CDATA[test driven development]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2008/05/14/agileengineering/quality-is-not-an-attribute-its-a-mindset/</guid>
		<description><![CDATA[This was actually cribbed from a Bruce Schneier blog post about security&#8230; Security engineers see the world differently than other engineers. Instead of focusing on how systems work, they focus on how systems fail, how they can be made to fail, and how to prevent&#8211;or protect against&#8211;those failures. Most software vulnerabilities don&#8217;t ever appear in [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2008/05/14/agileengineering/quality-is-not-an-attribute-its-a-mindset/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Quality+is+not+an+attribute%2C+it%26%238217%3Bs+a+mindset";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>This was actually cribbed from a <a href="http://www.schneier.com/">Bruce Schneier</a> <a href="http://www.schneier.com/blog/archives/2008/05/the_ethics_of_v.html" title="Bruce Schneier">blog post</a> about security&#8230;<br />
<blockquote>Security engineers see the world differently than other engineers. Instead of focusing on how systems work, they focus on how systems fail, how they can be made to fail, and how to prevent&#8211;or protect against&#8211;those failures. Most software vulnerabilities don&#8217;t ever appear in normal operations, only when an attacker deliberately exploits them. So security engineers need to think like attackers.People without the mindset sometimes think they can design security products, but they can&#8217;t. And you see the results all over society&#8211;in snake-oil cryptography, software, Internet protocols, voting machines, and fare card and other payment systems. Many of these systems had someone in charge of &#8220;security&#8221; on their teams, but it wasn&#8217;t someone who thought like an attacker.Â Â </p></blockquote>
<p>There&#8217;s an interesting parallel between this statement and how most software quality is handled. Quality and Security are similar. In fact, I see security as a very specific subset of quality-mindedness. Certainly both require the same mindset to ensure &#8211; rather than thinking merely &#8220;how will this work&#8221;, a quality-focused person will also, or perhaps alternately think: &#8220;how might this be breakable&#8221;. From this simple change in thinking flows several important approaches
<ul>
<li>Constraint-based thinking (as opposed to solution based thinking): allows an architect/developer to conceive of the set of possible solutions, rather than an enumeration of solutions. By looking at constraints, a developer implements the lean principle of deciding as late as possible, with as full information as possible.</li>
<li>Test-First: As one thinks of how it might break, scenarios emerge that can form the basis of test cases. These cases form a sort of executable acceptance criteria</li>
<li>Lateral Thinking: The constraint+test approach starts to get people into a very different mode, where vastly different kinds of solutions show up. The creative exercise of trying to break something provides insights that can change the whole approach of the system.</li>
</ul>
<p>Â Schneier goes on to ponderÂ <br />
<blockquote>This mindset is difficult to teach, and may be something you&#8217;re born with or not. But in order to train people possessing the mindset, they need to search for and find security vulnerabilities&#8211;again and again and again. And this is true regardless of the domain. Good cryptographers discover vulnerabilities in others&#8217; algorithms and protocols. Good software security experts find vulnerabilities in others&#8217; code. Good airport security designers figure out new ways to subvert airport security. And so on.Â Â </p></blockquote>
<p>Â Here again &#8211; I think it&#8217;s possible to help people get a mind-set about quality, but some do seem to have a knack. It&#8217;s important to have some of these people on your teams, as they&#8217;ll disturb the waters and identify potential failure modes. These are going to be the ones who want to &#8220;mistake proof&#8221; (to borrow Toyota&#8217;s phrase) the system by writing more unit tests and other executable proofs of the system. But most importantly (and I can personally testify to this) it is critical that people just write more tests. It is a learned skill to start to think of &#8220;how might this fail&#8221; until it becomes a background mental thread, always popping up risk models.A related concept is Demmings&#8217; &#8220;systems-thinking&#8221;, which, applied to software quality, causes one to start looking at whole ecosystems of error states. This is when fearless re-factoring starts to pay off, because the elimination of duplication allows one to catch classes of error in fewer and fewer locations, where they&#8217;re easier to fix. There are many and multifarious spin-off effects of this inverted questioning and the mindset it generates. Try it yourself. When you&#8217;re writing code, ask yourself how you might break it? What inputs, external state, etc. might cause it to fail, crash, or behave in odd ways. This starts to show you where you might have state leaking into the wild, or side-effects from excessively complex interactions in your code. So quality focus can start to improve not only the external perception of your product, but also its fitness to new requirements by making it more resilient and less brittle. Cleaner interactions and less duplication allow for much faster implementation of new features.I could go on, but I just wanted to convey this sense of &#8220;attitude&#8221; or &#8220;mindset,&#8221; over mere technique. Technique can help you get to a certain level, but you have to let it &#8220;click&#8221;, and the powerful questions can sometimes help.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=This%20was%20actually%20cribbed%20from%20a%20Bruce%20Schneier%20blog%20post%20about%20security...Security%20engineers%20see%20the%20world%20differently%20than%20other%20engineers.%20Instead%20of%20focusing%20on%20how%20systems%20work%2C%20they%20focus%20on%20how%20systems%20fail%2C%20how%20they%20can%20be%20made%20to%20fail%2C%20and%20h" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;bodytext=This%20was%20actually%20cribbed%20from%20a%20Bruce%20Schneier%20blog%20post%20about%20security...Security%20engineers%20see%20the%20world%20differently%20than%20other%20engineers.%20Instead%20of%20focusing%20on%20how%20systems%20work%2C%20they%20focus%20on%20how%20systems%20fail%2C%20how%20they%20can%20be%20made%20to%20fail%2C%20and%20h" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;notes=This%20was%20actually%20cribbed%20from%20a%20Bruce%20Schneier%20blog%20post%20about%20security...Security%20engineers%20see%20the%20world%20differently%20than%20other%20engineers.%20Instead%20of%20focusing%20on%20how%20systems%20work%2C%20they%20focus%20on%20how%20systems%20fail%2C%20how%20they%20can%20be%20made%20to%20fail%2C%20and%20h" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset&amp;annotation=This%20was%20actually%20cribbed%20from%20a%20Bruce%20Schneier%20blog%20post%20about%20security...Security%20engineers%20see%20the%20world%20differently%20than%20other%20engineers.%20Instead%20of%20focusing%20on%20how%20systems%20work%2C%20they%20focus%20on%20how%20systems%20fail%2C%20how%20they%20can%20be%20made%20to%20fail%2C%20and%20h" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;t=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F05%2F14%2Fagileengineering%2Fquality-is-not-an-attribute-its-a-mindset%2F&amp;Title=Quality%20is%20not%20an%20attribute%2C%20it%27s%20a%20mindset" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2008/05/14/agileengineering/quality-is-not-an-attribute-its-a-mindset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The cost of building</title>
		<link>http://www.agileadvice.com/2008/01/21/agileengineering/the-cost-of-building/</link>
		<comments>http://www.agileadvice.com/2008/01/21/agileengineering/the-cost-of-building/#comments</comments>
		<pubDate>Tue, 22 Jan 2008 07:17:31 +0000</pubDate>
		<dc:creator>Christian Gruber</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Theory of Agile]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2008/01/21/agileengineering/the-cost-of-building/</guid>
		<description><![CDATA[<p>Building software is expensive. I'm not talking about creating software, I mean taking software as written (source code) and running it through compilers and linkers and post-processors and packagers and obfuscators and installer-generators. It might not seem so, but look under the covers and you will find a wealth of costs and potential savings...</p>
<h2>Lifecycle of the Developer</h2>
<p>The developer has a concept he needs to translate into software. He (or she) does not sit and meditate until it comes to him, then streams it effortlessly into the computer. Rather he tries something, and tries something else, and writes some conditions (tests) to limit the scope of his options, and cycles over and over and over again between four main activities: creating -&#62; building -&#62; executing tests -&#62; discovering. The developer then wraps around, having discovered and learned (found the bug or identified a future direction) and begins to create again.</p>
<p>If you break this down, there are two states - active and waiting - that the developer is in at any point. He is active when he is learning and he is active when he is creating. He is waiting when he is building and executing tests. So the developer's ability to do further learning/creative work comes from how long he has to wait for building/executing the software.</p>]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2008/01/21/agileengineering/the-cost-of-building/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "The+cost+of+building";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>Building software is expensive. I&#8217;m not talking about creating software, I mean taking software as written (source code) and running it through compilers and linkers and post-processors and packagers and obfuscators and installer-generators. It might not seem so, but look under the covers and you will find a wealth of costs and potential savings&#8230;</p>
<h3>Lifecycle of the Developer</h3>
<p>The developer has a concept he needs to translate into software. He (or she) does not sit and meditate until it comes to him, then streams it effortlessly into the computer. Rather he tries something, and tries something else, and writes some conditions (tests) to limit the scope of his options, and cycles over and over and over again between four main activities: creating -&gt; building -&gt; executing tests -&gt; discovering. The developer then wraps around, having discovered and learned (found the bug or identified a future direction) and begins to create again.</p>
<p>If you break this down, there are two states &#8211; active and waiting &#8211; that the developer is in at any point. He is active when he is learning and he is active when he is creating. He is waiting when he is building and executing tests. So the developer&#8217;s ability to do further learning/creative work comes from how long he has to wait for building/executing the software.</p>
<div><a href="http://technorati.com/tag/agile" rel="tag">agile</a>, <a href="http://technorati.com/tag/build" rel="tag">build</a>, <a href="http://technorati.com/tag/infrastructure" rel="tag">infrastructure</a></div>
<p><span id="more-490"></span></p>
<p>None of the above would be interesting except for the fact that the developer does so many times per day. How many times? Well, now we get to the math.</p>
<h4>Large Builds = Fewer Builds</h4>
<p>Most software I&#8217;ve seen in my career has been heavy, bloated software. Lots of deep interlinking of code with lots of tests that go from the front of the system to the back, etc. On a typical build machine, this has often translated into 5-20 minutes to build and execute a subset of the automated tests.</p>
<p>When the build is this large, developers will tend to optimize their behaviour around this limitation. If I, as a developer, have to wait for 5-20 minutes between changes, I will start to group up changes into larger and larger batches so the total cost of building as a percentage of my time goes down. This may mean that I work on several things and then rebuild. It can be easy to lose track of all the balls being juggled, but worse &#8211; this behaviour encourages a reduction in test execution. I might also decide that I&#8217;m going to only build and not execute my tests, because they are taking, say, 75% of the total time waiting.</p>
<p>More changes + fewer tests = larger difficulties if the code is not exactly perfect or if I didn&#8217;t think of everything.</p>
<p>Each time I build, then, I risk breaking more, as any small change I introduce will be harder to find, and possibly have more effects. And I&#8217;m less likely to see the problem for many of these cycles due to the loss of the feedback from the tests. And the longer an error persists, the more likely it will compound with other errors, etc.</p>
<p>Reduced Value from Experienced Developers</p>
<p>This is not an absolute, but what I have found is that the longer the build, the less you are likely to obtain as much relative value from an experienced developer, vs. his less experienced counterparts. This is simply because less of the day is spent doing the tasks of development &#8211; creating and learning, and more time is spent waiting. Any monkey can wait, but high-value developers are high-cost and making them wait reduces the value you get from that increased developer productivity.</p>
<p>&#8220;Hold on a minute, Bub,&#8221; you might say, &#8220;an experienced developer will not stand for that delay, and will take steps to improve his conditions&#8230;&#8221;</p>
<p>It sort of makes the point. The more experienced the developer, the less likely he is to stomach the delay, as he feels the tangible loss of his value to the development effort. Often such developers will either batch work as discussed above, with all its issues, or will work to shorten build times.</p>
<h3>Shortening Build Times &#8211; The path to developer productivity</h3>
<p>The shorter you can make build times, the greater percentage of time can be spent in creative and learning tasks, without the accompanying batching problems. The shorter you can make builds, the more frequently you can execute tests. The more you shorten builds, the less waste in your developer&#8217;s lifecycle.</p>
<p>But how?</p>
<h4>Spend the money on better hardware</h4>
<p>I&#8217;m not kidding. Paying $3000/developer for better equipment (just to take a number out of the air)&#8230; yes, for EACH developer, is a remarkably small cost when you consider the whole picture. If a developer makes $50,000/year (doesn&#8217;t matter if that&#8217;s high or low, it&#8217;s simple math&#8230; adjust for your market) and if they&#8217;re being slowed down by 20% by their builds being 10 minute builds (again, conservative slowdown for that high a build length), then consider: If they&#8217;re slowed down by 20%, then you&#8217;re throwing away $10,000/year on wasted developer productivity. Even more for higher-paid developers. Hardware is almost always cheaper than developer time, and if they&#8217;re using equipment that they complain is too slow, then it&#8217;s a very small investment for a large payoff.</p>
<h4>Break the projects into smaller sub-projects</h4>
<p>If you have a large project and containing, say, 6000 classes, 21,000 lines of code, and lots of interdependencies, plus tests, that&#8217;s a hefty build. But if I change one class in the middle, not every last thing has to be completely rebuilt. Yes javac (if you use it) or other change-sensitive compilers or build systems can do some speedup on that, but you still end up running all the tests, because you don&#8217;t know inherently which tests are not relevant because of the dependencies.</p>
<p>If you break the projects into smaller sub-projects, and then use some central dependency management system such as <a href="http://maven.apache.org" title="Maven 2 Automated Build and Dependency Management">Maven</a>, and a continuous integration system that understands the dependencies, it can build those projects with changes, and then only build the down-stream dependencies</p>
<p>This has many side-benefits. For one, smaller sub-projects means fewer circular dependencies, which improves reusability of those units. Further more, smaller units are easier to test, and developers are less intimidated when writing tests for smaller units. This &#8220;virtuous cycle&#8221; means developers are writing more tests, which improves quality which wastes less developer time on later defects, etc.</p>
<p>Using such systems can also provide more isolation between these units which reduces contention when many developers are working on a system simultaneously, as there are fewer places where developers would have to integrate their changes directly with another&#8217;s, and such locations become easier to track and manage.</p>
<h4>Encourage more unit testing</h4>
<p>This is tricky, because it&#8217;s easy for a developer to think that writing a single set of system tests which tests all the way through the system is faster than writing a larger volume of isolated unit tests. Below the surface, you begin to find that by executing a long (1-2 minute) integration test, and perhaps executing 5-15 of them can very quickly result in 5-30 minute builds. These end up then either getting run and delaying development, or they don&#8217;t get run at all by the developer until much later. This latter case, alluded to above is the bane of software quality, because it means that large volumes of change are being introduced without any sort of regression test to ensure that error hasn&#8217;t been introduced. If integration tests are run once per day (and you don&#8217;t have enough isolated unit tests to cover the same code) then you can have a day&#8217;s worth of several developers&#8217; error colliding, which can cause hours of work teasing apart the problems.</p>
<p>Unit tests should execute in under 1 second, in my experience (perhaps 2-5 seconds for tests that involve multithreading). You should be able to have hundreds of unit tests, and a good test execution framework should execute many of them in parallel to speed up test execution. (Maven&#8217;s surefire doesn&#8217;t do this per-se, but does support TestNG which certainly supports parallel execution of tests). Furthermore, isolated unit testing works with hard-coded test data which cannot be changed by this or that environment change caused by other teams or infrastructure groups. They are portable tests. They should work in any environment, with rare exceptions.</p>
<p>Additionally, isolated testing encourages a stronger &#8220;code-to-contract&#8221; or &#8220;strong API&#8221; approach to design, which has long been understood to improve quality. Such approaches mean that you can have more complete code and branch coverage, but probably more importantly, more case or scenario coverage.</p>
<h3>The Bottom Line</h3>
<p>Ultimately, software is about delivering as much value as possible, sustainably, as early as possible. This is true in both commercial and open-source contexts, but is certainly and especially true in a commercial context. Every delay in developer productivity is a delay in realizing the value provided, which often equates to a delay in gaining revenue. By reducing the wait-time for developers due to build and test execution you can achieve at least large fractional gains, and sometimes you achieve economies that allow an order of magnitude in productivity gains from the combined factors mentioned above. If you start to get the feeling that &#8220;it costs too much&#8221;, or &#8220;writing all those tests takes time,&#8221; or &#8220;re-organizing the projects will be too disruptive,&#8221; make sure you&#8217;re thinking of the whole cost. Don&#8217;t sub-optimize on a part of the value at the cost of delivering value to your customer, sustainably, as early as possible. Choosing any path that slows this value stream down is throwing money away, even if it seems to save costs/time in a localized way. &#8220;Penny-wise, Pound(Dollar)-foolish&#8221; has never been more true.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=Building%20software%20is%20expensive.%20I%27m%20not%20talking%20about%20creating%20software%2C%20I%20mean%20taking%20software%20as%20written%20%28source%20code%29%20and%20running%20it%20through%20compilers%20and%20linkers%20and%20post-processors%20and%20packagers%20and%20obfuscators%20and%20installer-generators.%20It%20might%20not%20seem%20so%2C%20but%20look%20under%20the%20covers%20and%20you%20will%20find%20a%20wealth%20of%20costs%20and%20potential%20savings...%0ALifecycle%20of%20the%20Developer%0AThe%20developer%20has%20a%20concept%20he%20needs%20to%20translate%20into%20software.%20He%20%28or%20she%29%20does%20not%20sit%20and%20meditate%20until%20it%20comes%20to%20him%2C%20then%20streams%20it%20effortlessly%20into%20the%20computer.%20Rather%20he%20tries%20something%2C%20and%20tries%20something%20else%2C%20and%20writes%20some%20conditions%20%28tests%29%20to%20limit%20the%20scope%20of%20his%20options%2C%20and%20cycles%20over%20and%20over%20and%20over%20again%20between%20four%20main%20activities%3A%20creating%20-%26gt%3B%20building%20-%26gt%3B%20executing%20tests%20-%26gt%3B%20discovering.%20The%20developer%20then%20wraps%20around%2C%20having%20discovered%20and%20learned%20%28found%20the%20bug%20or%20identified%20a%20future%20direction%29%20and%20begins%20to%20create%20again.%0AIf%20you%20break%20this%20down%2C%20there%20are%20two%20states%20-%20active%20and%20waiting%20-%20that%20the%20developer%20is%20in%20at%20any%20point.%20He%20is%20active%20when%20he%20is%20learning%20and%20he%20is%20active%20when%20he%20is%20creating.%20He%20is%20waiting%20when%20he%20is%20building%20and%20executing%20tests.%20So%20the%20developer%27s%20ability%20to%20do%20further%20learning%2Fcreative%20work%20comes%20from%20how%20long%20he%20has%20to%20wait%20for%20building%2Fexecuting%20the%20software." title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building&amp;bodytext=Building%20software%20is%20expensive.%20I%27m%20not%20talking%20about%20creating%20software%2C%20I%20mean%20taking%20software%20as%20written%20%28source%20code%29%20and%20running%20it%20through%20compilers%20and%20linkers%20and%20post-processors%20and%20packagers%20and%20obfuscators%20and%20installer-generators.%20It%20might%20not%20seem%20so%2C%20but%20look%20under%20the%20covers%20and%20you%20will%20find%20a%20wealth%20of%20costs%20and%20potential%20savings...%0ALifecycle%20of%20the%20Developer%0AThe%20developer%20has%20a%20concept%20he%20needs%20to%20translate%20into%20software.%20He%20%28or%20she%29%20does%20not%20sit%20and%20meditate%20until%20it%20comes%20to%20him%2C%20then%20streams%20it%20effortlessly%20into%20the%20computer.%20Rather%20he%20tries%20something%2C%20and%20tries%20something%20else%2C%20and%20writes%20some%20conditions%20%28tests%29%20to%20limit%20the%20scope%20of%20his%20options%2C%20and%20cycles%20over%20and%20over%20and%20over%20again%20between%20four%20main%20activities%3A%20creating%20-%26gt%3B%20building%20-%26gt%3B%20executing%20tests%20-%26gt%3B%20discovering.%20The%20developer%20then%20wraps%20around%2C%20having%20discovered%20and%20learned%20%28found%20the%20bug%20or%20identified%20a%20future%20direction%29%20and%20begins%20to%20create%20again.%0AIf%20you%20break%20this%20down%2C%20there%20are%20two%20states%20-%20active%20and%20waiting%20-%20that%20the%20developer%20is%20in%20at%20any%20point.%20He%20is%20active%20when%20he%20is%20learning%20and%20he%20is%20active%20when%20he%20is%20creating.%20He%20is%20waiting%20when%20he%20is%20building%20and%20executing%20tests.%20So%20the%20developer%27s%20ability%20to%20do%20further%20learning%2Fcreative%20work%20comes%20from%20how%20long%20he%20has%20to%20wait%20for%20building%2Fexecuting%20the%20software." title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building&amp;notes=Building%20software%20is%20expensive.%20I%27m%20not%20talking%20about%20creating%20software%2C%20I%20mean%20taking%20software%20as%20written%20%28source%20code%29%20and%20running%20it%20through%20compilers%20and%20linkers%20and%20post-processors%20and%20packagers%20and%20obfuscators%20and%20installer-generators.%20It%20might%20not%20seem%20so%2C%20but%20look%20under%20the%20covers%20and%20you%20will%20find%20a%20wealth%20of%20costs%20and%20potential%20savings...%0ALifecycle%20of%20the%20Developer%0AThe%20developer%20has%20a%20concept%20he%20needs%20to%20translate%20into%20software.%20He%20%28or%20she%29%20does%20not%20sit%20and%20meditate%20until%20it%20comes%20to%20him%2C%20then%20streams%20it%20effortlessly%20into%20the%20computer.%20Rather%20he%20tries%20something%2C%20and%20tries%20something%20else%2C%20and%20writes%20some%20conditions%20%28tests%29%20to%20limit%20the%20scope%20of%20his%20options%2C%20and%20cycles%20over%20and%20over%20and%20over%20again%20between%20four%20main%20activities%3A%20creating%20-%26gt%3B%20building%20-%26gt%3B%20executing%20tests%20-%26gt%3B%20discovering.%20The%20developer%20then%20wraps%20around%2C%20having%20discovered%20and%20learned%20%28found%20the%20bug%20or%20identified%20a%20future%20direction%29%20and%20begins%20to%20create%20again.%0AIf%20you%20break%20this%20down%2C%20there%20are%20two%20states%20-%20active%20and%20waiting%20-%20that%20the%20developer%20is%20in%20at%20any%20point.%20He%20is%20active%20when%20he%20is%20learning%20and%20he%20is%20active%20when%20he%20is%20creating.%20He%20is%20waiting%20when%20he%20is%20building%20and%20executing%20tests.%20So%20the%20developer%27s%20ability%20to%20do%20further%20learning%2Fcreative%20work%20comes%20from%20how%20long%20he%20has%20to%20wait%20for%20building%2Fexecuting%20the%20software." title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=The%20cost%20of%20building&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=The%20cost%20of%20building&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;title=The%20cost%20of%20building&amp;annotation=Building%20software%20is%20expensive.%20I%27m%20not%20talking%20about%20creating%20software%2C%20I%20mean%20taking%20software%20as%20written%20%28source%20code%29%20and%20running%20it%20through%20compilers%20and%20linkers%20and%20post-processors%20and%20packagers%20and%20obfuscators%20and%20installer-generators.%20It%20might%20not%20seem%20so%2C%20but%20look%20under%20the%20covers%20and%20you%20will%20find%20a%20wealth%20of%20costs%20and%20potential%20savings...%0ALifecycle%20of%20the%20Developer%0AThe%20developer%20has%20a%20concept%20he%20needs%20to%20translate%20into%20software.%20He%20%28or%20she%29%20does%20not%20sit%20and%20meditate%20until%20it%20comes%20to%20him%2C%20then%20streams%20it%20effortlessly%20into%20the%20computer.%20Rather%20he%20tries%20something%2C%20and%20tries%20something%20else%2C%20and%20writes%20some%20conditions%20%28tests%29%20to%20limit%20the%20scope%20of%20his%20options%2C%20and%20cycles%20over%20and%20over%20and%20over%20again%20between%20four%20main%20activities%3A%20creating%20-%26gt%3B%20building%20-%26gt%3B%20executing%20tests%20-%26gt%3B%20discovering.%20The%20developer%20then%20wraps%20around%2C%20having%20discovered%20and%20learned%20%28found%20the%20bug%20or%20identified%20a%20future%20direction%29%20and%20begins%20to%20create%20again.%0AIf%20you%20break%20this%20down%2C%20there%20are%20two%20states%20-%20active%20and%20waiting%20-%20that%20the%20developer%20is%20in%20at%20any%20point.%20He%20is%20active%20when%20he%20is%20learning%20and%20he%20is%20active%20when%20he%20is%20creating.%20He%20is%20waiting%20when%20he%20is%20building%20and%20executing%20tests.%20So%20the%20developer%27s%20ability%20to%20do%20further%20learning%2Fcreative%20work%20comes%20from%20how%20long%20he%20has%20to%20wait%20for%20building%2Fexecuting%20the%20software." title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;t=The%20cost%20of%20building" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2008%2F01%2F21%2Fagileengineering%2Fthe-cost-of-building%2F&amp;Title=The%20cost%20of%20building" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2008/01/21/agileengineering/the-cost-of-building/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimating Software Projects</title>
		<link>http://www.agileadvice.com/2007/12/20/agileengineering/estimating-software-projects/</link>
		<comments>http://www.agileadvice.com/2007/12/20/agileengineering/estimating-software-projects/#comments</comments>
		<pubDate>Thu, 20 Dec 2007 23:48:48 +0000</pubDate>
		<dc:creator>Mishkin Berteig</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2007/12/20/agileengineering/estimating-software-projects/</guid>
		<description><![CDATA[There is an interesting article called &#8220;Software Estimates and the Parable of the Cave&#8220;. It starts out well. The cave parable is effective and clearly conveys the problem with estimating software work. However, there is a big section of the article called &#8220;Applying this Wisdom&#8221; which I think does a dis-service to everyone. Let&#8217;s look [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2007/12/20/agileengineering/estimating-software-projects/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Estimating+Software+Projects";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>There is an interesting article called &#8220;<a href="http://blog.slickedit.com/?p=207">Software Estimates and the Parable of the Cave</a>&#8220;. It starts out well. The cave parable is effective and clearly conveys the problem with estimating software work. However, there is a big section of the article called &#8220;Applying this Wisdom&#8221; which I think does a dis-service to everyone. Let&#8217;s look at this closely&#8230;</p>
<p><span id="more-482"></span>&#8220;Draw on your experience.&#8221; Okay, didn&#8217;t we just get through a parable that said that experience was inapplicable, or at best questionable? Okay, let&#8217;s take that as a given. So what can we do? Don&#8217;t estimate. Seriously.</p>
<p>&#8220;Expect the unexpected!&#8221; I love this one. This is like saying tell me what you don&#8217;t know that you don&#8217;t know! Or please tell me the price (on Dec. 20th, 2009) of the shares of the 20th (after today) startup to go public on the NASDAQ. The future is unpredictable. The farther out, the worse it is. So what can we do? Don&#8217;t estimate.</p>
<p>&#8220;Provide estimates that are ranges&#8230;&#8221; I&#8217;m not sure why anyone would want an estimate that is a range. Are you going to give me a money-back guarantee that you will deliver at the end of the range? Are you saying that if I through all the money and resources and intelligence at you you will be able to deliver at the low end of your range? Are you saying that you don&#8217;t know? So what can we do&#8230;(wait for it!)? &#8230; Don&#8217;t estimate.</p>
<p>&#8220;Make your estimates as fine-grained as possible&#8221;. Let&#8217;s take this one to the limit shall we? The finest grained estimate we can make is based on complete knowledge of every single tiny task needed in order to create the software&#8230; which is logically equivalent to writing the software and then telling me how long it actually took. Yes, this is getting a bit repetitive&#8230; so what can we do&#8230; (let&#8217;s hear it from the audience!!!). Don&#8217;t estimate.</p>
<p>&#8220;Use incremental and iterative processes&#8221;. Okay, I admit, I _like_ this one. But how does it relate to estimates exactly? Not exactly clear, but I suppose I have to admit, I have a way to do this in mind&#8230; if you must. (But it has absolutely nothing to do with what is recommended in &#8220;applying the wisdom&#8221; above. Oh&#8230; and Don&#8217;t estimate.</p>
<p>&#8220;Work on the riskiest part of the system first&#8221;. Jeez Louise! Let&#8217;s pretend I&#8217;m running a business. I tell you: &#8220;here&#8217;s all the stuff I need and want&#8221;. You tell me: &#8220;this part &#8216;A&#8217; is the riskiest, I&#8217;m going to work on that first.&#8221; I say, &#8220;screw you! I want the most important thing first!&#8221; And you say&#8230;. what exactly? (Well, if the most important is also the riskiest, then actually I say &#8220;okay&#8221;.) And what does this have to do with estimating?</p>
<p>&#8220;Environment of trust.&#8221; I like this one too. But I don&#8217;t think it has anything to do with estimation except as a surface symptom (failure to meet estimates should _not_ lead to more work trying to get better at estimating). I think it has to do with truthfulness, quality and a few other things beyond the scope of this article&#8230;</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=There%20is%20an%20interesting%20article%20called%20%22Software%20Estimates%20and%20the%20Parable%20of%20the%20Cave%22.%20It%20starts%20out%20well.%20The%20cave%20parable%20is%20effective%20and%20clearly%20conveys%20the%20problem%20with%20estimating%20software%20work.%20However%2C%20there%20is%20a%20big%20section%20of%20the%20article%20c" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects&amp;bodytext=There%20is%20an%20interesting%20article%20called%20%22Software%20Estimates%20and%20the%20Parable%20of%20the%20Cave%22.%20It%20starts%20out%20well.%20The%20cave%20parable%20is%20effective%20and%20clearly%20conveys%20the%20problem%20with%20estimating%20software%20work.%20However%2C%20there%20is%20a%20big%20section%20of%20the%20article%20c" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects&amp;notes=There%20is%20an%20interesting%20article%20called%20%22Software%20Estimates%20and%20the%20Parable%20of%20the%20Cave%22.%20It%20starts%20out%20well.%20The%20cave%20parable%20is%20effective%20and%20clearly%20conveys%20the%20problem%20with%20estimating%20software%20work.%20However%2C%20there%20is%20a%20big%20section%20of%20the%20article%20c" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Estimating%20Software%20Projects&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Estimating%20Software%20Projects&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;title=Estimating%20Software%20Projects&amp;annotation=There%20is%20an%20interesting%20article%20called%20%22Software%20Estimates%20and%20the%20Parable%20of%20the%20Cave%22.%20It%20starts%20out%20well.%20The%20cave%20parable%20is%20effective%20and%20clearly%20conveys%20the%20problem%20with%20estimating%20software%20work.%20However%2C%20there%20is%20a%20big%20section%20of%20the%20article%20c" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;t=Estimating%20Software%20Projects" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F20%2Fagileengineering%2Festimating-software-projects%2F&amp;Title=Estimating%20Software%20Projects" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2007/12/20/agileengineering/estimating-software-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automated Testing</title>
		<link>http://www.agileadvice.com/2007/12/14/agileengineering/automated-testing/</link>
		<comments>http://www.agileadvice.com/2007/12/14/agileengineering/automated-testing/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 16:43:51 +0000</pubDate>
		<dc:creator>Mishkin Berteig</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2007/12/14/uncategorized/automated-testing/</guid>
		<description><![CDATA[In agile software development, automated testing plays a big role due to the emphasis on quality. A friend of mine, Tom Cooper, whom I worked with a few years ago at a major capital markets firm, passed these links on to me yesterday. There are some folks at NIST and the Univ. of Texas who [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2007/12/14/agileengineering/automated-testing/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Automated+Testing";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>In agile software development, automated testing plays a big role due to the emphasis on quality.  A friend of mine, Tom Cooper, whom I worked with a few years ago at a major capital markets firm, passed these links on to me yesterday.  There are some folks at NIST and the Univ. of Texas who are building a tool called FireEye.  Here is the <a href="http://www.gcn.com/online/vol1_no1/45555-1.html">press release,</a> here is the <a href="http://www.mit.edu/%7Emiforbes/forbes_SURF-2007.pdf">pdf presentation</a>.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=In%20agile%20software%20development%2C%20automated%20testing%20plays%20a%20big%20role%20due%20to%20the%20emphasis%20on%20quality.%20%20A%20friend%20of%20mine%2C%20Tom%20Cooper%2C%20whom%20I%20worked%20with%20a%20few%20years%20ago%20at%20a%20major%20capital%20markets%20firm%2C%20passed%20these%20links%20on%20to%20me%20yesterday.%20%20There%20are%20som" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing&amp;bodytext=In%20agile%20software%20development%2C%20automated%20testing%20plays%20a%20big%20role%20due%20to%20the%20emphasis%20on%20quality.%20%20A%20friend%20of%20mine%2C%20Tom%20Cooper%2C%20whom%20I%20worked%20with%20a%20few%20years%20ago%20at%20a%20major%20capital%20markets%20firm%2C%20passed%20these%20links%20on%20to%20me%20yesterday.%20%20There%20are%20som" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing&amp;notes=In%20agile%20software%20development%2C%20automated%20testing%20plays%20a%20big%20role%20due%20to%20the%20emphasis%20on%20quality.%20%20A%20friend%20of%20mine%2C%20Tom%20Cooper%2C%20whom%20I%20worked%20with%20a%20few%20years%20ago%20at%20a%20major%20capital%20markets%20firm%2C%20passed%20these%20links%20on%20to%20me%20yesterday.%20%20There%20are%20som" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Automated%20Testing&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Automated%20Testing&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;title=Automated%20Testing&amp;annotation=In%20agile%20software%20development%2C%20automated%20testing%20plays%20a%20big%20role%20due%20to%20the%20emphasis%20on%20quality.%20%20A%20friend%20of%20mine%2C%20Tom%20Cooper%2C%20whom%20I%20worked%20with%20a%20few%20years%20ago%20at%20a%20major%20capital%20markets%20firm%2C%20passed%20these%20links%20on%20to%20me%20yesterday.%20%20There%20are%20som" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;t=Automated%20Testing" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F12%2F14%2Fagileengineering%2Fautomated-testing%2F&amp;Title=Automated%20Testing" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2007/12/14/agileengineering/automated-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile and Lean Defect Tracking</title>
		<link>http://www.agileadvice.com/2007/08/21/agileengineering/agile-and-lean-defect-tracking/</link>
		<comments>http://www.agileadvice.com/2007/08/21/agileengineering/agile-and-lean-defect-tracking/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 03:46:34 +0000</pubDate>
		<dc:creator>Mishkin Berteig</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Links to Agile Info]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2007/08/21/uncategorized/agile-and-lean-defect-tracking/</guid>
		<description><![CDATA[Lisa Crispin has written an excellent article about defect tracking in agile environments. The article is a couple of months old now, but if you haven&#8217;t read it yet, you definitely should! I particularly like the perspective that Mary Poppendieck offers in the article&#8230; Since Quality is Not Negotiable, and since defects in both XP [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2007/08/21/agileengineering/agile-and-lean-defect-tracking/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Agile+and+Lean+Defect+Tracking";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p><a href="http://lisa.crispin.home.att.net/">Lisa Crispin</a> has written an excellent article about <a href="http://home.att.net/~lisa.crispin/CrispinFinal.pdf">defect tracking in agile environments</a>.  The article is a couple of months old now, but if you haven&#8217;t read it yet, you definitely should!  I particularly like the perspective that Mary Poppendieck offers in the article&#8230;</p>
<p><span id="more-435"></span><br />
Since <a href="http://www.agileadvice.com/archives/2006/08/quality_is_not.html">Quality is Not Negotiable</a>, and since defects in both XP and Scrum are meant to be dealt with immediately, there is a good argument to be made for doing away with any type of automated tool-based defect tracking.</p>
<p>One team I <a href="http://www.berteigconsulting.com/">coached</a> really struggled with this.  They were working on the first every agile project in their organization and none of the team members had any prior experience with agile or with test-driven development.  It was a small project, but management wanted to do things &#8220;right&#8221;.  They had a team room, a cross-functional team, short iterations, etc. etc.</p>
<p>One member of the team was a person who was their Quality Assurance expert.  This person was extremely capable: able to write excellent test scripts (in Excel) and able to think carefully about quality.  However, the organization was not set up to support an agile approach to quality: QA folks were measured on how many defects they found and logged in their defect tracking system.</p>
<p>Since the team had decided to use test-driven development, they soon found that they had an odd question: when does incomplete work become defective work that needs to be logged?  In other words, since the tests are written first and they start out by failing, and since this is normal and happens for <em>every single feature, exception condition and even method of code</em>, tracking all these as &#8220;defects&#8221; would be meaningless.  So how do you decide that something is a defect instead of test-driven work that just isn&#8217;t <em>yet</em> making the tests pass?</p>
<p>After a great deal of discussion and confusion and consternation, we finally agreed to a simple and effective practice: inside of an iteration, any issues or problems that come up are written on the whiteboard.  The whiteboard needs to be clear by the end of the iteration.  If it is not, then the items that are still there are logged into the defect tracking system.  These items also become top priority for the next iteration.  As well, any items which had non-passing tests by the end of the iteration were also put into the defect tracking system and became top priority for the next iteration.</p>
<p>This helped&#8230; and we only ended up with at most one or two items at the end of each iteration that could be logged&#8230; and often there were no known defects.</p>
<p>This was legitimately painful for the QA person whose defect logging rates went way down.  Fortunately, since this was a pilot project, it was easy to explain to management what was going on.  This is a very good example of how a management practice that makes a lot of sense in a non-agile environment becomes a huge obstacle in an agile environment.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=Lisa%20Crispin%20has%20written%20an%20excellent%20article%20about%20defect%20tracking%20in%20agile%20environments.%20%20The%20article%20is%20a%20couple%20of%20months%20old%20now%2C%20but%20if%20you%20haven%27t%20read%20it%20yet%2C%20you%20definitely%20should%21%20%20I%20particularly%20like%20the%20perspective%20that%20Mary%20Poppendieck%20o" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking&amp;bodytext=Lisa%20Crispin%20has%20written%20an%20excellent%20article%20about%20defect%20tracking%20in%20agile%20environments.%20%20The%20article%20is%20a%20couple%20of%20months%20old%20now%2C%20but%20if%20you%20haven%27t%20read%20it%20yet%2C%20you%20definitely%20should%21%20%20I%20particularly%20like%20the%20perspective%20that%20Mary%20Poppendieck%20o" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking&amp;notes=Lisa%20Crispin%20has%20written%20an%20excellent%20article%20about%20defect%20tracking%20in%20agile%20environments.%20%20The%20article%20is%20a%20couple%20of%20months%20old%20now%2C%20but%20if%20you%20haven%27t%20read%20it%20yet%2C%20you%20definitely%20should%21%20%20I%20particularly%20like%20the%20perspective%20that%20Mary%20Poppendieck%20o" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Agile%20and%20Lean%20Defect%20Tracking&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Agile%20and%20Lean%20Defect%20Tracking&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;title=Agile%20and%20Lean%20Defect%20Tracking&amp;annotation=Lisa%20Crispin%20has%20written%20an%20excellent%20article%20about%20defect%20tracking%20in%20agile%20environments.%20%20The%20article%20is%20a%20couple%20of%20months%20old%20now%2C%20but%20if%20you%20haven%27t%20read%20it%20yet%2C%20you%20definitely%20should%21%20%20I%20particularly%20like%20the%20perspective%20that%20Mary%20Poppendieck%20o" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;t=Agile%20and%20Lean%20Defect%20Tracking" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F08%2F21%2Fagileengineering%2Fagile-and-lean-defect-tracking%2F&amp;Title=Agile%20and%20Lean%20Defect%20Tracking" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2007/08/21/agileengineering/agile-and-lean-defect-tracking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Effects of Defects: Grey Scope Creep</title>
		<link>http://www.agileadvice.com/2007/04/19/agileengineering/effects-of-defects-grey-scope-creep/</link>
		<comments>http://www.agileadvice.com/2007/04/19/agileengineering/effects-of-defects-grey-scope-creep/#comments</comments>
		<pubDate>Thu, 19 Apr 2007 17:42:25 +0000</pubDate>
		<dc:creator>Dmitri Zimine</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2007/04/19/uncategorized/effects-of-defects-grey-scope-creep/</guid>
		<description><![CDATA[Is boosting productivity simple? Yes! Just cut code! One problem here. The gap between code complete and feature done is bigger then it appears. That was my thought as I was looking at statistics. Reposted [and edited - Mishkin] from www.softwarefrontier.com by Dmitri Zimin(e) On average, a developer cuts 300 lines per day, some true [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2007/04/19/agileengineering/effects-of-defects-grey-scope-creep/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Effects+of+Defects%3A+Grey+Scope+Creep";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>Is boosting productivity simple? Yes! Just cut code! One problem here. The gap between code complete and feature done is bigger then it appears. That was my thought as I was looking at statistics.</p>
<p><span id="more-413"></span><br />
<em>Reposted [and edited - Mishkin] from <a href="http://www.softwarefrontier.com/2007/04/effects-of-defects-grey-scope-creep.html">www.softwarefrontier.com</a> by Dmitri Zimin(e)</em></p>
<p>On average, a developer cuts 300 lines per day, some true heroes claim more. This â€œproductivityâ€ comes with the price of 100 defects per 1000 lines of code. Finding defect and fixing it is on average 4 to 16 hours <a href="http://www.amazon.ca/Discipline-Software-Engineering-Watts-Humphrey/dp/0201546108/ref=sr_1_2/701-8152583-5192327?ie=UTF8&amp;s=books&amp;qid=1176702305&amp;sr=8-2">[1]</a> <a href="http://www.amazon.ca/Introduction-Personal-Software-Process-sm/dp/0201548097/ref=sr_1_5/701-8152583-5192327?ie=UTF8&amp;s=books&amp;qid=1176702587&amp;sr=1-5">[2]</a></p>
<p>Do the math: Your star developer produces 500 lines a day. This creates up to 80 hours of extra work to himself, the dev team and their tester buddies. 10 days! I call it â€œgrey scope creepâ€.</p>
<p>At first, these statistics seems totally off. But you can surely remember such a super-star code monkey? You surely know a few. Now go over all these steps to fix a defect: cutting the build, installing it in QA, testing, finding the bug, writing a bug report, assigning it back to development, reviewing, trying in vain to reproduceâ€¦ â€œWorks on my machineâ€, sending it back to QA, and finally, after a couple of round-trips, itâ€™s fixed. Then regression sticks out its ugly head, and the high 16 man-hours per bug looks too good to be true.</p>
<p>So, is boosting productivity simple? Yes! Less bugs in, more bugs out! One problem here. But enough on problems, letâ€™s get positive and move on to how fight grey scope creep.</p>
<p>First, if these superstar developers only care about the joy of cutting code, not shipping the software, they get the boot. Donâ€™t regret it, they produce more work then they get done. It is not about developers developing and testers testing. It is developers and testers working cooperatively to ship software. We&#8217;ve got no space for local optimization.</p>
<p>Second, good software practices are to the rescue. Pair programming, design and code reviews, test driven development, etcâ€¦ They surely slow down the LOC/day pseudo-performance (less bugs in) and reduce the number of defects. Pair programming by itself brings 15% less bugs, with healthy 15% slow-down of LOC performance <a href="http://collaboration.csc.ncsu.edu/laurie/Papers/XPSardinia.PDF">[3]</a>.</p>
<p>Third, redefine â€œdoneâ€. Fresh features are marked done, and then disappear somewhere in QA to eventually fire back at unknown time with unknown bugs. Grey scope creep. Stop it. Instead, insist on taking less but making it â€œdoneâ€ within an iteration. Done reads fully developed, thoroughly tested, debugged, fixed including regression, and accepted by product owner. If this brings development to a deadlock, itâ€™s one of the two. You may be blessed to fail faster and cheaper. After all, if you canâ€™t get â€œdoneâ€ just one feature, how would you ever be done with the entire project? Or the team overcomes the crisis and changes the working habits. The shortened feedback loop and fixing bugs as you make it leads to less time per bug fix. The grey scope doesnâ€™t creep beyond the iteration. Problems become obvious early enough to to deal with them.</p>
<p>Finally, until you fix the grey scope creep, your estimations could be off, up to 10 times! Measure well.</p>
<p>So, is boosting productivity simple? Yes! One problem here. Trying to address it may expose the stakeholders to too much truth about the state of the project. Figure out how to deal with this truth. Or wait to my next blog entry&#8230; I have some thoughts about this too.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=Is%20boosting%20productivity%20simple%3F%20Yes%21%20Just%20cut%20code%21%20One%20problem%20here.%20The%20gap%20between%20code%20complete%20and%20feature%20done%20is%20bigger%20then%20it%20appears.%20That%20was%20my%20thought%20as%20I%20was%20looking%20at%20statistics.%0D%0A%0D%0A%0D%0AReposted%20%5Band%20edited%20-%20Mishkin%5D%20from%20www.softwar" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;bodytext=Is%20boosting%20productivity%20simple%3F%20Yes%21%20Just%20cut%20code%21%20One%20problem%20here.%20The%20gap%20between%20code%20complete%20and%20feature%20done%20is%20bigger%20then%20it%20appears.%20That%20was%20my%20thought%20as%20I%20was%20looking%20at%20statistics.%0D%0A%0D%0A%0D%0AReposted%20%5Band%20edited%20-%20Mishkin%5D%20from%20www.softwar" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;notes=Is%20boosting%20productivity%20simple%3F%20Yes%21%20Just%20cut%20code%21%20One%20problem%20here.%20The%20gap%20between%20code%20complete%20and%20feature%20done%20is%20bigger%20then%20it%20appears.%20That%20was%20my%20thought%20as%20I%20was%20looking%20at%20statistics.%0D%0A%0D%0A%0D%0AReposted%20%5Band%20edited%20-%20Mishkin%5D%20from%20www.softwar" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep&amp;annotation=Is%20boosting%20productivity%20simple%3F%20Yes%21%20Just%20cut%20code%21%20One%20problem%20here.%20The%20gap%20between%20code%20complete%20and%20feature%20done%20is%20bigger%20then%20it%20appears.%20That%20was%20my%20thought%20as%20I%20was%20looking%20at%20statistics.%0D%0A%0D%0A%0D%0AReposted%20%5Band%20edited%20-%20Mishkin%5D%20from%20www.softwar" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;t=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2007%2F04%2F19%2Fagileengineering%2Feffects-of-defects-grey-scope-creep%2F&amp;Title=Effects%20of%20Defects%3A%20Grey%20Scope%20Creep" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2007/04/19/agileengineering/effects-of-defects-grey-scope-creep/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Technical Debt</title>
		<link>http://www.agileadvice.com/2006/12/22/agileengineering/technical-debt/</link>
		<comments>http://www.agileadvice.com/2006/12/22/agileengineering/technical-debt/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 16:23:12 +0000</pubDate>
		<dc:creator>Mishkin Berteig</dc:creator>
				<category><![CDATA[Agile Engineering]]></category>
		<category><![CDATA[Agile Management]]></category>
		<category><![CDATA[Theory of Agile]]></category>
		<category><![CDATA[Discipline]]></category>
		<category><![CDATA[Ethics]]></category>
		<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Metrics]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.agileadvice.com/2006/12/22/uncategorized/technical-debt/</guid>
		<description><![CDATA[Last night I was thinking more about the analogy of technical debt. In this analogy, design and quality flaws in a team&#8217;s work become a &#8220;debt&#8221; that must eventually be paid back. This analogy is fantastic because it can be taken just a little bit further to understand just how bad defects are&#8230; Debt is [...]]]></description>
			<content:encoded><![CDATA[<div style="float: right; width: 42px; padding-right: 10px; margin: 0 0 0 10px;">
		<script type="text/javascript">
		<!--
		digg_url = "http://www.agileadvice.com/2006/12/22/agileengineering/technical-debt/";
		digg_bgcolor = "";
		digg_skin = "";
		digg_window = "";
		digg_title = "Technical+Debt";
		digg_media = "";
		digg_topic = "";
		digg_bodytext = "";
		//-->
		</script>
		<script src="http://digg.com/tools/diggthis.js" type="text/javascript"></script></div><p>Last night I was thinking more about the analogy of technical debt.  In this analogy, design and quality flaws in a team&#8217;s work become a &#8220;debt&#8221; that must eventually be paid back.  This analogy is fantastic because it can be taken just a little bit further to understand just how bad defects are&#8230;</p>
<p><span id="more-363"></span><br />
Debt is sometimes useful.  Financial debt can be used for risk reduction, investment, and emergencies.  But it can also cause problems.  Too much debt becomes hard to manage.  If debt maintenance costs more than revenue (minus other expenses), then <em>you&#8217;re going down!</em></p>
<p>Technical debt is a little different than financial debt.</p>
<p>Suppose I went into a boardroom full of high-power executives for some large company.  (Never mind how I got there.)  And I pitched this fabulous idea: I&#8217;ll give them a bunch of money for them to use for operations, expansion, whatever.  All they have to agree to is that I choose the interest rate when I ask for repayment&#8230; trust me!</p>
<p>I would be thrown out of that room so fast!</p>
<p><strong>That</strong> is what we do when we encourage teams to take on technical debt.</p>
<p>There is no way to know the interest rate on a defect.  Part of the cost of a defect is obvious: how much time and materials will it take to repair the immediate problem.  (Although even that is often hard to measure.)  But there are also lots of non-obvious and probably non-measurable costs.  How much effort will it take to get to the root cause of the defect so that it doesn&#8217;t occur a second time?  How much will it affect our &#8220;goodwill&#8221; and thus reduce further and repeat sales?  How much will the existence of one defect hide the existence of other defects (with their own costs)?  How much will the defect demoralize the team and increase staff turnover or reduce productivity?  How much of an opportunity will the defect create for competitors?  How much will the defect increase maintenance and support costs?</p>
<p>In other words, every time someone asks a team to let quality slide, they are asking the team (and the organization) to take on debt with an unknown interest rate.  Which is lunacy.</p>
<p>Read more about this:</p>
<p><a href="http://www.agileadvice.com/archives/2006/08/quality_is_not.html">Quality is Not Negotiable</a></p>
<p><a href="http://www.jamesshore.com/Blog/CardMeeting/Voluntary-Technical-Debt.html">Voluntary Technical Debt</a> &#8211; James Shore talks about a situation where a conscious decision to take on technical debt led to positive results.</p>
<p><a href="http://blog.technoetic.com/2006/09/19/threshold-of-pain/">Technical Debt: The Threshold of Acceptable Pain</a> &#8211; Steve Bate talks about skill and sensitivity to technical debt.  Here&#8217;s a great quote from this article:</p>
<blockquote><p><em>What if someone has a very high threshold of pain? Iâ€™d expect to see lots of crud (technical debt) in their code&#8230;. The high threshold developer doesnâ€™t mind spending weeks on new features that would otherwise require days or hours with clean code. And they donâ€™t mind staying at work all night fixing bugs before a major release or spending countless hours babysitting the production system after itâ€™s been released. It doesnâ€™t seem to bother them to spend significant time away from family and friends or to have limited time or other interests and hobbies. &#8230;they sometimes experience pleasure at being the â€œheroâ€ who saved the company from the bugs they created.</em></p></blockquote>
<p><a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;ObjectType=COL&amp;ObjectId=11011&amp;tth=DYN&amp;tt=siteemail&amp;iDyn=2">An Incremental Technique to Pay Off Testing Technical Debt</a> &#8211; Johanna Rothman talks about technical debt and describes a simple risk-oriented approach to reducing it.</p>


<!-- Begin TwitThis script (http://twitthis.com/) -->
<div style="text-align:right;">
<script type="text/javascript" src="http://s3.chuug.com/chuug.twitthis.scripts/twitthis.js"></script>
<script type="text/javascript">
<!--
document.write('<a href="javascript:;" onclick="TwitThis.pop();"><img src="http://s3.chuug.com/chuug.twitthis.resources/twitthis_grey_72x22.gif" alt="TwitThis" style="border:none;" /></a>');
//-->
</script>
</div>
<!-- /End -->


<div class="sociable">
<div class="sociable_tagline">
<strong>Share and Enjoy:</strong>
</div>
<ul>
	<li class="sociablefirst"><a rel="nofollow"  href="" title="TwitThis"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt&amp;source=Agile+Advice+-+Working+With+Agile+Methods+%28Scrum%2C+OpenAgile%2C+Lean%29+&amp;summary=Last%20night%20I%20was%20thinking%20more%20about%20the%20analogy%20of%20technical%20debt.%20%20In%20this%20analogy%2C%20design%20and%20quality%20flaws%20in%20a%20team%27s%20work%20become%20a%20%22debt%22%20that%20must%20eventually%20be%20paid%20back.%20%20This%20analogy%20is%20fantastic%20because%20it%20can%20be%20taken%20just%20a%20little%20bit%20fu" title="LinkedIn"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt&amp;bodytext=Last%20night%20I%20was%20thinking%20more%20about%20the%20analogy%20of%20technical%20debt.%20%20In%20this%20analogy%2C%20design%20and%20quality%20flaws%20in%20a%20team%27s%20work%20become%20a%20%22debt%22%20that%20must%20eventually%20be%20paid%20back.%20%20This%20analogy%20is%20fantastic%20because%20it%20can%20be%20taken%20just%20a%20little%20bit%20fu" title="Digg"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F" title="Technorati"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt&amp;notes=Last%20night%20I%20was%20thinking%20more%20about%20the%20analogy%20of%20technical%20debt.%20%20In%20this%20analogy%2C%20design%20and%20quality%20flaws%20in%20a%20team%27s%20work%20become%20a%20%22debt%22%20that%20must%20eventually%20be%20paid%20back.%20%20This%20analogy%20is%20fantastic%20because%20it%20can%20be%20taken%20just%20a%20little%20bit%20fu" title="del.icio.us"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.propeller.com/submit/?url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F" title="Propeller"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/propeller.png" title="Propeller" alt="Propeller" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt" title="StumbleUpon"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt" title="Reddit"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://cgi.fark.com/cgi/fark/farkit.pl?h=Technical%20Debt&amp;u=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F" title="Fark"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/fark.png" title="Fark" alt="Fark" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://slashdot.org/bookmark.pl?title=Technical%20Debt&amp;url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F" title="Slashdot"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Blogsvine"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Blogsvine" alt="Blogsvine" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;title=Technical%20Debt&amp;annotation=Last%20night%20I%20was%20thinking%20more%20about%20the%20analogy%20of%20technical%20debt.%20%20In%20this%20analogy%2C%20design%20and%20quality%20flaws%20in%20a%20team%27s%20work%20become%20a%20%22debt%22%20that%20must%20eventually%20be%20paid%20back.%20%20This%20analogy%20is%20fantastic%20because%20it%20can%20be%20taken%20just%20a%20little%20bit%20fu" title="Google Bookmarks"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="" title="Furl"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="Furl" alt="Furl" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;t=Technical%20Debt" title="Facebook"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a></li>
	<li><a rel="nofollow"  href="http://www.blinklist.com/index.php?Action=Blink/addblink.php&amp;Url=http%3A%2F%2Fwww.agileadvice.com%2F2006%2F12%2F22%2Fagileengineering%2Ftechnical-debt%2F&amp;Title=Technical%20Debt" title="BlinkList"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/blinklist.png" title="BlinkList" alt="BlinkList" class="sociable-hovers" /></a></li>
	<li class="sociablelast"><a rel="nofollow"  href="" title="YahooMyWeb"><img src="http://www.agileadvice.com/wp-content/plugins/sociable/images/" title="YahooMyWeb" alt="YahooMyWeb" class="sociable-hovers" /></a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.agileadvice.com/2006/12/22/agileengineering/technical-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
