<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/1.5.2" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Some Pitfalls Of Test Driven Development</title>
	<link>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/</link>
	<description>Lidor Wyssocky's Blog on Optimizing Software Development</description>
	<pubDate>Thu, 28 Aug 2008 12:22:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>

	<item>
 		<title>Comment on Some Pitfalls Of Test Driven Development by: Dave Nicolette</title>
		<link>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-1245</link>
		<pubDate>Fri, 11 Aug 2006 14:13:20 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-1245</guid>
					<description>Lidor, 

If you can teach developers to write good code to start with, and they habitually use TDD, then their projects will enjoy the benefits of both. TDD is not a substitute for knowledgeable software engineering. It's a technique for building clean, well-tested code and for paying off design debt incrementally. 

Planning to refactor deliberately is not an error, and not an indication of poor initial design or code. No one writes &quot;bad code&quot; on purpose &quot;just&quot; to make a test pass. It is natural for a codebase to become messy as functionality is added to it. Incremental refactoring as part of the red-green-refactor cycle is a way to keep the codebase clean as that occurs. 

TDD is an evolving discipline, and not a static practice. Presently, two areas of improvement that are gaining traction are (a) behavior-driven development and (b) refactoring to patterns. The former requires developers to think, design, and act as business analysts before writing anything. That leads to well-considered, clean designs that accurately reflect requirements, and to tests that reliably demonstrate that requirements have been met. The latter combines pattern-based design, recognition of code smells, and sound software engineering practices with TDD's red-green-refactor cycle. That leads to high-quality, maintainable code with few defects. 

It isn't a question of whether TDD works &quot;for you,&quot; it's a question of whether TDD works &quot;for software development.&quot; It does. If TDD doesn't work &quot;for you,&quot; you will find the reason in the mirror.

