<?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/"
	>

<channel>
	<title>George Dinwiddie's blog</title>
	<atom:link href="http://blog.gdinwiddie.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gdinwiddie.com</link>
	<description>Effective software development</description>
	<pubDate>Fri, 26 Jun 2009 14:38:26 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The role of architect</title>
		<link>http://blog.gdinwiddie.com/2009/06/26/the-role-of-architect/</link>
		<comments>http://blog.gdinwiddie.com/2009/06/26/the-role-of-architect/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 14:38:26 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=157</guid>
		<description><![CDATA[Thanks to a pointer from Kent Beck, I&#8217;ve just read Alan Keefer&#8217;s post, Taking Responsibility.  This is probably the best description I&#8217;ve ever read of the role that a software or system architect should take.
And it&#8217;s very different from the role I&#8217;ve normally seen them take.  Most software architects got the title because they were [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to a pointer from Kent Beck, I&#8217;ve just read Alan Keefer&#8217;s post, <a title="Taking Responsibility" href="http://guidewiredevelopment.wordpress.com/2009/06/25/taking-responsibility/" target="_blank">Taking Responsibility</a>.  This is probably the best description I&#8217;ve ever read of the role that a software or system architect should take.</p>
<p>And it&#8217;s very different from the role I&#8217;ve normally seen them take.  Most software architects got the title because they were very good software developers.  I&#8217;ve seen far to many who assume that they should now do the &#8220;highest level&#8221; of the work they&#8217;ve been doing, that of the system level design, and leave the more mundane work to those who are still software developers.  In other words, they&#8217;re considering their promotion from the point of responsibilities they&#8217;re shedding rather than those that they&#8217;re taking on.<span id="more-157"></span>Alan, instead, speaks of the enormous responsibility that he has with the role of architect.  He says, &#8220;my job is to make sure that the project doesn’t fail for technical reasons.&#8221;  There&#8217;s no refuge in saying, &#8220;I did my part right.&#8221;  It all has to work.</p>
<p>This is an important point for all of us to consider, whether architect or not.  It&#8217;s never very satisfying to hide behind the statement, &#8220;I did my work well, but those people over there screwed everything up.&#8221;  We can all do better than that.  We can all look around and see what else is going on.  We can do things to help that larger picture.  We can do things to adjust to the reality of that larger picture.</p>
<p>Of course, we can still fail.  But when we fail, it&#8217;s a pathetic refuge to blame the failure on others if we made no attempt to succeed at more than the tasks right in front of us.  And if we did try hard to help the project succeed as a whole, but it still failed, then must accept some responsibility for that failure.</p>
<p>&#8220;In spite of my best efforts, the project failed.&#8221;  There is, in that statement, both a sense of failure and a sense of pride.  &#8220;I gave my best efforts.&#8221;  Perhaps they were not enough for these circumstances.  Perhaps they were the wrong thing in these circumstances.  We do well to reflect on what we did, why things happened the way they did, what we might have done differently, and what we might do in the future.  Retrospecting as a team would be wonderful.  Retrospecting by ourselves is something we can always do.</p>
<p>This topic is a great illustration of <a title="Gerald M Weinberg" href="http://www.geraldmweinberg.com/" target="_blank">Jerry Weinberg</a>&#8217;s <a title="Jerry Weinberg on Twitter" href="http://twitter.com/JerryWeinberg" target="_blank">statement</a>, &#8220;<span class="status-body"><span class="entry-content">The ultimate limit to software is courage. Imagination is a distant second.&#8221;</span></span></p>
<p><span class="status-body"><span class="entry-content">Now, go read </span></span>Alan Keefer&#8217;s post, <a title="Taking Responsibility" href="http://guidewiredevelopment.wordpress.com/2009/06/25/taking-responsibility/" target="_blank">Taking Responsibility</a>.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+The+role+of+architect+http://h8bn3.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/06/26/the-role-of-architect/feed/</wfw:commentRss>
		</item>
		<item>
		<title>If you don&#8217;t automate acceptance tests?</title>
		<link>http://blog.gdinwiddie.com/2009/06/17/if-you-dont-automate-acceptance-tests/</link>
		<comments>http://blog.gdinwiddie.com/2009/06/17/if-you-dont-automate-acceptance-tests/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 23:02:37 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Tools and Techniques]]></category>

		<category><![CDATA[Working Software]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=148</guid>
		<description><![CDATA[Amr Elssamadisy reports on InfoQ that automated acceptance tests are &#8220;only used by a small minority of the community.&#8221;  Is this true?  If you and your team don&#8217;t use automated acceptance tests, please let me know how you handle regression tests as the application grows larger.  You can leave a comment here or, if you&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>Amr Elssamadisy <a title="Automated Acceptance Tests - Theoretical or Practical by Amr Elssamadisy" href="http://www.infoq.com/news/2009/06/automated-acceptance-tests" target="_blank">reports on InfoQ</a> that automated acceptance tests are &#8220;only used by a small minority of the community.&#8221;  Is this true?  If you and your team don&#8217;t use automated acceptance tests, please let me know how you handle regression tests as the application grows larger.  You can leave a comment here or, if you&#8217;d rather not say it in public, email me directly.<span id="more-148"></span></p>
<p>OK, I know that &#8220;acceptance tests&#8221; are somewhat a misnomer.  While they may provide a go/no go indicator for the functionality of a user story, we all know that it&#8217;s possible that the application passes the test and still isn&#8217;t what the Product Owner or Customer wants.  You still need to show it to the Product Owner/Customer to get their acceptance.  Bear with me, though, and let&#8217;s use this common term.</p>
<p>So, a Product Owner, a Developer, and a Tester <span style="text-decoration: line-through;">walk into a bar</span> sit down to talk about something that the system under development should do.  The Product Owner describes the user story.  The Developer and Tester ask questions (and make suggestions) until they think they can answer the basic question, &#8220;How will I know that this story has been accomplished?&#8221;</p>
<p>No matter how or when it&#8217;s done, these three amigos (to borrow a term from my friends at Nationwide) must agree on this basic criteria or things will go wrong.  Turning this agreement into an automated acceptance test (or three) gives it a precision that often tests the agreement and uncovers fuzziness or conflicting definitions in the words we use.  <strong>Automated acceptance tests help us express our expectations.</strong></p>
<p style="padding-left: 30px;"><em>If you don&#8217;t use automated acceptance tests, how do you clearly communicate desires (&#8221;requirements&#8221;) between the business, the developers, and the testers?</em></p>
<p>If your testing is manually executed, or is automated using record-and-playback, then you&#8217;ll have the problem where the testers have to wait until the developers think they&#8217;re done before they can start verifying the functionality.  This puts the testers behind from the very beginning.  It also delays the feedback to the developers when the functionality doesn&#8217;t behave as expected and results in bug-fix cycles on code thought to be complete.  These things combine to slow down the pace of development.</p>
<p>It&#8217;s more valuable to automate those tests while the code is still written.  As development proceeds, you can see those tests start to pass, providing a clear indication of the progress.  If a developer writes code expected to make a particular test scenario work, but the test fails, then you can delve into the issue right away.  Is there a mistake in the code, in the test, or just a lingering disagreement about what we intended to do? <strong> Automated acceptance tests express the growth of functionality in our application.</strong></p>
<p style="padding-left: 30px;"><em>If you don&#8217;t use automated acceptance tests, how do you monitor the progress of development?</em></p>
<p>Once the functionality works, we want it to continue working, unless we expressly decide it should work a different way.  If we want to know that it continues to work, we need to verify that.  That means that we need to continue to check a growing amount of functionality.  If that checking requires significant human effort, we&#8217;ll soon be overwhelmed by it and our progress will get slower and slower.</p>
<p>Computers are great for doing our repetitive grunt work.  Yes, it&#8217;s a continually increasing job for them, too, but they&#8217;re usually faster than people, they can work longer hours, and they can easily scale to handle more work by adding hardware.  If computers are checking that all of our tests are still working on a daily or more frequent basis, then we rapid notification when we&#8217;ve accidentally broken an old feature.  <strong>Automated acceptance tests express our confidence that the system continues to work.</strong></p>
<p style="padding-left: 30px;"><em>If you don&#8217;t use automated acceptance tests, how do you maintain confidence that the system still works?</em></p>
<p>If you don&#8217;t use automated acceptance test, please let me know the answers to these questions&#8211;especially the last one.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+If+you+don%27t+automate+acceptance+tests%3F+http://cfyiq.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/06/17/if-you-dont-automate-acceptance-tests/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Podcast on Retrospectives</title>
		<link>http://blog.gdinwiddie.com/2009/05/22/podcast-on-retrospectives/</link>
		<comments>http://blog.gdinwiddie.com/2009/05/22/podcast-on-retrospectives/#comments</comments>
		<pubDate>Fri, 22 May 2009 14:43:47 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=145</guid>
		<description><![CDATA[Bob Payne and I talk about retrospectives.  This is a topic dear to my heart.  Most scrum teams could do a lot better on these.
&#160; ]]></description>
			<content:encoded><![CDATA[<p>Bob Payne and I <a title="Agile Toolkit podcast" href="http://agiletoolkit.libsyn.com/index.php?post_id=482372" target="_blank">talk about retrospectives</a>.  This is a topic dear to my heart.  Most scrum teams could do a lot better on these.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Podcast+on+Retrospectives+http://zsmte.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/05/22/podcast-on-retrospectives/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Enterprise Agile</title>
		<link>http://blog.gdinwiddie.com/2009/04/23/enterprise-agile/</link>
		<comments>http://blog.gdinwiddie.com/2009/04/23/enterprise-agile/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 14:26:47 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=140</guid>
		<description><![CDATA[Smaller organizations have an easier time adopting Agile development practices than do larger ones.  Once you get beyond a handful of teams, things start to get much more complicated.  Not only that, but no &#8220;cookie-cutter&#8221; approach seems to work very well.  Context always matters, and even more so in the large.
Bob Payne and I recently [...]]]></description>
			<content:encoded><![CDATA[<p>Smaller organizations have an easier time adopting Agile development practices than do larger ones.  Once you get beyond a handful of teams, things start to get much more complicated.  Not only that, but no &#8220;cookie-cutter&#8221; approach seems to work very well.  Context always matters, and even more so in the large.</p>
<p>Bob Payne and I recently had <a title="Agile Toolkit podcast" href="http://agiletoolkit.libsyn.com/index.php?post_id=456918" target="_blank">a conversation with Sanjiv Augustine</a> about the issues, and some ways of dealing with them.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Enterprise+Agile+http://zezdf.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/04/23/enterprise-agile/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Team Rooms</title>
		<link>http://blog.gdinwiddie.com/2009/04/14/team-rooms/</link>
		<comments>http://blog.gdinwiddie.com/2009/04/14/team-rooms/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 20:35:34 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=138</guid>
		<description><![CDATA[A new installment of the Agile Tool Podcast is available, where Bob Payne and I talk about Team Rooms.  Please let us know what you think of this.
&#160; ]]></description>
			<content:encoded><![CDATA[<p>A new installment of the Agile Tool Podcast is available, where <a title="Bob Payne - Electroglide" href="http://www.electroglide.biz/" target="_blank">Bob Payne</a> and I talk about <a title="podcast on Team Rooms" href="http://agiletoolkit.libsyn.com/index.php?post_id=454226" target="_blank">Team Rooms</a>.  Please let us know what you think of this.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Team+Rooms+http://a23am.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/04/14/team-rooms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>More on Self-Organizing Teams</title>
		<link>http://blog.gdinwiddie.com/2009/04/07/more-on-self-organizing-teams/</link>
		<comments>http://blog.gdinwiddie.com/2009/04/07/more-on-self-organizing-teams/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 03:59:01 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=135</guid>
		<description><![CDATA[Bob and I received some questions and comments by email, so we returned to the topic of self-organizing teams.  Catch the new podcast on The Agile Toolkit.
&#160; ]]></description>
			<content:encoded><![CDATA[<p>Bob and I received some questions and comments by email, so we returned to the topic of <a href="http://blog.gdinwiddie.com/2009/03/21/self-organizing-teams">self-organizing teams</a>.  Catch the new podcast <a href="http://agiletoolkit.libsyn.com/index.php?post_id=451591" target="_blank">on The Agile Toolkit</a>.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+More+on+Self-Organizing+Teams+http://kgf9q.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/04/07/more-on-self-organizing-teams/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Time Boxes</title>
		<link>http://blog.gdinwiddie.com/2009/03/28/time-boxes/</link>
		<comments>http://blog.gdinwiddie.com/2009/03/28/time-boxes/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 17:35:51 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Tools and Techniques]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=133</guid>
		<description><![CDATA[Bob and I tackle the topic of time boxes on our latest Agile Toolkit Tips &#38; Advice podcast.
&#160; ]]></description>
			<content:encoded><![CDATA[<p>Bob and I tackle the topic of time boxes on our latest <a title="Time Boxes podcast at libsyn" href="http://agiletoolkit.libsyn.com/index.php?post_id=447740" target="_blank">Agile Toolkit Tips &amp; Advice</a> podcast.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Time+Boxes+http://5rywo.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/03/28/time-boxes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Self-Organizing Teams</title>
		<link>http://blog.gdinwiddie.com/2009/03/21/self-organizing-teams/</link>
		<comments>http://blog.gdinwiddie.com/2009/03/21/self-organizing-teams/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 02:30:44 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=130</guid>
		<description><![CDATA[Live and unrehearsed, Bob Payne and I talk about Self-Oranizing Teams on the Agile Toolkit podcast.  This podcast is a lot shorter than our last one.  Give it a listen and let us know what you think.
&#160; ]]></description>
			<content:encoded><![CDATA[<p>Live and unrehearsed, Bob Payne and I talk about <a href="http://agiletoolkit.libsyn.com/index.php?post_id=444904" target="_blank">Self-Oranizing Teams on the Agile Toolkit podcast</a>.  This podcast is a lot shorter than our last one.  Give it a listen and let us know what you think.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Self-Organizing+Teams+http://97qob.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/03/21/self-organizing-teams/feed/</wfw:commentRss>
		</item>
		<item>
		<title>They could not be helped.</title>
		<link>http://blog.gdinwiddie.com/2009/03/15/they-could-not-be-helped/</link>
		<comments>http://blog.gdinwiddie.com/2009/03/15/they-could-not-be-helped/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 16:20:13 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=126</guid>
		<description><![CDATA[I just got around to watching Josh Kerievsky&#8217;s talk, 10 Tips for Successful Agile Transitions.  He starts this talk with the tip, &#8220;You&#8217;ve got to do a readiness assessment,&#8221; and I think that&#8217;s incredibly good advice. He also says,
They should never, in a million years, have been doing Agile.  They were not ready for it&#8230;  [...]]]></description>
			<content:encoded><![CDATA[<p>I just got around to watching Josh Kerievsky&#8217;s talk, <a title="Video and slides on InfoQ" href="http://www.infoq.com/presentations/10-tips-for-agile-transitions" target="_blank">10 Tips for Successful Agile Transitions</a>.  He starts this talk with the tip, &#8220;You&#8217;ve got to do a readiness assessment,&#8221; and I think that&#8217;s incredibly good advice. He also says,</p>
<blockquote><p>They should never, in a million years, have been doing Agile.  They were not ready for it&#8230;  They could not be helped.</p></blockquote>
<p>Ouch!  Are there really organizations that must be written off as hopeless?<span id="more-126"></span></p>
<p>I think not.  I think a more accurate description is &#8220;<em>We</em> could not help them.&#8221;  This is not such a bad admission.  There may be many good reasons that we are not the person that can help the organization.</p>
<p>Maybe the solutions we know how to provide are not appropriate for the current state of the organization.  Josh says this organization was not ready for Agile, and I believe him.  But maybe they were ready for some improvements that would help them be ready for Agile in the future.  In other words, perhaps Agilization was appropriate for the current context, but not yet an Agile Transition.  Could we help them with that?</p>
<p>Maybe the current situation has impediments that we don&#8217;t know how to address.  Josh says that they had &#8220;a newbie executive who didn&#8217;t have any connections within the organization.&#8221;  Building those connections, and getting support and collaboration from the larger organization around the one you&#8217;re helping, is beyond the scope of an Agile Transition.  Yet almost any transition needs <em>some</em> help in this area.  Even an executive with good connections and considerable political skill is likely to need some help noticing things that are significant in terms of the transition, and help devising strategies to deal with these issues.  Could we help the newbie executive make connections and learn how to work with the politics?</p>
<p>Maybe we could.  Or maybe not, and it&#8217;s better for them to work with someone else.  I&#8217;m happy to recommend someone else when a job is outside my range.</p>
<p>Of course, Josh knows the sweet spot of Industrial Logic.  He&#8217;s learned to turn down work where he can&#8217;t help.  I highly recommend listening to this talk.  He&#8217;s got some great things to say.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+They+could+not+be+helped.+http://hiokn.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/03/15/they-could-not-be-helped/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Bringing the Agile Manifesto to Life</title>
		<link>http://blog.gdinwiddie.com/2009/02/13/bringing-the-agile-manifesto-to-life/</link>
		<comments>http://blog.gdinwiddie.com/2009/02/13/bringing-the-agile-manifesto-to-life/#comments</comments>
		<pubDate>Fri, 13 Feb 2009 13:32:35 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=124</guid>
		<description><![CDATA[Bob Payne has posted a new podcast, Tips and Advice - Manifesto for Agile Software Development, where we talk about the principles and values of the Agile Manifesto.  I&#8217;m still a bit unused to hearing myself talk, and I&#8217;ve got a ways to go at getting the &#8220;um&#8221; monster under control.
If you&#8217;ve got the time, [...]]]></description>
			<content:encoded><![CDATA[<p>Bob Payne has posted a new podcast, <a href="http://agiletoolkit.libsyn.com/index.php?post_id=432579" target="_blank">Tips and Advice - Manifesto for Agile Software Development</a>, where we talk about the principles and values of the <a href="http://agilemanifesto.org/" target="_blank">Agile Manifesto</a>.  I&#8217;m still a bit unused to hearing myself talk, and I&#8217;ve got a ways to go at getting the &#8220;um&#8221; monster under control.</p>
<p>If you&#8217;ve got the time, give it a listen and give us some comments.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Bringing+the+Agile+Manifesto+to+Life+http://o697e.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/02/13/bringing-the-agile-manifesto-to-life/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Fixing the Agile Engineering Problem</title>
		<link>http://blog.gdinwiddie.com/2009/01/30/fixing-the-agile-engineering-problem/</link>
		<comments>http://blog.gdinwiddie.com/2009/01/30/fixing-the-agile-engineering-problem/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 00:04:24 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Individuals and Interactions]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=120</guid>
		<description><![CDATA[A lot of people are talking, recently, about the fact that organizations that adopt Agile practices don&#8217;t always achieve the results they desire.  See Martin Fowler&#8217;s Flaccid Scrum, Ron Jeffries&#8217; Context, My Foot!, and Jim Shore&#8217;s The Decline and Fall of Agile for examples.
In my experience, most organizations have much room to improve both their [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people are talking, recently, about the fact that organizations that adopt Agile practices don&#8217;t always achieve the results they desire.  See <a title="Flaccid Scrum" href="http://martinfowler.com/bliki/FlaccidScrum.html" target="_blank">Martin Fowler&#8217;s <em>Flaccid Scrum</em></a>, <a href="http://xprogramming.com/blog/2009/01/30/context-my-foot/" target="_blank">Ron Jeffries&#8217; <em>Context, My Foot!</em></a>, and <a href="http://jamesshore.com/Blog/The-Decline-and-Fall-of-Agile.html" target="_blank">Jim Shore&#8217;s <em>The Decline and Fall of Agile</em></a> for examples.</p>
<p>In my experience, most organizations have much room to improve both their project management and their technical engineering practice.  Those that start with Scrum seem to improve their project management practice enough that the deficiencies in their technical engineering practice become more painfully obvious.</p>
<p>The answer is simple and obvious&#8211;improve the technical engineering practice.  The way to do that is not so easy, however.<span id="more-120"></span></p>
<p>For example, <a href="http://groups.yahoo.com/group/scrumdevelopment/message/36282" target="_blank">Tim Walker suggests</a> &#8220;Attention to technical excellence and hiring motivated people are required for it to be successful.&#8221;  As true as this is, it&#8217;s no way for an organization to get from where it is to a desired state of being able to reliably create desired functionality in their software.</p>
<p>People cannot suddenly be attentive to technical excellence.  They must slowly acquire the awareness and deeper understanding that they lack, or they would already be attentive.  Hiring motivated people suggests that those doing the hiring will suddenly be able to understand what sort of motivation is required, how to discern it in candidates, and follow through with this criteria in preference to the criteria they&#8217;ve been using.</p>
<p>And what would you do with the people you have now?  Those that are presumably not motivated toward technical excellence?  Fire them all and replace them?  This is the Human Resources equivalent to the total rewrite of a legacy application, and it has some of the same problems.  There is a lot of domain knowledge hidden in there&#8211;knowledge that would be difficult to find written down anywhere.  The new must achieve the competency of the old before it can begin to surpass it&#8211;until then, no benefit is seen.  The new will be starting in the same context as the old, and therefore is likely to produce something with a similar organization (or lack thereof).</p>
<p>The bottom line is that the developers have to learn to <strong><em>recognize</em></strong> what is &#8220;better,&#8221; they have to learn how to <strong><em>do</em></strong> it, and the cultural context in which they work has to change such that it really is important enough to have happen.  Depending on where you start, that&#8217;s a lot to change all at once.  It can take a lot of time and energy.  And leadership.  And an understanding of people.  And technical knowledge.  And&#8230;</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Fixing+the+Agile+Engineering+Problem+http://cxzq9.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/01/30/fixing-the-agile-engineering-problem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agility and Predictability</title>
		<link>http://blog.gdinwiddie.com/2009/01/16/agility-and-predictability/</link>
		<comments>http://blog.gdinwiddie.com/2009/01/16/agility-and-predictability/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 03:37:18 +0000</pubDate>
		<dc:creator>George Dinwiddie</dc:creator>
		
		<category><![CDATA[Customer Collaboration]]></category>

		<category><![CDATA[Tools and Techniques]]></category>

		<category><![CDATA[Working Software]]></category>

		<guid isPermaLink="false">http://blog.gdinwiddie.com/?p=106</guid>
		<description><![CDATA[I was reading the latest post on Johanna Rothman&#8217;s Managing Product Development blog.  In it she says,
Serial lifecycles provide a (false) prediction. And, boy oh boy, is that prediction comforting to your senior managers. “When will the project be done?” might be their most-asked question. Of course, a serial lifecycle provides a prediction that’s almost [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading the <a title="Why Your Senior Managers Like Serial Lifecycles" href="http://jrothman.com/blog/mpd/2009/01/why-your-senior-managers-like-serial-lifecycles.html" target="_blank">latest post</a> on Johanna Rothman&#8217;s Managing Product Development blog.  In it she says,</p>
<blockquote><p><strong>Serial lifecycles provide a (false) prediction</strong>. And, boy oh boy, is that prediction comforting to your senior managers. “When will the project be done?” might be their most-asked question. Of course, a serial lifecycle provides a prediction that’s almost guaranteed to be wrong, especially if you use a project scheduling tool. The tool provides you a single-point estimate, which is the first date you can’t guarantee the project won’t be done by–the first possible, optimistic date.</p></blockquote>
<p>I like that characterization of the predicted date.  Another characterization, usually true of serial lifeycles, is that the predicted delivery date is the first day of schedule slip.  I&#8217;ve seen many serial projects get almost to that date before they first admit that they&#8217;re in trouble.<span id="more-106"></span></p>
<p>There was a comment from Pawel Brodzinski to Johanna&#8217;s post saying,</p>
<blockquote><p>About <a title="Pawel Brodzinski's post about Agile and Predictability" rel="nofollow" href="http://blog.brodzinski.com/2008/08/another-advice-about-agile.html">predictability</a> I’d say it doesn’t have to be false. Waterfall project which was properly planned and is properly managed should end around deadline and should deliver functionalities specified in requirements.</p></blockquote>
<p>He&#8217;s right.  It doesn&#8217;t have to be false.  It usually is, however, because a serial lifecycle doesn&#8217;t give you any tools to manage schedule risk.  It <em>only</em> gives a prediction.  Experienced managers will guess the amount of padding to add to the schedule to give themselves a chance of meeting it.  Cautious but less-experienced managers will add a <em>lot</em> of padding, to increase their chances.  Of course, a development team working to meet a highly padded schedule may be so over-confident that they slow down to match, and then still miss the schedule if something unexpected happens.</p>
<p>In Pawel&#8217;s own blog post, he quotes <a title="Steve McConnell's take on Agility and Predictability" href="http://forums.construx.com/blogs/stevemcc/archive/2008/07/29/agile-software-business-impact-and-business-benefits.aspx" target="_blank">Steve McConnell</a> who describes an XP software development project that failed to produce a salable product because Customer (a.k.a. Product Owner, in Scrum terms) didn&#8217;t have a vision for a salable product.  For some reason, probably ignorance about Agile Software Development methods, Steve lays this failure on the development team creating one iteration at a time.  He apparently missed the practice of release planning.  When he says they &#8220;did it by the book,&#8221; they obviously didn&#8217;t use the book <a title="Planning Extreme Programming - on Amazon" href="http://www.amazon.com/exec/obidos/ASIN/0201710919/alberg30-20" target="_blank"><em>Planning Extreme Programming</em></a>, which was published only a year after the first edition of <a title="Extreme Programming Explained: Embrace Change - on Amazon" href="http://www.amazon.com/exec/obidos/ASIN/0201616416/alberg30-20" target="_blank"><em>Extreme Programming Explained: Embrace Change</em></a>.  Surely in two years the team could have read a second book.</p>
<p>Back to the point about Agility and Predictability, Steve says,</p>
<blockquote><p>True agility&#8211;which means adopting a posture that allows you to respond rapidly to changing market conditions and customer demands&#8211;conflicts with predictability. Some businesses value agility, but many businesses value predictability more than they value the ability to change direction quickly. For those businesses, becoming more Agile is a second level consideration; the first level consideration is how to become more predictable.</p></blockquote>
<p>Here, Steve seems to make the common mistake of using the dictionary definition of &#8220;agility&#8221; instead of checking the <a title="Agile Manifesto Values" href="http://agilemanifesto.org/" target="_blank">values</a> and <a title="Agile Manifesto Principles" href="http://agilemanifesto.org/principles.html" target="_blank">principles</a> of the Agile Manifesto.  The &#8220;Agile&#8221; of the manifesto is a brand name, of sorts, to replace the wimpy &#8220;light-weight methodology&#8221; term that was starting to be commonly used at the time.  It&#8217;s a good brand because Agile <em>does</em> allow you to change directions more easily.  But Agile doesn&#8217;t <em>require</em> you to change directions and it certainly does expect you to <em>have</em> a direction.</p>
<p><strong>How does Agile give you a predictable schedule?</strong> By giving you early, frequent, and fine-grained feedback and allowing you to steer the project to that schedule.</p>
<p>Let&#8217;s take a look at the release plan created at the start of the project.  First, write <em>story cards</em> for all of the features you want in your product.  These cards will generally be big stories, a.k.a. <em>epics</em>, and you&#8217;ll want to break them into smaller stories for development.  The big stories will work just fine for release planning, though.  Estimate the size of these cards.  I prefer estimating in <em>story points</em>, a fictional, unitless measure.  Some people like to start with <em>ideal engineering days</em>.  Either way, you have to guess how many of these your devlopment team can accomplish in a short iteration.  (I recommend one or two week iteration lengths.)  Count up the story points, divide by this guess, and you&#8217;ve got the number of iterations it will take to create the software.  This plan is <em>exactly the same</em> as the plan created by a serial lifecycle.  It&#8217;s just a guess&#8211;one made as carefully as our experience will allow&#8211;but still a guess.</p>
<p>Now develop software for one iteration.  How many story points did you accomplish?  Was this different than your guess?  If so, you may want to adjust your prediction to use this value instead of the guess.  Sometimes people may want to wait for three iterations before doing so, to let the team get up to speed, but they&#8217;re put on notice at the end of the very first iteration.  That makes a pretty good prediction, don&#8217;t you think?  And you can refine your prediction at the end of each iteration.  With a serial lifecycle, you&#8217;re either stuck with your original guess, or you get nervous enough that you make a new guess.</p>
<p><em>If wishes were horses, even beggars would ride.</em> My mother used to tell me that when I wanted something that was clearly out of reach.  Sometimes a software development team just can&#8217;t accomplish all of our wishes by the desired date.  We&#8217;ll see this as we replan our schedule at the end of each iteration.  And, unless the desires and capabilities are <em>completely</em> out of whack, Agile Software Development gives us the tools to meet the desired date anyway.</p>
<p>How can we meet the date when there&#8217;s too much to do?  We do the most important things first.  And we do things at a fine-grained level.  Instead of leaving whole features to the end, we leave &#8220;nice to have&#8221; refinements of features to the end.  And we then trim scope to fit the date.</p>
<p>We can do this if we&#8217;re getting each little story <em>done-done</em> as we go.  This includes testing, so we know it works the way we want.  And it includes automated regression tests, so we know it continues to work without getting buried by re-testing.  A serial lifecycle leaves this important feedback to the very end, when there&#8217;s little time to remedy problems that are discovered.  That late discovery leads to the lack of predictability produced by a serial lifecycle.  Agile Software Development gives you <em>more predictability</em> than those carefully planned-up-front project plans can provide.</p>
<p>Oh, and yes, it can provide the dictionary definition of agility, too, should your goals change.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Reading+@gdinwiddie:+Agility+and+Predictability+http://bch77.th8.us" title="Post to Twitter"><img class="nothumb" src="http://blog.gdinwiddie.com/wp-content/plugins/tweet-this/icons/tt-twitter-micro3.png" alt="[Post to Twitter]" border="0" /></a>&nbsp; </p>]]></content:encoded>
			<wfw:commentRss>http://blog.gdinwiddie.com/2009/01/16/agility-and-predictability/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
