<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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>Comments on: Dealing With Trouble While Adopting XP</title>
	<atom:link href="http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/</link>
	<description>Living in a state of accord.</description>
	<pubDate>Fri, 09 Jan 2009 23:44:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Adrian Sutton</title>
		<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/comment-page-1/#comment-30285</link>
		<dc:creator>Adrian Sutton</dc:creator>
		<pubDate>Wed, 30 Aug 2006 00:23:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/#comment-30285</guid>
		<description>Brian,
There is no reason you shouldn't have a QA department in XP - they are the customer's assistant and they can do QA after the end of the iteration. If you are deploying non-massively-critical internal systems you may not need this as the test suite and continuous testing is enough to make sure that the system doesn't destroy day to day productivity, but any smaller bugs the slip through don't matter too much. In safety critical areas like missile control, obviously you should be doing a ton of QA during and after development. Not doing so is foolhardy.

Regarding people getting burnt out because there's no time between iterations, there are two concepts that are used in XP to avoid this. Firstly, sustainable pace says you shouldn't be doing all that work after 5pm, you are fresher and more productive if you go home on time. If you find your team is burning out you are not working at a sustainable pace and you need to find ways to reduce stress and burn out - how you do that will depend on the particular team.

The other important concept is slack. Having slack in your schedule each iteration allows you to do the continual maintenance and additional testing etc that you saw happening after work hours. The key thing is to admit to yourselves and the rest of the business that these tasks exist, they take up time and they are very important so you have to leave time in the schedule for them to happen. If you find they aren't happening, pull back the amount of work you take on for each iteration to give you more time to do them.