Your blog is all about optimizing software development. TDD is one of the most effective tools for doing so. It's all the more powerful in the hands of knowledgeable, highly-skilled developers. By treating TDD as if it were merely a workaround for ignorant or careless developers, you may be overlooking or undervaluing a very useful and practical tool for optimizing our work. Be careful not to get carried away by the anti-agile &quot;backlash&quot; people are talking about these days, and forget your own goals. ;-)</description>
		<content:encoded><![CDATA[	<p>Lidor, </p>
	<p>If you can teach developers to write good code to start with, and they habitually use TDD, then their projects will enjoy the benefits of both. TDD is not a substitute for knowledgeable software engineering. It&#8217;s a technique for building clean, well-tested code and for paying off design debt incrementally. </p>
	<p>Planning to refactor deliberately is not an error, and not an indication of poor initial design or code. No one writes &#8220;bad code&#8221; on purpose &#8220;just&#8221; to make a test pass. It is natural for a codebase to become messy as functionality is added to it. Incremental refactoring as part of the red-green-refactor cycle is a way to keep the codebase clean as that occurs. </p>
	<p>TDD is an evolving discipline, and not a static practice. Presently, two areas of improvement that are gaining traction are (a) behavior-driven development and (b) refactoring to patterns. The former requires developers to think, design, and act as business analysts before writing anything. That leads to well-considered, clean designs that accurately reflect requirements, and to tests that reliably demonstrate that requirements have been met. The latter combines pattern-based design, recognition of code smells, and sound software engineering practices with TDD&#8217;s red-green-refactor cycle. That leads to high-quality, maintainable code with few defects. </p>
	<p>It isn&#8217;t a question of whether TDD works &#8220;for you,&#8221; it&#8217;s a question of whether TDD works &#8220;for software development.&#8221; It does. If TDD doesn&#8217;t work &#8220;for you,&#8221; you will find the reason in the mirror.</p>
	<p>Your blog is all about optimizing software development. TDD is one of the most effective tools for doing so. It&#8217;s all the more powerful in the hands of knowledgeable, highly-skilled developers. By treating TDD as if it were merely a workaround for ignorant or careless developers, you may be overlooking or undervaluing a very useful and practical tool for optimizing our work. Be careful not to get carried away by the anti-agile &#8220;backlash&#8221; people are talking about these days, and forget your own goals. ;-)
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Some Pitfalls Of Test Driven Development by: Sunitha Patel</title>
		<link>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-737</link>
		<pubDate>Mon, 26 Jun 2006 14:39:26 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-737</guid>
					<description>I really like your blog, you've got great stuff in here! :)

I'm just a beginner in TDD myself and trying to incorporate it in my work now. I read another blog with a post on TDD that explains the reason for first making the test fail and then making it pass. It really made me understand the reason for this process. This site also has quite a few good blogs on this topic, in case you or your readers are interested. Here's the link:

http://codebetter.com/blogs/scott.bellware/archive/2005/11/22/134954.aspx

It really showed me the light with the ideas of TDD. From all I've read so far about it (which has mostly been from blogs like these), it seems to be a great design methodology - if done right! Isn't that always the hardest part? I guess it's something like how you talk about the hijacking of the word &quot;Agile&quot;!

Thank you again for all the posts, I enjoy reading them!</description>
		<content:encoded><![CDATA[	<p>I really like your blog, you&#8217;ve got great stuff in here! :)</p>
	<p>I&#8217;m just a beginner in TDD myself and trying to incorporate it in my work now. I read another blog with a post on TDD that explains the reason for first making the test fail and then making it pass. It really made me understand the reason for this process. This site also has quite a few good blogs on this topic, in case you or your readers are interested. Here&#8217;s the link:</p>
	<p><a href='http://codebetter.com/blogs/scott.bellware/archive/2005/11/22/134954.aspx' rel='nofollow'>http://codebetter.com/blogs/scott.bellware/archive/2005/11/22/134954.aspx</a></p>
	<p>It really showed me the light with the ideas of TDD. From all I&#8217;ve read so far about it (which has mostly been from blogs like these), it seems to be a great design methodology - if done right! Isn&#8217;t that always the hardest part? I guess it&#8217;s something like how you talk about the hijacking of the word &#8220;Agile&#8221;!</p>
	<p>Thank you again for all the posts, I enjoy reading them!
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Some Pitfalls Of Test Driven Development by: Lidor Wyssocky</title>
		<link>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-16</link>
		<pubDate>Wed, 29 Mar 2006 00:00:28 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-16</guid>
					<description>I agree that for some developers writing good code to start with is not the most economic way... yet. If you can teach these developers to write good code to start with (or create good designs for that matter) you will achieve higher optimization of their work: more value for less cost. This is not only possible, but even essential in order to reduce development costs.</description>
		<content:encoded><![CDATA[	<p>I agree that for some developers writing good code to start with is not the most economic way&#8230; yet. If you can teach these developers to write good code to start with (or create good designs for that matter) you will achieve higher optimization of their work: more value for less cost. This is not only possible, but even essential in order to reduce development costs.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Some Pitfalls Of Test Driven Development by: Jürgen Ahting</title>
		<link>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-14</link>
		<pubDate>Tue, 28 Mar 2006 20:41:27 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/03/25/some-pitfalls-of-test-driven-development/#comment-14</guid>
					<description>While I can almost agree with your &quot;Bottom Line&quot;, I don't agree with the section &quot;Caution! Rework Ahead.&quot;.
Test &quot;Driven&quot; Development simply means that the thinking goes into the tests not the code. It's the quality and sequencing of creating and changing the tests which induces the initial quality of the code. If we have a &quot;grand plan&quot; for good code in mind nobody prevents us to write and change the tests in such a sequence that we are forced to produce exactly the code we have in mind. Whether that is the most economical way is probably different for every programmer.</description>
		<content:encoded><![CDATA[	<p>While I can almost agree with your &#8220;Bottom Line&#8221;, I don&#8217;t agree with the section &#8220;Caution! Rework Ahead.&#8221;.<br />
Test &#8220;Driven&#8221; Development simply means that the thinking goes into the tests not the code. It&#8217;s the quality and sequencing of creating and changing the tests which induces the initial quality of the code. If we have a &#8220;grand plan&#8221; for good code in mind nobody prevents us to write and change the tests in such a sequence that we are forced to produce exactly the code we have in mind. Whether that is the most economical way is probably different for every programmer.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
