<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mike&#039;s Blabberings &#187; agile</title>
	<atom:link href="http://www.mike-griffith.com/blog/tag/agile/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mike-griffith.com/blog</link>
	<description>on software, testing, and the web.</description>
	<lastBuildDate>Mon, 14 Feb 2011 10:51:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A Culinary Analogy</title>
		<link>http://www.mike-griffith.com/blog/2010/06/a-culinary-analogy/</link>
		<comments>http://www.mike-griffith.com/blog/2010/06/a-culinary-analogy/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 13:17:44 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.mike-griffith.com/blog/?p=541</guid>
		<description><![CDATA[
We used to build software like a crappy banana split stand.  Grab the banana off the shelf (which probably is about to expire), throw on ice cream, cover it in chocolate, add some cherries, whip cream, nuts, stir it up, put a spoon in it, hand it to the customer, take their money, and [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mike-griffith.com/blog/wp-content/uploads/2010/06/bananasplit-242x300.jpg" alt="" title="bananasplit" width="242" height="300" class="aligncenter size-medium wp-image-543" /></p>
<p>We used to build software like a crappy banana split stand.  Grab the banana off the shelf (which probably is about to expire), throw on ice cream, cover it in chocolate, add some cherries, whip cream, nuts, stir it up, put a spoon in it, hand it to the customer, take their money, and let them walk away.</p>
<p>STOP THAT RIGHT NOW!</p>
<p>Stop the gargantuan effort up front, stop compromising the quality of pieces that don&#8217;t get seen, stop making your customer wait til the end of the project.</p>
<p>Find a beautiful banana and show it to your customer.  Let them take a bite.  That might be all they need.  Or they might want to take a small piece of it and try it in banana bread.  They might not like that.  But that&#8217;s OK, because we have lots of time and lots of banana left.  Take the next piece and make a banana smoothie for them.  Maybe add a strawberry for the next sip.</p>
<p><a href="http://twitter.com/aaron_oliver" target="_blank">Aaron Oliver</a> might suggest that a good time to have these tastings is <a href="http://www.codesoftly.com/2010/06/dont-forget-the-meeting-after-the-standup-meeting.html" target="_blank">right after your daily stand-up</a>.</p>
<p>Let your customer be involved at each step.  Let them help you make the right changes early and often.  Be agile.  Don&#8217;t be the hobo behind the bad banana split counter.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffith.com/blog/2010/06/a-culinary-analogy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rally pairing</title>
		<link>http://www.mike-griffith.com/blog/2010/05/rally-pairing/</link>
		<comments>http://www.mike-griffith.com/blog/2010/05/rally-pairing/#comments</comments>
		<pubDate>Mon, 10 May 2010 19:50:00 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://www.mike-griffith.com/blog/?p=485</guid>
		<description><![CDATA[Iwein Fuld posted a great article about different styles of pair programming.  It&#8217;s a great post, and I encourage you to read it if you&#8217;ve tried pairing but haven&#8217;t bought in yet. His rally car analogy is spot-on.
My favorite driver is an outspoken dutch guy. He&#8217;s quick on the wheel and if he doesn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Iwein Fuld posted a great article about different <a href="http://blog.xebia.com/2010/05/09/practical-styles-of-pair-programming/" target="_blank">styles of pair programming</a>.  It&#8217;s a great post, and I encourage you to read it if you&#8217;ve tried pairing but haven&#8217;t bought in yet. His rally car analogy is spot-on.</p>
<blockquote><p>My favorite driver is an outspoken dutch guy. He&#8217;s quick on the wheel and if he doesn&#8217;t get the idea I&#8217;m trying to convey to him he&#8217;ll just type something to try if that works. When he does get what I&#8217;m mumbling it&#8217;s on the screen faster than when I would have typed it myself, so it doesn&#8217;t give me time to get frustrated over things not being like the would be when I had the keyboard. And that gives me time to look for exits and pittfalls.
</p></blockquote>
<p><img src="http://www.mike-griffith.com/blog/wp-content/uploads/2010/05/rally-300x187.jpg" alt="" title="rally" width="300" height="187" class="aligncenter size-medium wp-image-487" /></p>
<p>He also dismisses anyone that tries to say pairing isn&#8217;t as effective as coding solo.</p>
<blockquote><p>No you&#8217;re not faster on your own, you&#8217;re just creating more crap for your colleagues to puzzle over and eventually delete. The code you write alone sucks. That guy that is getting on your nerves is trying to tell you (clumsily) that your code sucks, try to listen to him and you&#8217;ll turn into a better programmer. Or maybe you can teach him something and he&#8217;ll stop getting on your nerves. &#8230; If you&#8217;re slowing the other guy down, that&#8217;s a good thing. That will prevent him from writing code that you cannot maintain. If you don&#8217;t feel worthy of your colleagues code, get over it, or get off the team.</p></blockquote>
<p>My biggest stumbling block to date has been the ratio of time driving to navigating when you&#8217;re pairing a senior and junior dev.  Trying to balance productivity and mentoring isn&#8217;t always easy.  I find allowing the Sr. dev to drive 2/3 of the time and Jr. dev to drive 1/3 strikes close to the optimal balance.  Any more driving for the Sr and you&#8217;ll lose the Jr entirely as he rides along for the tour.  Any less and you lose valuable time in guiding-by-doing.</p>
<p>Whether you&#8217;re the driver or navigator, take your role seriously.  Share in the responsibility and help foster a mutual respect for the other.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffith.com/blog/2010/05/rally-pairing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Auto Restoration?</title>
		<link>http://www.mike-griffith.com/blog/2010/05/agile-auto-restoration/</link>
		<comments>http://www.mike-griffith.com/blog/2010/05/agile-auto-restoration/#comments</comments>
		<pubDate>Sat, 01 May 2010 05:59:12 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[planning]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://www.mike-griffith.com/blog/?p=430</guid>
		<description><![CDATA[I was over at my buddy Chad&#8217;s garage again tonight tinkering with his 1958 Chevy pickup.  Chad bought the truck when he turned 16 and planned to restore it and drive it all through college.  Ten years later, the truck still doesn&#8217;t run. To an untrained eye, there&#8217;s little different from when he [...]]]></description>
			<content:encoded><![CDATA[<p>I was over at my buddy Chad&#8217;s garage again tonight tinkering with his 1958 Chevy pickup.  Chad bought the truck when he turned 16 and planned to restore it and drive it all through college.  <strong>Ten years later, the truck still doesn&#8217;t run.</strong> To an untrained eye, there&#8217;s little different from when he bought it.  What&#8217;s wrong with this picture?</p>
<p><img src="http://www.mike-griffith.com/blog/wp-content/uploads/2010/05/pickup-300x224.jpg" alt="as it stands today" title="as it stands today" width="300" height="224" class="alignright size-medium wp-image-444" /></p>
<p>Chad had high hopes early.  He bought the truck on a whim and, without too much inspection, figured it&#8217;d be a few month job to get it on the road again.  Needless to say, months passed, and it was still in his dad&#8217;s garage.  Life (and college) got in the way, and the truck sat abandoned for several years, with only an occasional wrench gracing it&#8217;s steel.</p>
<p>He&#8217;d buy new parts from time to time, and store them away to be put on at a later date.  He&#8217;d spend the occasional weekend tearing something off, grinding on it, patching, and welding.  Tearing off one part would show deeper damage.  This was Chad&#8217;s baby, and he couldn&#8217;t simply mask that damage, so he&#8217;d plan to fix the next issue before continuing, or order another new body panel.  Little visible progress was made, but lots of hours and dollars were invested.</p>
<p>Finally, 3 weeks ago, after lots of pressure from his friends and family over the last few years, Chad took the truck out of storage at his parents 2 hours away and brought it to his own garage.  He&#8217;s got a reinvigorated passion to get this thing running, and I&#8217;m excited to help him.</p>
<p><strong>Some of these challenges sound familiar to software veterans, but are any analogies actually relevant?</strong></p>
<p>Consider for a moment that you&#8217;re assigned to a project that requires you to migrate an existing web application from Java+Oracle to PHP+MySQL.  Doing rewrites of applications can often be driven by a desire to consolidate platforms and reduce costs, and there is often a fixed timeline.  The project is locked and loaded, and you haven&#8217;t had time to do technical due diligence.</p>
<p>You dive right in without much planning, and before you know it, you&#8217;ve passed your deadline.  You got hung up digging into the guts of the old software.  What little new code you were able to write relies on features that your new database doesn&#8217;t have, but you didn&#8217;t realize because you were testing against the old one.</p>
<p><strong>What has agile software development taught us that can right this project-gone-bad?</strong></p>
<p>It would be a stretch to suggest the core tenets of <a href="http://agilemanifesto.org/" target="_blank">the agile manifesto</a> are entirely applicable.  There really aren&#8217;t any processes/tools getting in the way, he&#8217;s not held up by a desire to document everything about the truck, contract negotiation doesn&#8217;t matter, and he really doesn&#8217;t have much of a plan that would inhibit responding to change.</p>
<p>However, the <a href="http://www.agilemanifesto.org/principles.html" target="_blank">principles behind an agile team</a> can be very useful to this situation.</p>
<ul>
<li>Rapid, continuous delivery of a useful <del>software</del> <strong>truck</strong>.  Don&#8217;t worry if, for example, the interior dome lights aren&#8217;t working right away.  But let&#8217;s get it running, and make sure it&#8217;s poised to keep getting better.</li>
<li>A working <del>software</del> <strong>truck</strong> is the principal measure of progress.  Not how many new body parts got ordered off ebay, or how cool the sketch of flames on the doors might look.</li>
<li>The <del>project</del> <strong>truck</strong> is built by motivated individuals, who should be trusted.  The friends that help need to be committed to the goal.</li>
<li>Continuous attention to technical excellence and good design.  Don&#8217;t rush it.  And avoid duct tape.</li>
<li>Simplicity.  One of the beautiful things about old cars is how few moving parts there really are under the hood.  Don&#8217;t ruin it by adding flamethrowers to the exhaust or an automatic transmission.</li>
<li>Regular adaptation to changing circumstances.  Expect that we&#8217;ll uncover a few unanticipated problems, but be ready to figure them out and keep charging forward.</li>
</ul>
<p>Chad is a perfectionist, and he&#8217;s not in a rush to get this thing done.   However, we have made some progress already in the last few weeks.  Here&#8217;s where we are now:  most barriers to working on the truck have been removed, we&#8217;ve started a &#8220;spike&#8221; of work to get the motor close to starting, I&#8217;m going to help put together a prioritized list of features (similar to user stories), and we&#8217;ll identify incremental milestones along the path to winning car shows.</p>
<p>With any luck, we&#8217;ll get the motor fired up after our first sprint.  And maybe, just maybe, I&#8217;ll learn something along the way that can help us develop better software!</p>
<p><img src="http://www.mike-griffith.com/blog/wp-content/uploads/2010/05/1958_chevy_pickup-300x199.jpg" alt="" title="will it every look this sexy?" width="300" height="199" class="alignnone size-medium wp-image-440" /></p>
<p><em>Photo courtesy of <a href="http://www.flickr.com/photos/chicanerii/195977388/">chicanerii on flickr</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mike-griffith.com/blog/2010/05/agile-auto-restoration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