Agile methods depend on doing all of the practices together - implementing or focussing on each one as it becomes important. In other words, you may not roll out all the practices at once (it's too much for the team to handle all at once) but as you see problems cropping up, roll out or improve the practice that solves that problem. In the case of your missile guidance you needed better customer acceptance tests, better unit testing and a better QA system backing up the customer. In the case of your burnt out team, you needed more slack and a focus on sustainable pace. Agile methods provide the building blocks to solve these problems, you just need to be sure you continuously review what you're doing and adjust your processes to constantly make things better.

Basically, if after 6-12 months of doing XP you're still doing it the way it says to in the book, you're not doing XP because you're not doing the review and improve part of XP that is so critical (mostly this comes through in retrospectives).</description>
		<content:encoded><![CDATA[<p>Brian,<br />
There is no reason you shouldn&#8217;t have a QA department in XP - they are the customer&#8217;s assistant and they can do QA after the end of the iteration. If you are deploying non-massively-critical internal systems you may not need this as the test suite and continuous testing is enough to make sure that the system doesn&#8217;t destroy day to day productivity, but any smaller bugs the slip through don&#8217;t matter too much. In safety critical areas like missile control, obviously you should be doing a ton of QA during and after development. Not doing so is foolhardy.</p>
<p>Regarding people getting burnt out because there&#8217;s no time between iterations, there are two concepts that are used in XP to avoid this. Firstly, sustainable pace says you shouldn&#8217;t be doing all that work after 5pm, you are fresher and more productive if you go home on time. If you find your team is burning out you are not working at a sustainable pace and you need to find ways to reduce stress and burn out - how you do that will depend on the particular team.</p>
<p>The other important concept is slack. Having slack in your schedule each iteration allows you to do the continual maintenance and additional testing etc that you saw happening after work hours. The key thing is to admit to yourselves and the rest of the business that these tasks exist, they take up time and they are very important so you have to leave time in the schedule for them to happen. If you find they aren&#8217;t happening, pull back the amount of work you take on for each iteration to give you more time to do them.</p>
<p>Agile methods depend on doing all of the practices together - implementing or focussing on each one as it becomes important. In other words, you may not roll out all the practices at once (it&#8217;s too much for the team to handle all at once) but as you see problems cropping up, roll out or improve the practice that solves that problem. In the case of your missile guidance you needed better customer acceptance tests, better unit testing and a better QA system backing up the customer. In the case of your burnt out team, you needed more slack and a focus on sustainable pace. Agile methods provide the building blocks to solve these problems, you just need to be sure you continuously review what you&#8217;re doing and adjust your processes to constantly make things better.</p>
<p>Basically, if after 6-12 months of doing XP you&#8217;re still doing it the way it says to in the book, you&#8217;re not doing XP because you&#8217;re not doing the review and improve part of XP that is so critical (mostly this comes through in retrospectives).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Young</title>
		<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/comment-page-1/#comment-30283</link>
		<dc:creator>Brian Young</dc:creator>
		<pubDate>Tue, 29 Aug 2006 23:02:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/#comment-30283</guid>
		<description>George, I know where you are coming from.  I agree, a waterfall cycle is very ineffective when the QA team sees a beta release for the first time after 6 months of development.  However, I dispute the agile belief that continous testing (unit, integration, acceptance) can completely eliminate the need for any "final" testing.

What do I mean by "final" testing?  Take this scenario:  the theme of a 30 day sprint is to produce a core component of a graphical display that a range saftey officer at a missle range will use to do his job during a launch.  Stories are knocked out one by one until only a couple remain on day 29 of the sprint.  Developer Joe is working late that night and runs into trouble.  He has to change some base classes used by all the other stories in order to finish his story.  He changes them, and the CI system runs all the sets of tests at midnight for the final build.  Everything compiles and passes.  Out pops the golden egg: an InstallShield script runs, and bam! a CD is cut.

After the sprint demo, the software gets installed at the missle range (it has been "tested", right) and then used in production.  Nobody ever takes the CD and installs it and does any further testing- after all, the next sprint has already started!  Does this seem like a good idea?  I don't think it does but agile doesn't seem to have an answer for this.

The fact that a new sprint starts as soon as one ends really led to burn out.  There was never any "down time" to do any cleanup, maintenance, additional testing, etc.  Agile says you do this stuff as you go along.  In my experience this isn't always the way it works out, and when it doesn't you're in trouble.  You start utilizing hours upon hours after 5pm to take up the slack and eventually, people start quitting.</description>
		<content:encoded><![CDATA[<p>George, I know where you are coming from.  I agree, a waterfall cycle is very ineffective when the QA team sees a beta release for the first time after 6 months of development.  However, I dispute the agile belief that continous testing (unit, integration, acceptance) can completely eliminate the need for any &#8220;final&#8221; testing.</p>
<p>What do I mean by &#8220;final&#8221; testing?  Take this scenario:  the theme of a 30 day sprint is to produce a core component of a graphical display that a range saftey officer at a missle range will use to do his job during a launch.  Stories are knocked out one by one until only a couple remain on day 29 of the sprint.  Developer Joe is working late that night and runs into trouble.  He has to change some base classes used by all the other stories in order to finish his story.  He changes them, and the CI system runs all the sets of tests at midnight for the final build.  Everything compiles and passes.  Out pops the golden egg: an InstallShield script runs, and bam! a CD is cut.</p>
<p>After the sprint demo, the software gets installed at the missle range (it has been &#8220;tested&#8221;, right) and then used in production.  Nobody ever takes the CD and installs it and does any further testing- after all, the next sprint has already started!  Does this seem like a good idea?  I don&#8217;t think it does but agile doesn&#8217;t seem to have an answer for this.</p>
<p>The fact that a new sprint starts as soon as one ends really led to burn out.  There was never any &#8220;down time&#8221; to do any cleanup, maintenance, additional testing, etc.  Agile says you do this stuff as you go along.  In my experience this isn&#8217;t always the way it works out, and when it doesn&#8217;t you&#8217;re in trouble.  You start utilizing hours upon hours after 5pm to take up the slack and eventually, people start quitting.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Dinwiddie</title>
		<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/comment-page-1/#comment-30187</link>
		<dc:creator>George Dinwiddie</dc:creator>
		<pubDate>Mon, 28 Aug 2006 01:06:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/#comment-30187</guid>
		<description>Brian Young says that using an Agile development practice such as XP, "A QA period is strictly forbidden, and as a result the system never got tested properly. It is ridiculous to say that TDD will result in perfect, bug free code."

Brian, you're quite right to say that it's rediculous to expect TDD to result in perfect, bug fee code.  But did you miss the recommendation for acceptance testing?  In all of the agile approaches I know, the QA period covers the entire iteration, working in parallel with development.  It's too important to leave as a final phase, and is less effective when left as a final phase.  Better to catch problems as early as possible, when they can be dealt with systematically instead of by brittle patches, and before more code is built on top of them.  The "throw the completed design over the wall to QA" approach has never worked well, in any field.</description>
		<content:encoded><![CDATA[<p>Brian Young says that using an Agile development practice such as XP, &#8220;A QA period is strictly forbidden, and as a result the system never got tested properly. It is ridiculous to say that TDD will result in perfect, bug free code.&#8221;</p>
<p>Brian, you&#8217;re quite right to say that it&#8217;s rediculous to expect TDD to result in perfect, bug fee code.  But did you miss the recommendation for acceptance testing?  In all of the agile approaches I know, the QA period covers the entire iteration, working in parallel with development.  It&#8217;s too important to leave as a final phase, and is less effective when left as a final phase.  Better to catch problems as early as possible, when they can be dealt with systematically instead of by brittle patches, and before more code is built on top of them.  The &#8220;throw the completed design over the wall to QA&#8221; approach has never worked well, in any field.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Symphonious &#187; Evaluating Pair-Programming</title>
		<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/comment-page-1/#comment-29622</link>
		<dc:creator>Symphonious &#187; Evaluating Pair-Programming</dc:creator>
		<pubDate>Thu, 17 Aug 2006 07:21:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/#comment-29622</guid>
		<description>[...] There&#39;s a lot more that has changed recently that has led to our sudden improvement in velocity - not just pair programming. For a start, we&#39;re more focussed on the task because we&#39;re not sharing the support load around the entire team. Plus, the business has really started to understand how difficult it will be for us to get things done so they&#39;ve gotten off our backs about everything else and really focussed on hitting this big scary deadline. We were splitting our development efforts between two or three products and the context switching was killing us. [...]</description>
		<content:encoded><![CDATA[<p>[...] There&#39;s a lot more that has changed recently that has led to our sudden improvement in velocity - not just pair programming. For a start, we&#39;re more focussed on the task because we&#39;re not sharing the support load around the entire team. Plus, the business has really started to understand how difficult it will be for us to get things done so they&#39;ve gotten off our backs about everything else and really focussed on hitting this big scary deadline. We were splitting our development efforts between two or three products and the context switching was killing us. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian Young</title>
		<link>http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/comment-page-1/#comment-29516</link>
		<dc:creator>Brian Young</dc:creator>
		<pubDate>Tue, 15 Aug 2006 00:33:39 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/12/dealing-with-trouble-while-adopting-xp/#comment-29516</guid>
		<description>I spent the last year working in an solid Agile/XP environment.  My conclusion?  Amazingly enough, I don't believe it is any better than any other methodology.  The problem?  It is still a methodology.  It prescribes a specific set of things that may or may not always be appropriate.

The theory sounds great and it might even seem to work great over the first couple of sprints.  However, we found ourselves hurt by an entirely new set of problems with Agile.  For example, we were always overloaded with maintaining a complex, automated build, unit test, integration test, and acceptance test environment.  

Some developers spent more time trying to do TDD than actually writing code.  This wasn't always a lack of experience, either.  I'm a firm believer that some code doesn't lend itself to TDD.  I also don't think a rule that mandates 100% test coverage is feasible. 

Pair programming never resulted in a large improvement in productivity, even over the long term.  We never got twice the productivity from a pair.

The products severely suffered from the lack of a QA period.  A QA period is strictly forbidden, and as a result the system never got tested properly.  It is ridiculous to say that TDD will result in perfect, bug free code.

The products often suffered from architecture problems.  Since you only design a month's worth of a system at a time, the "big picture" often got missed and you ended up with a patchwork system and no mechanism to go back and clean it up.

Senior developers were often overworked doing the work that managers usually do.  When they say "the team self manages" that really means that senior guys have to step up and do a lot of "people management" since there is no manager to do it.

We had adopted the methodology 100% and had a lot of resources to help us including some big names from the industry.  There are always answers given to all the things I mentioned above.  Regardless, we had a talented, committed and qualified staff but in our retrospectives we always sat around talking about how it wasn't working. 

I have my own theories about how to develop software efficiently and effectively, but I'll save that for later :)</description>
		<content:encoded><![CDATA[<p>I spent the last year working in an solid Agile/XP environment.  My conclusion?  Amazingly enough, I don&#8217;t believe it is any better than any other methodology.  The problem?  It is still a methodology.  It prescribes a specific set of things that may or may not always be appropriate.</p>
<p>The theory sounds great and it might even seem to work great over the first couple of sprints.  However, we found ourselves hurt by an entirely new set of problems with Agile.  For example, we were always overloaded with maintaining a complex, automated build, unit test, integration test, and acceptance test environment.  </p>
<p>Some developers spent more time trying to do TDD than actually writing code.  This wasn&#8217;t always a lack of experience, either.  I&#8217;m a firm believer that some code doesn&#8217;t lend itself to TDD.  I also don&#8217;t think a rule that mandates 100% test coverage is feasible. </p>
<p>Pair programming never resulted in a large improvement in productivity, even over the long term.  We never got twice the productivity from a pair.</p>
<p>The products severely suffered from the lack of a QA period.  A QA period is strictly forbidden, and as a result the system never got tested properly.  It is ridiculous to say that TDD will result in perfect, bug free code.</p>
<p>The products often suffered from architecture problems.  Since you only design a month&#8217;s worth of a system at a time, the &#8220;big picture&#8221; often got missed and you ended up with a patchwork system and no mechanism to go back and clean it up.</p>
<p>Senior developers were often overworked doing the work that managers usually do.  When they say &#8220;the team self manages&#8221; that really means that senior guys have to step up and do a lot of &#8220;people management&#8221; since there is no manager to do it.</p>
<p>We had adopted the methodology 100% and had a lot of resources to help us including some big names from the industry.  There are always answers given to all the things I mentioned above.  Regardless, we had a talented, committed and qualified staff but in our retrospectives we always sat around talking about how it wasn&#8217;t working. </p>
<p>I have my own theories about how to develop software efficiently and effectively, but I&#8217;ll save that for later :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
