<?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: When TDD goes bad</title>
	<atom:link href="http://gojko.net/2008/02/25/when-tdd-goes-bad/feed/" rel="self" type="application/rss+xml" />
	<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/</link>
	<description>Building software that matters</description>
	<lastBuildDate>Thu, 18 Mar 2010 07:36:47 -0400</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Scott Finneran</title>
		<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/comment-page-1/#comment-25502</link>
		<dc:creator>Scott Finneran</dc:creator>
		<pubDate>Tue, 26 Feb 2008 23:25:21 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2008/02/25/when-tdd-goes-bad/#comment-25502</guid>
		<description>Hi gojko,

Agreed, it is a social problem and while technology will never cure a social problem completely, the right tools can help by making it more difficult to cause the problem than to fix the original issue. 
I give the example of Aegis because it provides/imposes a development process designed to alleviate just this situation. In the case of a single developer disabling a test, this would be stopped at the next stage of the process which is a review. Aegis won&#039;t allow the change-set to progress through to a repository commit until the review is passed.
This means that at least two or more people (developer and reviewer) have to agree to knowingly sabotage the project by omitting the test. 
If a development team has reached at point where testing has become this expendable then it has a far greater problem than a single bug being introduced.

Scott</description>
		<content:encoded><![CDATA[<p>Hi gojko,</p>
<p>Agreed, it is a social problem and while technology will never cure a social problem completely, the right tools can help by making it more difficult to cause the problem than to fix the original issue.<br />
I give the example of Aegis because it provides/imposes a development process designed to alleviate just this situation. In the case of a single developer disabling a test, this would be stopped at the next stage of the process which is a review. Aegis won&#8217;t allow the change-set to progress through to a repository commit until the review is passed.<br />
This means that at least two or more people (developer and reviewer) have to agree to knowingly sabotage the project by omitting the test.<br />
If a development team has reached at point where testing has become this expendable then it has a far greater problem than a single bug being introduced.</p>
<p>Scott</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Conery</title>
		<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/comment-page-1/#comment-25497</link>
		<dc:creator>Rob Conery</dc:creator>
		<pubDate>Tue, 26 Feb 2008 18:21:02 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2008/02/25/when-tdd-goes-bad/#comment-25497</guid>
		<description>Nice list and I think it&#039;s really a study in theory vs. responsibility. This may sound picky, but I think it&#039;s important - this list applies to Unit Testing, not TDD.</description>
		<content:encoded><![CDATA[<p>Nice list and I think it&#8217;s really a study in theory vs. responsibility. This may sound picky, but I think it&#8217;s important &#8211; this list applies to Unit Testing, not TDD.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Wilden</title>
		<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/comment-page-1/#comment-25492</link>
		<dc:creator>Mark Wilden</dc:creator>
		<pubDate>Tue, 26 Feb 2008 17:10:26 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2008/02/25/when-tdd-goes-bad/#comment-25492</guid>
		<description>Diego&#039;s comment (while apt) is exactly what I&#039;m talking about. Too many people think TDD == unit tests.

It would be great if folks wouldn&#039;t confuse the two.

Just in case it&#039;s not clear, TDD refers to the practice of using tests to drive development. You don&#039;t write a line of code without a failing unit test. This means you write your tests before you write the code. This has several benefits, including 1) being much more interesting than writing tests afterwards, which I find mind-numbing, 2) forcing you to define your interface before you start coding, 3) reducing feature-itis, where you might add stuff &quot;just in case,&quot; and, oh yes, 4) ensuring greater test coverage.

Clearly, gojko&#039;s post is about testing in general, not TDD.

///ark</description>
		<content:encoded><![CDATA[<p>Diego&#8217;s comment (while apt) is exactly what I&#8217;m talking about. Too many people think TDD == unit tests.</p>
<p>It would be great if folks wouldn&#8217;t confuse the two.</p>
<p>Just in case it&#8217;s not clear, TDD refers to the practice of using tests to drive development. You don&#8217;t write a line of code without a failing unit test. This means you write your tests before you write the code. This has several benefits, including 1) being much more interesting than writing tests afterwards, which I find mind-numbing, 2) forcing you to define your interface before you start coding, 3) reducing feature-itis, where you might add stuff &#8220;just in case,&#8221; and, oh yes, 4) ensuring greater test coverage.</p>
<p>Clearly, gojko&#8217;s post is about testing in general, not TDD.</p>
<p>///ark</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aslak Hellesøy</title>
		<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/comment-page-1/#comment-25490</link>
		<dc:creator>Aslak Hellesøy</dc:creator>
		<pubDate>Tue, 26 Feb 2008 14:55:05 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2008/02/25/when-tdd-goes-bad/#comment-25490</guid>
		<description>Very good points - all of them. Even if none of them are related to TDD.

Maybe you could add one last point:

== Developers think that TDD is only about Testing ==
There is much more to TDD than testing. First of all, in TDD you write the test *before* you write the code.
If you&#039;re not doing that, you&#039;re not doing TDD. Second, the rythm between writing a test and production code
should be under a minute (never more than a couple of minutes). And third, you should never write any production
code until you have a failing test.

Most developers failing with TDD are ignorant of these guidelines.</description>
		<content:encoded><![CDATA[<p>Very good points &#8211; all of them. Even if none of them are related to TDD.</p>
<p>Maybe you could add one last point:</p>
<p>== Developers think that TDD is only about Testing ==<br />
There is much more to TDD than testing. First of all, in TDD you write the test *before* you write the code.<br />
If you&#8217;re not doing that, you&#8217;re not doing TDD. Second, the rythm between writing a test and production code<br />
should be under a minute (never more than a couple of minutes). And third, you should never write any production<br />
code until you have a failing test.</p>
<p>Most developers failing with TDD are ignorant of these guidelines.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gojko</title>
		<link>http://gojko.net/2008/02/25/when-tdd-goes-bad/comment-page-1/#comment-25479</link>
		<dc:creator>gojko</dc:creator>
		<pubDate>Tue, 26 Feb 2008 08:16:21 +0000</pubDate>
		<guid isPermaLink="false">http://gojko.net/2008/02/25/when-tdd-goes-bad/#comment-25479</guid>
		<description>Hi Scott,

1 is a human problem, not a code problem. No integration system is going to prevent a developer from commenting out the offending verification line, which is what happens most often.</description>
		<content:encoded><![CDATA[<p>Hi Scott,</p>
<p>1 is a human problem, not a code problem. No integration system is going to prevent a developer from commenting out the offending verification line, which is what happens most often.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
