<?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: TDD, Test-First, and Ravioli Code</title>
	<atom:link href="http://paul-m-jones.com/archives/250/feed" rel="self" type="application/rss+xml" />
	<link>http://paul-m-jones.com/archives/250?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tdd-test-first-and-ravioli-code</link>
	<description>It&#039;s not enough to be smart; you have to actually know things.</description>
	<lastBuildDate>Wed, 08 Feb 2012 21:50:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
	<item>
		<title>By: Tweets that mention Paul M. Jones » Blog Archive » TDD, Test-First, and Ravioli Code -- Topsy.com</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-416217</link>
		<dc:creator>Tweets that mention Paul M. Jones » Blog Archive » TDD, Test-First, and Ravioli Code -- Topsy.com</dc:creator>
		<pubDate>Sat, 05 Jun 2010 13:29:51 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-416217</guid>
		<description>[...] This post was mentioned on Twitter by Silver Catalyst, Nelson Abu S. R. Jr. Nelson Abu S. R. Jr said: An old but interesting post on TDD and &quot;ravioli&quot; code - http://bit.ly/bUGGrf #agile [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Silver Catalyst, Nelson Abu S. R. Jr. Nelson Abu S. R. Jr said: An old but interesting post on TDD and &quot;ravioli&quot; code &#8211; <a href="http://bit.ly/bUGGrf" rel="nofollow">http://bit.ly/bUGGrf</a> #agile [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thoughts On TDD (A Case Study With Ruby And RSpec)</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-414574</link>
		<dc:creator>Thoughts On TDD (A Case Study With Ruby And RSpec)</dc:creator>
		<pubDate>Mon, 01 Feb 2010 06:38:41 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-414574</guid>
		<description>[...] back into non-TDD practices every day, that doesn’t mean we don’t write tests it just means we don’t always write the tests first. For some reason people often feel like they need to cover this up, as if they loose some [...]</description>
		<content:encoded><![CDATA[<p>[...] back into non-TDD practices every day, that doesn’t mean we don’t write tests it just means we don’t always write the tests first. For some reason people often feel like they need to cover this up, as if they loose some [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Spaghetti? Ravioli? Farfalle? &#8211; PHP in Action</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-410006</link>
		<dc:creator>Spaghetti? Ravioli? Farfalle? &#8211; PHP in Action</dc:creator>
		<pubDate>Mon, 02 Feb 2009 22:18:17 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-410006</guid>
		<description>[...] In a blog post by Paul M. Jones, he quotes comments from slashdot claiming that TDD leads to &#8220;ravioli code&#8221;: The problem is that it [Ravioli Code] tends to lead to functions (methods, etc.) without true coherence, and it often leaves the code to implement even something fairly simple scattered over a very large number of functions. [...]</description>
		<content:encoded><![CDATA[<p>[...] In a blog post by Paul M. Jones, he quotes comments from slashdot claiming that TDD leads to &#8220;ravioli code&#8221;: The problem is that it [Ravioli Code] tends to lead to functions (methods, etc.) without true coherence, and it often leaves the code to implement even something fairly simple scattered over a very large number of functions. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Chris Balavessov</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-166984</link>
		<dc:creator>Chris Balavessov</dc:creator>
		<pubDate>Mon, 30 Jul 2007 07:54:11 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-166984</guid>
		<description>Hi Paul,

Thanks for a very enlightened and may i say courageous post! I work for a small Java shop doing XP development and have personally witnessed many of the problems that your post mentions in our code base. 

TDD is a major tenet in our process and it has served us very well over the years. However it seems that over time the drive to split the code upfront into easily testable chunks has produced areas with particularly low coherence, with things only getting worse over time. 

This has actually become a problem with a large visibility in the company to the point that even the business people in the company now understand what &quot;low coherence&quot; means! 

Personally I find this code with low coherence can sometimes be much harder to refactor in a meaningful way, especially if the refactoring is not of some relatively trivial kind (e.g. I am doing an architectural enhancement, even a very minor one.). In these situations I sometimes (but not always) find myself having little option but to turf all the old code together with all the unit tests because of how badly and counter-intuitively things are split-up. 
 
Thanks again for the post, I am planning on using it to further shed some light on our cohesion problem in front of the business people in my company.

With that said, the benefits of TDD far outweigh the problems it can introduce, at least for our company. It would be great if the discussion this post has started crystallizes some way of evolving TDD to avoid the low cohesion/ravioli code pitfall. The way it is currently used out there is just too easy to get wrong IMHO.</description>
		<content:encoded><![CDATA[<p>Hi Paul,</p>
<p>Thanks for a very enlightened and may i say courageous post! I work for a small Java shop doing XP development and have personally witnessed many of the problems that your post mentions in our code base. </p>
<p>TDD is a major tenet in our process and it has served us very well over the years. However it seems that over time the drive to split the code upfront into easily testable chunks has produced areas with particularly low coherence, with things only getting worse over time. </p>
<p>This has actually become a problem with a large visibility in the company to the point that even the business people in the company now understand what &#8220;low coherence&#8221; means! </p>
<p>Personally I find this code with low coherence can sometimes be much harder to refactor in a meaningful way, especially if the refactoring is not of some relatively trivial kind (e.g. I am doing an architectural enhancement, even a very minor one.). In these situations I sometimes (but not always) find myself having little option but to turf all the old code together with all the unit tests because of how badly and counter-intuitively things are split-up. </p>
<p>Thanks again for the post, I am planning on using it to further shed some light on our cohesion problem in front of the business people in my company.</p>
<p>With that said, the benefits of TDD far outweigh the problems it can introduce, at least for our company. It would be great if the discussion this post has started crystallizes some way of evolving TDD to avoid the low cohesion/ravioli code pitfall. The way it is currently used out there is just too easy to get wrong IMHO.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noel Darlow</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163499</link>
		<dc:creator>Noel Darlow</dc:creator>
		<pubDate>Thu, 19 Jul 2007 17:35:22 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163499</guid>
		<description>I&#039;m sorry I don&#039;t know how to &quot;behave&quot;. I only know how to be fair.</description>
		<content:encoded><![CDATA[<p>I&#8217;m sorry I don&#8217;t know how to &#8220;behave&#8221;. I only know how to be fair.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pmjones</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163483</link>
		<dc:creator>pmjones</dc:creator>
		<pubDate>Thu, 19 Jul 2007 16:29:03 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163483</guid>
		<description>Hi Noel -- I&#039;m not asking you to apologize.  I&#039;m asking you to behave yourself.  Your comments do indeed stand.</description>
		<content:encoded><![CDATA[<p>Hi Noel &#8212; I&#8217;m not asking you to apologize.  I&#8217;m asking you to behave yourself.  Your comments do indeed stand.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noel Darlow</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163480</link>
		<dc:creator>Noel Darlow</dc:creator>
		<pubDate>Thu, 19 Jul 2007 16:23:16 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163480</guid>
		<description>I&#039;ll be glad to apologise if you can show us some real examples of TDD dogmatism in php. If not, my comments stand.</description>
		<content:encoded><![CDATA[<p>I&#8217;ll be glad to apologise if you can show us some real examples of TDD dogmatism in php. If not, my comments stand.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pmjones</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163471</link>
		<dc:creator>pmjones</dc:creator>
		<pubDate>Thu, 19 Jul 2007 15:46:03 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163471</guid>
		<description>Noel --

Your use of Goebbels, even in passing, invokes Godwin&#039;s Law.  Any valid points that you may have made in your post are completely overshadowed by this.

I believe you have successfully demonstrated your inability to respectfully disagree and be civil to others in a public forum.  If you wish to continue this behavior, I ask that do you do so on your own blog, and use its trackback/pingback system, instead of abusing the commenting privilege I have extended to you and the public-at-large.

Amr Elssamadisy, for example, shows the ability to disagree in a civil manner, and even goes to far as to make a blog entry of his own in relation to the disagreement:

http://www.infoq.com/news/2007/07/AgileBadForDesign

I hope that you will have the common courtesy and self-restraint necessary to act as a good guest on this blog; if not, I will attempt, at my discretion, various measures to prevent and/or remove any further inappropriate comments from you.</description>
		<content:encoded><![CDATA[<p>Noel &#8211;</p>
<p>Your use of Goebbels, even in passing, invokes Godwin&#8217;s Law.  Any valid points that you may have made in your post are completely overshadowed by this.</p>
<p>I believe you have successfully demonstrated your inability to respectfully disagree and be civil to others in a public forum.  If you wish to continue this behavior, I ask that do you do so on your own blog, and use its trackback/pingback system, instead of abusing the commenting privilege I have extended to you and the public-at-large.</p>
<p>Amr Elssamadisy, for example, shows the ability to disagree in a civil manner, and even goes to far as to make a blog entry of his own in relation to the disagreement:</p>
<p><a href="http://www.infoq.com/news/2007/07/AgileBadForDesign" rel="nofollow">http://www.infoq.com/news/2007/07/AgileBadForDesign</a></p>
<p>I hope that you will have the common courtesy and self-restraint necessary to act as a good guest on this blog; if not, I will attempt, at my discretion, various measures to prevent and/or remove any further inappropriate comments from you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Noel Darlow</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163197</link>
		<dc:creator>Noel Darlow</dc:creator>
		<pubDate>Wed, 18 Jul 2007 20:28:39 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163197</guid>
		<description>E. DeFazio: 

&quot;Noel, if you want to find some dogmatists, maybe you should look at those who responded to this post.&quot;

Whom do you mean? I see several people who have pointed out - perfectly politely and quite correctly - that Paul seems to misunderstand some of the ideas behind TDD.

That&#039;s OK. Nobody should ever be attacked for not knowing something. Everybody should be encouraged to ask questions. At the same time you ought not to snipe at things which you do not understand simply because you don&#039;t understand them. There&#039;s too much of this in php (usually in OOP v procedural debates). What really bothers me is that this is harmful for those who are trying to learn and don&#039;t yet know enough to see through it. I wouldn&#039;t like anyone to go away from this thinking that TDD is an over-hyped dogma.

It&#039;s all a bit Goebbells isn&#039;t it? Making up non-existent threats, lashing out at people who challenge the.. er.. dogma about the dogma. I guess we can call that the metadogma. 

It sounds like a reasonable thing to say. &quot;I hate dogma!&quot; &quot;Yeah me too!&quot; &quot;Let&#039;s get them!&quot; Nobody is going to stand up and say well actually I quite like dogma and could I have some unfounded accusations to go with that please? In fact it&#039;s completely meaningless. Lips are moving, words are coming out, but no information is actually being processed. There never were any dogmatists to begin with and it was simply dishonest to claim there were.

In the world of php I can think of only a tiny handful of people who give talks, write articles or answer forum posts about TDD. None of them are what I would call dogmatists. They are all people I admire because of the effort they put into helping others learn.

When I first saw the blog entry I thought: great! Something about testing; this should be interesting. I wish I&#039;d been able to talk about that instead of the metadogma but, as Hamish McStalker has correctly pointed out you can sometimes find me dogmatically answering testing questions on sitepoint.com under the name of McGruff - when I&#039;m not being rude about the good Dr Hamish.</description>
		<content:encoded><![CDATA[<p>E. DeFazio: </p>
<p>&#8220;Noel, if you want to find some dogmatists, maybe you should look at those who responded to this post.&#8221;</p>
<p>Whom do you mean? I see several people who have pointed out &#8211; perfectly politely and quite correctly &#8211; that Paul seems to misunderstand some of the ideas behind TDD.</p>
<p>That&#8217;s OK. Nobody should ever be attacked for not knowing something. Everybody should be encouraged to ask questions. At the same time you ought not to snipe at things which you do not understand simply because you don&#8217;t understand them. There&#8217;s too much of this in php (usually in OOP v procedural debates). What really bothers me is that this is harmful for those who are trying to learn and don&#8217;t yet know enough to see through it. I wouldn&#8217;t like anyone to go away from this thinking that TDD is an over-hyped dogma.</p>
<p>It&#8217;s all a bit Goebbells isn&#8217;t it? Making up non-existent threats, lashing out at people who challenge the.. er.. dogma about the dogma. I guess we can call that the metadogma. </p>
<p>It sounds like a reasonable thing to say. &#8220;I hate dogma!&#8221; &#8220;Yeah me too!&#8221; &#8220;Let&#8217;s get them!&#8221; Nobody is going to stand up and say well actually I quite like dogma and could I have some unfounded accusations to go with that please? In fact it&#8217;s completely meaningless. Lips are moving, words are coming out, but no information is actually being processed. There never were any dogmatists to begin with and it was simply dishonest to claim there were.</p>
<p>In the world of php I can think of only a tiny handful of people who give talks, write articles or answer forum posts about TDD. None of them are what I would call dogmatists. They are all people I admire because of the effort they put into helping others learn.</p>
<p>When I first saw the blog entry I thought: great! Something about testing; this should be interesting. I wish I&#8217;d been able to talk about that instead of the metadogma but, as Hamish McStalker has correctly pointed out you can sometimes find me dogmatically answering testing questions on sitepoint.com under the name of McGruff &#8211; when I&#8217;m not being rude about the good Dr Hamish.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: E. DeFazio</title>
		<link>http://paul-m-jones.com/archives/250/comment-page-1#comment-163162</link>
		<dc:creator>E. DeFazio</dc:creator>
		<pubDate>Wed, 18 Jul 2007 17:54:50 +0000</pubDate>
		<guid isPermaLink="false">http://paul-m-jones.com/blog/?p=250#comment-163162</guid>
		<description>I heartily agree with your arguments about TDD... posted about this before on artima:
http://www.artima.com/forums/flat.jsp?forum=106&amp;thread=137207&amp;start=15&amp;msRange=15
BTW,
Noel, if you want to find some dogmatists, maybe you should look at those who responded to this post.

I also find that those beating the loudest on the TDD drum state: 
TDD is fine, and anyone who disagress with TDD simply does not understand what  TDD is...

This is what I disagree with about TDD... (verbatum from Scott Ambler http://www.agiledata.org/essays/tdd.html)

&quot;A programmer taking a TDD approach refuses to write a new function until there is first a test that fails because that function isnâ€™t present.  In fact, they refuse to add even a single line of code until a test exists for it.  Once the test is in place they then do the work required to ensure that the test suite now passes (your new code may break several existing tests as well as the new one). &quot;</description>
		<content:encoded><![CDATA[<p>I heartily agree with your arguments about TDD&#8230; posted about this before on artima:<br />
<a href="http://www.artima.com/forums/flat.jsp?forum=106&#038;thread=137207&#038;start=15&#038;msRange=15" rel="nofollow">http://www.artima.com/forums/flat.jsp?forum=106&#038;thread=137207&#038;start=15&#038;msRange=15</a><br />
BTW,<br />
Noel, if you want to find some dogmatists, maybe you should look at those who responded to this post.</p>
<p>I also find that those beating the loudest on the TDD drum state:<br />
TDD is fine, and anyone who disagress with TDD simply does not understand what  TDD is&#8230;</p>
<p>This is what I disagree with about TDD&#8230; (verbatum from Scott Ambler <a href="http://www.agiledata.org/essays/tdd.html" rel="nofollow">http://www.agiledata.org/essays/tdd.html</a>)</p>
<p>&#8220;A programmer taking a TDD approach refuses to write a new function until there is first a test that fails because that function isnâ€™t present.  In fact, they refuse to add even a single line of code until a test exists for it.  Once the test is in place they then do the work required to ensure that the test suite now passes (your new code may break several existing tests as well as the new one). &#8220;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

