<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Robert Reppel&#039;s Blog</title>
	<atom:link href="http://robertblogs.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://robertblogs.wordpress.com</link>
	<description>Software development and the human, conditional.</description>
	<lastBuildDate>Fri, 11 Nov 2011 22:01:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='robertblogs.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Robert Reppel&#039;s Blog</title>
		<link>http://robertblogs.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://robertblogs.wordpress.com/osd.xml" title="Robert Reppel&#039;s Blog" />
	<atom:link rel='hub' href='http://robertblogs.wordpress.com/?pushpress=hub'/>
		<item>
		<title>If Cars Were Software</title>
		<link>http://robertblogs.wordpress.com/2011/11/09/if-cars-were-software/</link>
		<comments>http://robertblogs.wordpress.com/2011/11/09/if-cars-were-software/#comments</comments>
		<pubDate>Wed, 09 Nov 2011 14:44:10 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Architecture & Design]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[SOLID]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=337</guid>
		<description><![CDATA[Coupling &#38; Cohesion: &#8220;We installed your new radio. The tuner is in the trunk, we put the amplifier in the glove compartment and integrated the CD player with the carburetor.&#8221; Single Responsibility: &#8220;Yes, that&#8217;s by design. The power windows go up and down as you press the accelerator.&#8221; Open-Closed Principle: &#8220;To install your ski rack, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=337&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong><a href="http://robertblogs.files.wordpress.com/2011/11/engine.jpg"><img class="size-medium wp-image-348 alignright" style="margin:20px;" title="engine" src="http://robertblogs.files.wordpress.com/2011/11/engine.jpg?w=188&#038;h=240" alt="" width="188" height="240" /></a>Coupling &amp; Cohesion:</strong> &#8220;We installed your new radio. The tuner is in the trunk, we put the amplifier in the glove compartment and integrated the CD player with the carburetor.&#8221;</p>
<p><strong>Single Responsibility:</strong> &#8220;Yes, that&#8217;s by design. The power windows go up and down as you press the accelerator.&#8221;</p>
<p><strong>Open-Closed Principle:</strong> &#8220;To install your ski rack, let us begin by rebuilding the roof.&#8221;</p>
<p><strong>Liskov Substitution:</strong> &#8220;It looks like a timing belt but behaves like a seat belt.&#8221;</p>
<p><strong>Interface Segregation:</strong> &#8220;The lever to the right of the wheel indicates, switches wipers on or off, opens the trunk, controls A/C temperature and now let me show you  how you use it to input destination addresses for the GPS &#8230;&#8221;</p>
<p><strong>Dependency Inversion:</strong> &#8220;I&#8217;m sorry &#8211; we can&#8217;t replace the battery. The headlights will only work with this particular brand.&#8221;</p>
<p><strong>Consistent levels of abstraction:</strong> &#8220;By rotating, the pinion engages the teeth on the rack, thus translating rotational motion into linear motion which results in changing the angle of the front wheels relative to the back wheels. This is how you go left or right by turning the steering wheel.&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/337/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/337/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/337/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=337&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2011/11/09/if-cars-were-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>

		<media:content url="http://robertblogs.files.wordpress.com/2011/11/engine.jpg?w=235" medium="image">
			<media:title type="html">engine</media:title>
		</media:content>
	</item>
		<item>
		<title>The Geek Factor: Why They Aren’t Buying Your Agile And How To Make Them Love It</title>
		<link>http://robertblogs.wordpress.com/2011/11/07/agile-vancouver-presentation-why-they-aren%e2%80%99t-buying-your-agile-and-how-to-make-them-love-it/</link>
		<comments>http://robertblogs.wordpress.com/2011/11/07/agile-vancouver-presentation-why-they-aren%e2%80%99t-buying-your-agile-and-how-to-make-them-love-it/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 14:24:58 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Architecture & Design]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=323</guid>
		<description><![CDATA[Gave this presentation at this year&#8217;s Agile Vancouver conference.   Thank you everybody who attended &#8211; much food for thought and ideas in the discussions afterwards. The slides can be found at http://www.slideshare.net/rreppel/why-theyarentbuyingyouragileandhowtomakethemloveit . If Agile works, why isn’t everyone doing it? Or, as Agile has become fashionable of late, why all the lip service without [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=323&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Gave this presentation at this year&#8217;s <a href="http://www.agilevancouver.ca/conferences/much-ado-about-agile-2011/" target="_blank">Agile Vancouver conference</a>.   Thank you everybody who attended &#8211; much food for thought and ideas in the discussions afterwards. The slides can be found at <a href="http://www.slideshare.net/rreppel/why-theyarentbuyingyouragileandhowtomakethemloveit">http://www.slideshare.net/rreppel/why-theyarentbuyingyouragileandhowtomakethemloveit</a> .</p>
<blockquote><p>If Agile works, why isn’t everyone doing it? Or, as Agile has become fashionable of late, why all the lip service without the expected amount of real change? This talk makes the argument that it comes down to trust and presents tools and examples for building and keeping trust. The focus is on how to project plan and design applications in a way which, wherever possible, avoids putting stakeholders into situations which require trust in the first place.</p></blockquote>
<p><strong>In a nutshell:</strong></p>
<ul>
<li>Own your stack. If possible, use one co-located team per bounded context and architect systems in a way which allows developers to easily write end-to-end tests and do releases.</li>
<li>Make sure you and your stakeholders have a shared definition of what success looks like. Are you measuring the same things?  For example:  &#8220;Diligence in planning&#8221; vs. &#8220;Adaptability when responding to new knowledge&#8221;:  In light of the former, finding something unplanned-for is failure. For the latter, it&#8217;s learning and success is measured by how well the new knowledge is assimilated.</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/323/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/323/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/323/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=323&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2011/11/07/agile-vancouver-presentation-why-they-aren%e2%80%99t-buying-your-agile-and-how-to-make-them-love-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>Making commitments: Meeting deadlines vs. maximizing throughput</title>
		<link>http://robertblogs.wordpress.com/2011/08/21/making-commitments-meeting-deadlines-vs-maximizing-throughput/</link>
		<comments>http://robertblogs.wordpress.com/2011/08/21/making-commitments-meeting-deadlines-vs-maximizing-throughput/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 14:12:23 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=312</guid>
		<description><![CDATA[For those of us who build software, being able to make commitments to business stakeholders is hinging on our ability to deliver features fast enough to enable the business to react quickly to new opportunities and changed market conditions. And yet &#8211; in more than two decades in the industry practically every single project I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=312&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For those of us who build software, being able to make commitments to business stakeholders is hinging on our ability to deliver features fast enough to enable the business to react quickly to new opportunities and changed market conditions.</p>
<p>And yet &#8211; in more than two decades in the industry practically every single project I have ever been involved in was optimizing for adherence to schedule (using waterfall, scrum, &#8220;Agile&#8221;, whatever, it doesn&#8217;t matter) instead of optimizing to maximize throughput.</p>
<p>Where is the disconnect? What am I smoking?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/312/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/312/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/312/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=312&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2011/08/21/making-commitments-meeting-deadlines-vs-maximizing-throughput/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>LiskovCheck: Semi-Automatic Liskov Substitution Principle Adherence Check</title>
		<link>http://robertblogs.wordpress.com/2011/02/13/liskovcheck-semi-automatic-liskov-substitution-principle-adherence-check/</link>
		<comments>http://robertblogs.wordpress.com/2011/02/13/liskovcheck-semi-automatic-liskov-substitution-principle-adherence-check/#comments</comments>
		<pubDate>Mon, 14 Feb 2011 04:50:22 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Architecture & Design]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=292</guid>
		<description><![CDATA[LiskovCheck.exe is a command line utility which scans .NET assemblies for inheritance relationships and lists them in English sentences such as (from nunit.framework.dll): &#8220;It looks like a LessThanConstraint and behaves like a ComparisonConstraint.&#8221; &#8220;It looks like an AssertionHelper and behaves like a ConstraintFactory&#8221;. The first sentence sounds about right, but the second one raises eyebrows: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=292&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>LiskovCheck.exe is a<a href="https://github.com/robertreppel/LiskovCheck" target="_blank"> command line utility</a> which scans .NET assemblies for inheritance relationships and lists them in English sentences such as (from nunit.framework.dll):</p>
<ul>
<li>&#8220;It looks like a LessThanConstraint and behaves like a ComparisonConstraint.&#8221;</li>
<li>&#8220;It looks like an AssertionHelper and behaves like a ConstraintFactory&#8221;.</li>
</ul>
<p>The first sentence sounds about right, but the second one raises eyebrows: One could swap things and say &#8220;It looks like a ComparisonConstraint and behaves like a LessThanConstraint.&#8221;  However, &#8220;It looks like a ConstraintFactory and behaves like an AssertionHelper&#8221; makes less sense. (Disclaimer: I haven&#8217;t looked at the nunit source &#8211; no idea what this is.)</p>
<p>From LiskovCheck&#8217;s <a href="http://www.specflow.org/" target="_blank">SpecFlow</a> acceptance tests:</p>
<p><strong>Feature:</strong> Semi-automatic check for adherence to the Liskov Substitution Principle.</p>
<p>Definition of the Liskov Substitution Principle:</p>
<blockquote>
<p style="padding-left:30px;"><strong>&#8220;Liskov substitution principle (LSP) is a particular definition of a</strong><br />
<strong> subtyping relation, called (strong) behavioral subtyping.&#8221;</strong><br />
(from <a title="http://en.wikipedia.org/wiki/Liskov_substitution_principle" href="http://en.wikipedia.org/wiki/Liskov_substitution_principle" target="_blank">http://en.wikipedia.org/wiki/Liskov_substitution_principle</a>)</p>
</blockquote>
<p>&#8230;also known as:</p>
<blockquote>
<p style="padding-left:30px;"><strong>&#8220;If it looks like a duck, quacks like a duck, but needs batteries – you probably have the wrong abstraction.&#8221;</strong><br />
(from <a title="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx" href="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx" target="_blank">http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx</a> )</p>
</blockquote>
<p><strong>Scenario: </strong>A subtype is more likely to adhere to the Liskov Substitution Principle.</p>
<p style="padding-left:30px;"><strong>Given</strong> a DLL named Zoo.dll with a &#8220;Duck&#8221; class which inherits from &#8220;Animal&#8221;<br />
<strong>When</strong> I run &#8220;liskovcheck Zoo.dll&#8221;<br />
<strong>Then</strong> the words &#8220;It looks like a Duck and behaves like an Animal&#8221; should be on the screen.</p>
<p><strong>Scenario:</strong> A subtype is less likely to adhere to the Liskov Substitution Principle</p>
<p style="padding-left:30px;"><strong>Given</strong> a DLL named Zoo.dll with a &#8220;MerganserDuck&#8221; class which inherits from &#8220;TransistorRadio&#8221;<br />
<strong>When</strong> I run liskovcheck.exe with the argument &#8216;Zoo.dll&#8217;&#8221;<br />
<strong>Then</strong> the words &#8220;It looks like a MerganserDuck and behaves like a TransistorRadio&#8221; should be on the screen.</p>
<p>The project is on GitHub at <a title="https://github.com/robertreppel/LiskovCheck" href="https://github.com/robertreppel/LiskovCheck">https://github.com/robertreppel/LiskovCheck</a>.</p>
<p>To try it out:</p>
<ul>
<li>On <a title="https://github.com/robertreppel/LiskovCheck" href="https://github.com/robertreppel/LiskovCheck">https://github.com/robertreppel/LiskovCheck</a> click &#8220;Downloads&#8221; and download LiskovCheck-0.0.1.zip.</li>
<li>Unzip the file.</li>
<li>Open a command window in the LiskovCheck-0.0.1 folder and run (e.g.) &#8216;liskovcheck Ninject.dll&#8217;.</li>
<li>You may need to &#8220;Unblock&#8221; a downloaded .dll file  first, by right clicking it, going to &#8220;Properties&#8221; and selecting &#8220;Unblock&#8221;.</li>
</ul>
<p>I wrote LiskovCheck as an excuse to play around with <a title="Ninject" href="http://ninject.org/" target="_blank">Ninject</a>, <a title="SpecFLow" href="http://www.specflow.org/" target="_blank">SpecFlow</a> and <a title="OpenWrap" href="http://www.openwrap.org/" target="_blank">OpenWrap</a>.</p>
<p>For more information, see <a title="http://birding.about.com/od/birdprofiles/tp/typesofducks.htm" href="http://birding.about.com/od/birdprofiles/tp/typesofducks.htm" target="_blank">http://birding.about.com/od/birdprofiles/tp/typesofducks.htm</a>.</p>
<p style="padding-left:30px;">&nbsp;</p>
<p style="padding-left:30px;">&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/292/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/292/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/292/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=292&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2011/02/13/liskovcheck-semi-automatic-liskov-substitution-principle-adherence-check/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>Zombie Agile: Bad Things Done Right</title>
		<link>http://robertblogs.wordpress.com/2010/06/19/zombie-agile-bad-things-done-right/</link>
		<comments>http://robertblogs.wordpress.com/2010/06/19/zombie-agile-bad-things-done-right/#comments</comments>
		<pubDate>Sat, 19 Jun 2010 17:51:42 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>

		<guid isPermaLink="false">https://robertblogs.wordpress.com/?p=283</guid>
		<description><![CDATA[I currently have the pleasure of working in one of those “waterfall-ish” shops where things actually work: Profitable projects get delivered in fairly predictable timeframes by sane people. They have a fairly “traditional” setup with business analysis folks who write old-style requirements documents (… few if any new-fangled “user stories”…).&#160; These are given to development [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=283&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I currently have the pleasure of working in one of those “waterfall-ish” shops where things actually work: Profitable projects get delivered in fairly predictable timeframes by sane people. They have a fairly “traditional” setup with business analysis folks who write old-style requirements documents (… few if any new-fangled “user stories”…).&#160; These are given to development for implementation, to be manually QA’d by the QA team.&#160; A few lone rangers not withstanding, practically nobody seems to write any tests.</p>
<p>How can this be … ? Aren’t we supposed to TDD/BDD/scrummerize everything, practicing kanbanilism for good measure? Blasphemous whispers in the Church Of Agile; Petty doubts: Have I joined a fringe cult …. ?</p>
<p>So what’s the difference? How do they get away with it?&#160; Situations where I’ve encountered “traditional” software development life cycles that actually worked all had the same combination of traits in common:</p>
<p><strong>A healthy “that was then, this is now” attitude to requirements.</strong>&#160; A recent project is a good example: The “traditional” business analyst–produced requirements remained a living document which was updated throughout the delivery of the project. It could thus be relied upon to closely match what was implemented in the code. As much as anything, the habit of keeping it up to date led to many more conversations between BAs and developers than would otherwise have taken place, greatly helping everybody to understand the problem domain.&#160; Very importantly, the document also served as vital input for doing the second part of the trick:</p>
<p><strong>Relentless QA.</strong> Unsurprisingly in the absence of automated test coverage, there were many bugs. QA used the “living” requirements document as their guide to making manual test plans. They were very well-organized in executing them and very proactive in sharing the results with the developers. The resulting back-and-forth further helped to grow a shared understanding of the system and it’s requirements.</p>
<p><strong>Smooth Deployments. </strong>Calling it “continuous integration” would be a stretch, but they had their builds and deployments organized in a way which allowed for one or two QA releases per week.</p>
<p><strong>Awareness.</strong> They were aware of test driven development, the potential advantages of Agile and many of the techniques. However, they had a large legacy code base and many organizational structures and developer habits which did not lend themselves to “Agile” without major changes and a lot of experimentation.&#160; It was a matter of “Koennen vor Lachen” (… German for “Easier said than done”.&#160; It doesn’t translate well.).&#160; Yes, sounds great, but how do we start … ? </p>
<p>Hard to say. Trying to do “Agile” without test-driven development is an extremely hazardous idea.&#160; At the same time doing TDD in legacy situations is a tall order. For a team of developers to start consistently writing tests in brownfield projects takes a lot of new ways of thinking and technical savvy which I feel absolutely has to go hand in hand with appropriate ways of managing the process: Without knowledgeable support and commitment by non-technical stakeholders the effort will die. (Very common scenario/attitude: “We don’t have time to write tests.”) </p>
<p>The practices of “waterfall done right” could serve as initial steps when iterating towards “real agile”. Compared to a seasoned SCRUM / Lean team at their best,&#160; “Zombie Agile” with living requirements, relentless QA and smoothed-out deployments is expensive, inefficient and somewhat dead. Nonetheless, it seems to be delivering a surprising number of good results.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/283/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/283/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/283/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=283&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/06/19/zombie-agile-bad-things-done-right/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>Slides from &#8220;Refactoring Towards Sanity&#8221;</title>
		<link>http://robertblogs.wordpress.com/2010/06/02/slides-from-refactoring-towards-sanity/</link>
		<comments>http://robertblogs.wordpress.com/2010/06/02/slides-from-refactoring-towards-sanity/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 20:59:29 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=280</guid>
		<description><![CDATA[See below: PrairieDevCon 2010 &#8211; Refactoring Towards Sanity The free CodeRush VS add-in which seems to do some of what can be found  in Resharper is at: http://msdn.microsoft.com/en-us/vbasic/ee663901.aspx I haven&#8217;t tried it yet, but look forward to give it a whirl. Thanks everybody.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=280&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>See below:</p>
<p><a href="http://robertblogs.files.wordpress.com/2010/06/prairiedevcon-2010-refactoring-towards-sanity.pptx">PrairieDevCon 2010 &#8211; Refactoring Towards Sanity</a></p>
<p>The free CodeRush VS add-in which seems to do some of what can be found  in Resharper is at:</p>
<p><a href="http://msdn.microsoft.com/en-us/vbasic/ee663901.aspx">http://msdn.microsoft.com/en-us/vbasic/ee663901.aspx</a></p>
<p>I haven&#8217;t tried it yet, but look forward to give it a whirl.</p>
<p>Thanks everybody.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/280/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/280/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=280&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/06/02/slides-from-refactoring-towards-sanity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>PrairieDevCon: Sample code for &#8220;Refactoring Towards Sanity&#8221;</title>
		<link>http://robertblogs.wordpress.com/2010/06/02/prairiedevcon-sample-code-for-refactoring-towards-sanity/</link>
		<comments>http://robertblogs.wordpress.com/2010/06/02/prairiedevcon-sample-code-for-refactoring-towards-sanity/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 12:33:31 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=273</guid>
		<description><![CDATA[The sample code for the &#8220;Refactoring Towards Sanity&#8221; can be found here: http://robertblogs.files.wordpress.com/2010/06/raceresultdemobeforerefactoring-zip.gif IMPORTANT (and awkward): It turns out that WordPress doesn&#8217;t allow uploading .zip attachments, meaning that you&#8217;ll have to jump through the extra hoop of right-clicking the link, selecting &#8220;Save Link As&#8230;&#8221;, and renaming the file to RaceResultDemoBeforeRefactoring.zip. See you at the session.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=273&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The sample code for the &#8220;Refactoring Towards Sanity&#8221; can be found here:</p>
<p><a href="http://robertblogs.files.wordpress.com/2010/06/raceresultdemobeforerefactoring-zip.gif">http://robertblogs.files.wordpress.com/2010/06/raceresultdemobeforerefactoring-zip.gif</a></p>
<p><strong>IMPORTANT (and awkward): </strong> It turns out that WordPress doesn&#8217;t allow uploading .zip attachments, meaning that you&#8217;ll have to jump through the extra hoop of right-clicking the link, selecting &#8220;Save Link As&#8230;&#8221;, and renaming the file to RaceResultDemoBeforeRefactoring.zip.</p>
<p>See you at the session.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/273/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/273/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/273/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=273&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/06/02/prairiedevcon-sample-code-for-refactoring-towards-sanity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
		<item>
		<title>PrairieDevCon 2010 Presentations</title>
		<link>http://robertblogs.wordpress.com/2010/04/13/prairiedevcon-2010-presentations/</link>
		<comments>http://robertblogs.wordpress.com/2010/04/13/prairiedevcon-2010-presentations/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 01:15:09 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/2010/04/13/prairiedevcon-2010-presentations/</guid>
		<description><![CDATA[I’ll be in Regina for PrairieDevCon in June. It sounds like a lot of fun. Started preparing for my “chalk talk” on refactoring project management and for the “dojo” on refactoring (… arguably easier to handle …) actual code. I’m looking forward to these sessions; Both have great potential for lively exchanges of in-the-trenches experiences. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=265&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>I’ll be in Regina for <a href="http://www.prairiedevcon.com/" target="_blank">PrairieDevCon</a> in June. It sounds like a lot of fun.</h3>
<p><a href="http://robertblogs.files.wordpress.com/2010/04/prairie_dev_con_presenter.gif"><img style="display:inline;border:0;margin:20px 20px 20px 0;" title="Prairie_Dev_Con_Presenter" src="http://robertblogs.files.wordpress.com/2010/04/prairie_dev_con_presenter_thumb.gif?w=221&#038;h=119" border="0" alt="Prairie_Dev_Con_Presenter" width="221" height="119" align="left" /></a> Started preparing for my “chalk talk” on refactoring project management and for the “dojo” on refactoring (… arguably easier to handle …) actual code. I’m looking forward to these sessions; Both have great potential for lively exchanges of in-the-trenches experiences. I have much to learn.</p>
<p>See below for the abstracts:</p>
<h2>Moving Towards Lean In A Waterfall World</h2>
<p>Moving from traditional waterfall-centric push project management to lean pull-based approaches takes more than putting a kanban board on a wall. Using a “real world” example, the audience is invited to help with identifying waste, maximizing flow and (perhaps most importantly at all) explore ways of getting buy-in from management and other stakeholders to whom this way of doing things is completely alien. Just for fun, we’ll try to use nice, easy to understand techie concepts and apply them to running projects: Refactoring (&#8230;. gradually change old ways of doing things, in small easy to digest steps), anti-corruption layers (&#8230; how to work with other parts of the organization who are in no position to try all this new-fangled stuff), etc.</p>
<h2>Refactoring Towards Sanity</h2>
<p>Working with legacy code is a fact of life. Re-engineering it all is costly and frequently impractical. This session takes participants through a minimalist example of how to carve “areas of sanity” from tightly coupled Big Balls Of Mud: Instead of re-writing the complete application, focus on the core domain. Gradually isolate key functionality from dependencies and side effects which affect the rest of the system, thus creating “safe” areas where code is under test, SOLID, etc.</p>
<p>(Tools: Visual Studio &amp; Resharper)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/265/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/265/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/265/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=265&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/04/13/prairiedevcon-2010-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>

		<media:content url="http://robertblogs.files.wordpress.com/2010/04/prairie_dev_con_presenter_thumb.gif" medium="image">
			<media:title type="html">Prairie_Dev_Con_Presenter</media:title>
		</media:content>
	</item>
		<item>
		<title>Mindmap: How Deadlines Influence Technical Debt</title>
		<link>http://robertblogs.wordpress.com/2010/02/28/mindmap-how-deadlines-influence-technical-debt/</link>
		<comments>http://robertblogs.wordpress.com/2010/02/28/mindmap-how-deadlines-influence-technical-debt/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 17:52:25 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/?p=243</guid>
		<description><![CDATA[Click to enlarge. Also available as PDF.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=243&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertblogs.files.wordpress.com/2010/02/deadlinesandtechnicaldebt.png"><img class="aligncenter size-full wp-image-244" title="DeadlinesAndTechnicalDebt" src="http://robertblogs.files.wordpress.com/2010/02/deadlinesandtechnicaldebt.png?w=455&#038;h=370" alt="" width="455" height="370" /></a></p>
<p style="text-align:center;">Click to enlarge. <a href="http://robertblogs.files.wordpress.com/2010/02/deadlinesandtechnicaldebt-robertblogs-wordpress-com2.pdf">Also available as PDF.</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/243/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/243/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/243/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=243&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/02/28/mindmap-how-deadlines-influence-technical-debt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>

		<media:content url="http://robertblogs.files.wordpress.com/2010/02/deadlinesandtechnicaldebt.png" medium="image">
			<media:title type="html">DeadlinesAndTechnicalDebt</media:title>
		</media:content>
	</item>
		<item>
		<title>Entrepreneurs: Saving The Odd Million</title>
		<link>http://robertblogs.wordpress.com/2010/02/27/entrepreneurs-saving-the-odd-million/</link>
		<comments>http://robertblogs.wordpress.com/2010/02/27/entrepreneurs-saving-the-odd-million/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 22:22:15 +0000</pubDate>
		<dc:creator>reppel</dc:creator>
				<category><![CDATA[Agile Project Management]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://robertblogs.wordpress.com/2010/02/27/entrepreneurs-saving-the-odd-million/</guid>
		<description><![CDATA[OK, a disclaimer: I’m a geek. I have learned to do some business-speak and googled the odd idea about how it’s done, but my instincts are questionable: I haven’t made my first million and therefore I’m not really qualified to give advice to those who have. My specialty is to deliver software applications. Very often, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=234&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OK, a disclaimer: <strong>I’m a geek.</strong> I have learned to do some business-speak and googled the odd idea about how it’s done, but my instincts are questionable: I haven’t made my first million and therefore I’m not really qualified to give advice to those who have.</p>
<p>My specialty is to deliver software applications. Very often, situations present themselves like this:</p>
<ul>
<li>We are a team of developers. We have finite capacity and <a href="http://en.wikipedia.org/wiki/Conway%27s_Law">Conway’s Law</a> rules us with an iron fist. <strong>By  </strong><a href="http://sethgodin.typepad.com/seths_blog/2010/02/hunters-and-farmers.html"><strong>Seth Godin’s   &#8220;hunters and farmers&#8221; analogy</strong></a><strong>, we are farmers:</strong> We try to leave no stone unturned to make sure we build the right thing at the right time. In the face of (inevitably) changing requirements and (inevitable) learning-as-you-go about how the system should be implemented, we do our best to manage <a href="http://www.martinfowler.com/bliki/TechnicalDebt.html">technical debt</a>. It’s in our nature to strive for certainty, but we have a hard time getting it.</li>
<li><strong>We build applications for hunters:</strong> What we produce is a means to an end, to exploit a market opportunity, satisfy demand, help run the business (… a hunting tool of the trade …) more effectively.  The hunter needs commitment: When is it going to be done? How much will it cost?</li>
</ul>
<p><strong>The hunter’s need for commitment and the farmer’s difficulty to give it in the face of (inevitable) change are a culture clash which dominates our industry.</strong> Untold millions are spent every day on experiments which prove over and over again that preventing (inevitable) change through waterfall project management and avoiding (inevitable) learning-as-you-go during project development is not the answer: It has a tendency to result in inflexible, expensive to build and dull end products. You can fairly hear the hunter’s howl of frustration:</p>
<blockquote><p>“It’s a thinking machine, people! It’s the marvel of the age, one of the cleverest things ever! Why is it so <a href="mailto:#!!@$">#!!@$</a>!! hard to make it do something smart……!”</p></blockquote>
<p>The answer to this is a farmer’s answer which makes him howl louder still:</p>
<blockquote><p>Building non-trivial software requires an incompletely understood balancing act between a complex set of trade-offs involving social interactions, technological factors and resource constraints. Working smarter beats working harder every time. Debate over what is meant by “smarter” is ongoing.</p></blockquote>
<p>The current fashion for Agile and Lean delivery approaches looks promising and I remain cautiously optimistic that we’ll figure it out in the next 50 to 100 years.</p>
<p>In the meantime, in an extreme case of <a href="http://martinfowler.com/bliki/SemanticDiffusion.html" target="_blank">semantic diffusion</a>, let’s see if we can hijack the concept of a balance sheet to identify a set of mutual commitments between entrepreneur-hunters and farmer-developers which, when in balance and taken with a grain of salt, might help to increase the chances of success:</p>
<table width="394" border="1" cellspacing="0" cellpadding="10">
<tbody>
<tr>
<td valign="top" width="199"><strong>Hunter-Entrepreneur</strong></td>
<td valign="top" width="193"><strong>Farmer-Developers</strong></td>
</tr>
<tr>
<td valign="top" width="201">The team will not miss deadlines, but scope of what is delivered for the deadline is up to the development team.</td>
<td valign="top" width="196">We will not miss deadlines. we will do frequent releases.</td>
</tr>
<tr>
<td valign="top" width="201">I will ensure that features are clearly prioritized.</td>
<td valign="top" width="197">We will deliver the highest priority features first.</td>
</tr>
<tr>
<td valign="top" width="200">I will do my utmost to ensure that requirements are as clear and simple as possible. I will assist the team by minimizing scope.</td>
<td valign="top" width="198">We will minimize cost/effort by adhering to the <a href="http://en.wikipedia.org/wiki/You_ain%27t_gonna_need_it" target="_blank">YAGNI</a> principle as much as possible.</td>
</tr>
<tr>
<td valign="top" width="200">I will ensure that the team has direct contact with end users to the greatest extent possible.</td>
<td valign="top" width="198">We will communicate clearly and skillfully, assisting management in reconciling conflicting user opinions, priorities and requirements and limiting scope.</td>
</tr>
<tr>
<td valign="top" width="200">I will not override technical decisions without clearly understanding the consequences in terms of <a href="http://www.martinfowler.com/bliki/TechnicalDebt.html" target="_blank">technical debt</a>.</td>
<td valign="top" width="198">We make all technical decisions with business priorities and the quality of the end user experience as the most important criteria.</td>
</tr>
<tr>
<td valign="top" width="200">I will support the development team in their efforts to adhere to the principles stated in the <a href="http://www.agilemanifesto.org/" target="_blank">Agile Manifesto</a>.</td>
<td valign="top" width="198">We will adhere to the principles stated in the <a href="http://www.agilemanifesto.org/" target="_blank">Agile Manifesto</a>.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>It’s far from ideal, but maybe it could save the odd million?  Anything which results in less chaos and more predictability would be good …   <strong>Spoken like a true farmer? </strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblogs.wordpress.com/234/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblogs.wordpress.com/234/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblogs.wordpress.com/234/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblogs.wordpress.com&amp;blog=8188320&amp;post=234&amp;subd=robertblogs&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblogs.wordpress.com/2010/02/27/entrepreneurs-saving-the-odd-million/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/770caf0b65eca005a02b601339aa4638?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">reppel</media:title>
		</media:content>
	</item>
	</channel>
</rss>
