<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Echoes from the Stone Age</title>
    <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Echoes from the Stone Age</title>
      <description>&lt;p&gt;The echoes from Joel Spolsky&amp;#8217;s &lt;a href="http://www.joelonsoftware.com/items/2009/09/23.html"&gt;Duct Tape blog&lt;/a&gt; continue to bounce off the blogosphere and twitterverse.  &lt;a href="http://www.tbray.org/ongoing/When/200x/2009/09/25/On-Duct-Tape"&gt;Tim Bray&lt;/a&gt; and &lt;a href="http://gigamonkeys.com/blog/2009/10/05/coders-unit-testing.html"&gt;Peter Seibel&lt;/a&gt; have both written responses to Joel, me, and each other.&lt;/p&gt;


	&lt;p&gt;Here are some stray thoughts&amp;#8230;&lt;/p&gt;


	&lt;h2&gt;&lt;span class="caps"&gt;TDD&lt;/span&gt;&lt;/h2&gt;


	&lt;p&gt;Anyone who continues to think that &lt;span class="caps"&gt;TDD&lt;/span&gt; slows you down is living in the stone age.  Sorry, that&amp;#8217;s just the truth.  &lt;span class="caps"&gt;TDD&lt;/span&gt; does not slow you down, it speeds you up.&lt;/p&gt;


	&lt;p&gt;Look, &lt;span class="caps"&gt;TDD&lt;/span&gt; is not my religion, it is one of my &lt;em&gt;disciplines&lt;/em&gt;.  It&amp;#8217;s like &lt;em&gt;dual entry bookkeeping&lt;/em&gt; for accountants, or &lt;em&gt;sterile procedure&lt;/em&gt; for surgeons.  Professionals adopt such disciplines because they understand the theory behind them, and have directly experienced the benefits of using them.&lt;/p&gt;


	&lt;p&gt;I have experienced the tremendous benefit that &lt;span class="caps"&gt;TDD&lt;/span&gt; has had in my work, and I have observed it in others.  I have seen and experienced the way that &lt;span class="caps"&gt;TDD&lt;/span&gt; helps programmers conceive their designs.  I have seen and experienced the way it documents their decisions.  I have seen and experienced the decouplings imposed by the tests, and I have seen and experienced the fearlessness with which TDDers can change and clean their code.&lt;/p&gt;


	&lt;p&gt;To be fair, I don&amp;#8217;t think &lt;span class="caps"&gt;TDD&lt;/span&gt; is &lt;em&gt;always&lt;/em&gt; appropriate.  There are situations when I break the discipline and write code before tests.  I&amp;#8217;ll write about these situations in another blog.  However, these situations are few and far between.  In general, for me and many others, &lt;span class="caps"&gt;TDD&lt;/span&gt; is a way to go fast, well, and sure.&lt;/p&gt;


	&lt;p&gt;The upshot of all this is simple.  &lt;span class="caps"&gt;TDD&lt;/span&gt; is a professional discipline.  &lt;span class="caps"&gt;TDD&lt;/span&gt; works.  &lt;span class="caps"&gt;TDD&lt;/span&gt; makes you faster.  &lt;span class="caps"&gt;TDD&lt;/span&gt; is not going away.  And anyone who has not &lt;em&gt;really&lt;/em&gt; tried it, and yet claims that it would slow them down, is simply being willfully ignorant.  I don&amp;#8217;t care if your name is Don Knuth, Jamie Zawinski, Peter Seibel, or Peter Pan.  Give it a &lt;em&gt;real&lt;/em&gt; try, and &lt;em&gt;then&lt;/em&gt; you have the right to comment.&lt;/p&gt;


	&lt;p&gt;Let me put this another way.  And now I&amp;#8217;m talking directly to those who make the claim that &lt;span class="caps"&gt;TDD&lt;/span&gt; would slow them down.  Are you really such a good programmer that you don&amp;#8217;t need to thoroughly check your work?  Can you conceive of a better way to check your work than to express your intent in terms of an executable test?  And can you think of a better way to ensure that you can write that test other than to write it first?&lt;/p&gt;


	&lt;p&gt;If you can, then I want to hear all about it.  but I don&amp;#8217;t want to hear that you write a few unit tests after the fact.  I don&amp;#8217;t want to hear that you manually check your code.  I don&amp;#8217;t want to hear that you &lt;em&gt;do design&lt;/em&gt; and therefore don&amp;#8217;t need to write tests.  Those are all stone-age concepts.  I know.  I&amp;#8217;ve been there.&lt;/p&gt;


	&lt;p&gt;So there. &amp;lt;grin&amp;gt;&lt;/p&gt;


	&lt;h2&gt;The Design Pattern Religion&lt;/h2&gt;


	&lt;p&gt;Tim Bray said:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;My experience suggests that there are few surer ways to doom a big software project than via the Design Patterns religion.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;He&amp;#8217;s right of course.  The Design Patterns &lt;em&gt;religion&lt;/em&gt; is a foul bird that ravages teams and cuts down young projects in their prime.  But let&amp;#8217;s be clear about what that religion is.  The Design Patterns religion is the ardent belief that the use of design patterns is &lt;em&gt;good&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a clue.  Design Patterns aren&amp;#8217;t good.  They also aren&amp;#8217;t bad.  They just are.  Given a particular software design situation, there may be a pattern that fits and is beneficial.  There may also be patterns that would be detrimental.  It&amp;#8217;s quite possible that none of the currently documented patterns are appropriate and that you should close the book and just solve the problem.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s another clue.  You don&amp;#8217;t &lt;em&gt;use&lt;/em&gt; patterns.  You don&amp;#8217;t &lt;em&gt;apply&lt;/em&gt; patterns.  Patterns just are.  If a particular pattern is appropriate to solve a given problem, then it will be &lt;em&gt;obvious&lt;/em&gt;.  Indeed it is often &lt;em&gt;so&lt;/em&gt; obvious that you don&amp;#8217;t realize that the pattern is in place until you are done.  You look &lt;em&gt;back&lt;/em&gt; at your code and realize: &amp;#8220;Oh, that&amp;#8217;s a Decorator!&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;So am I saying that Design Patterns are useless?&lt;/p&gt;


	&lt;p&gt;NO!  I want you to read the patterns books.  I want you to know those patterns inside and out.  If I point at you and say &amp;#8220;Visitor&amp;#8221; I want you at the board drawing all the different variants of the pattern without hesitation.  I want you to get all the names and roles right.  I want you to &lt;em&gt;know&lt;/em&gt; patterns.&lt;/p&gt;


	&lt;p&gt;But I don&amp;#8217;t want you to &lt;em&gt;use&lt;/em&gt; patterns.  I don&amp;#8217;t want you to &lt;em&gt;believe&lt;/em&gt; in patterns.  I don&amp;#8217;t want you to make patterns into a religion.  Rather I want you to be able to recognize them when they appear, and to &lt;em&gt;regularize&lt;/em&gt; them in your code so that others can recognize them too.&lt;/p&gt;


	&lt;p&gt;Design Patterns have a &lt;em&gt;huge&lt;/em&gt; benefit.  They have &lt;em&gt;names&lt;/em&gt;.  If you are reading code, and you see the word &amp;#8220;Composite&amp;#8221;, and if the author took care to regularize the code to the accepted names and roles of the &amp;#8220;Composite&amp;#8221; pattern, then you will &lt;em&gt;know&lt;/em&gt; what that part of the code is doing instantly.  And &lt;em&gt;that&lt;/em&gt; is powerful!&lt;/p&gt;


	&lt;h2&gt;Minimizing Concurrency.&lt;/h2&gt;


	&lt;p&gt;In my first &lt;a href="http://blog.objectmentor.com/articles/2009/09/24/the-duct-tape-programmer"&gt;Duct Tape blog&lt;/a&gt; I made the statement:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;I found myself annoyed at Joel&amp;rsquo;s notion that most programmers aren&amp;rsquo;t smart enough to use templates, design patterns, multi-threading, &lt;span class="caps"&gt;COM&lt;/span&gt;, etc. I don&amp;rsquo;t think that&amp;rsquo;s the case. I think that any programmer that&amp;rsquo;s not smart enough to use tools like that is probably not smart enough to be a programmer period.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Tim responds with:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;...multi-threading is part of the problem, not part of the solution; that essentially no application programmer understands threads well enough to avoid deadlocks and races and horrible non-repeatable bugs. And that &lt;span class="caps"&gt;COM&lt;/span&gt; was one of the most colossal piles of crap my profession ever foisted on itself.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Is concurrency really part of the problem?  Yes!  Concurrency is a &lt;em&gt;really big&lt;/em&gt; part of the problem.  Indeed, the first rule of concurrency is: &lt;em&gt;&lt;span class="caps"&gt;DON&lt;/span&gt;&amp;#8217;T&lt;/em&gt;.  The second rule is: &lt;em&gt;&lt;span class="caps"&gt;REALLY&lt;/span&gt;, DON&amp;#8217;T&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;The problem is that some times you have no choice.  And in those situations, where you absolutely must use concurrency, &lt;em&gt;you should know it inside and out!&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;I completely and utterly reject the notion that &lt;em&gt;ignorance&lt;/em&gt; is the best defense.  I reject that &lt;em&gt;lack of skill&lt;/em&gt; can &lt;em&gt;ever&lt;/em&gt; be an advantage.  So I want you to &lt;em&gt;know&lt;/em&gt; concurrency.  I want to shout &amp;#8220;Dining Philosophers&amp;#8221; and have you run to the board without hesitation and show me all the different solutions.  If I holler &amp;#8220;Deadlock&amp;#8221;, I want you to quickly identify the causes and solutions.&lt;/p&gt;


	&lt;p&gt;Here&amp;#8217;s a clue.  If you want to avoid using something, &lt;em&gt;know&lt;/em&gt; that something &lt;em&gt;cold&lt;/em&gt;.&lt;/p&gt;


	&lt;h2&gt;Sudoku&lt;/h2&gt;


	&lt;p&gt;At the end of his blog, Peter jumps on the pile of bodies already crushing Ron Jeffries regarding the Sudoku problem from July of 2006.&lt;/p&gt;


	&lt;p&gt;I find the pile-up disturbing.  Ron had the courage to fail in public.  Indeed he announced up front that he might &amp;#8220;crash and burn&amp;#8221;.  And yet he got lambasted for it by people who hid behind someone else&amp;#8217;s work.  The responses to Ron&amp;#8217;s tutorial blogs were completely unfair because the authors of those blogs had everything worked out for them by Dr. Peter Norvig before they published their screeds.  They were comparing apples to oranges because their responses were about the &lt;em&gt;solution&lt;/em&gt; whereas Ron&amp;#8217;s blogs were about the &lt;em&gt;process&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;Which one of us has not gone down a rat-hole when hunting for a solution to a complex problem?  Let &lt;em&gt;that&lt;/em&gt; person write the first blog.  Everyone else ought to be a bit more humble.&lt;/p&gt;


	&lt;p&gt;Do the people on the pile think that Ron is unable to solve the Sudoku problem?  (Some have said as much.)  Then they don&amp;#8217;t know Ron very well.  Ron could code them all under the table with one hand tied behind his back.&lt;/p&gt;


	&lt;p&gt;Personal issues aside, I find the discussion fascinating in it&amp;#8217;s own right.  Ron had attempted to solve the Sudoku problem by gaining insight into that problem through the process of coding intermediate solutions.  This is a common enough &lt;span class="caps"&gt;TDD&lt;/span&gt; approach.  Indeed, the &lt;a href="http://butunclebob.com/ArticleS.UncleBob.TheBowlingGameKata"&gt;Bowling Game&lt;/a&gt; and the &lt;a href="http://butunclebob.com/ArticleS.UncleBob.ThePrimeFactorsKata"&gt;Prime Factors Kata&lt;/a&gt; are both examples where this approach can work reasonably well.&lt;/p&gt;


	&lt;p&gt;This approach follows the advice of no less than Grady Booch who (quoting Heinlein) said:  &amp;#8220;&lt;em&gt;when faced with a problem you do not understand, do any part of it you do understand, then look at it again.&lt;/em&gt;&amp;#8220;&lt;/p&gt;


	&lt;p&gt;Ron was attempting to use &lt;span class="caps"&gt;TDD&lt;/span&gt; to &lt;em&gt;probe&lt;/em&gt; into the problem to see if he could gain any insight.  This technique often bears fruit.  Sometimes it does not.&lt;/p&gt;


	&lt;p&gt;Here is a classic example.  Imagine you were going to write a sort algorithm test first:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Test 1: Sort an empty array.
Solution: Return the input array.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Test 2: Sort an array with one element.
Solution: Return the input array.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Test 3: Sort an array with two elements.
Solution: Compare the two elements and swap if out of order.  Return the result.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Test 4: Sort an array with three elements.
Solution: Compare the first two and swap if out of order.  Compare the second two and swap if out of order.  Compare the first two again and swap if out of order.  Return the result.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Test 5: Sort an array with four elements.
Solution: Put the compare and swap operations into a nested loop.  Return the result.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The end result is a bubble sort.  The algorithm virtually self assembles.  If you had never heard of a bubble sort before, this simple set of tests would have driven you to implement it naturally.&lt;/p&gt;


	&lt;p&gt;Problems like Bowling, Prime Factors, and Bubble Sort hold out the interesting promise that &lt;span class="caps"&gt;TDD&lt;/span&gt; may be a way to &lt;em&gt;derive&lt;/em&gt; algorithmms from first principles!&lt;/p&gt;


	&lt;p&gt;On the other hand, what set of tests would drive you to implement a QuickSort?  There are none that I know of.  QuickSort and Sudoku may require a serious amount of introspection and concentrated thought before the solution is apparent.  They may belong to a class of algorithms that do not self-assemble like Bowling, Prime Factors, and Bubble Sort.&lt;/p&gt;


	&lt;p&gt;This &lt;a href="http://www.infoq.com/news/2007/05/tdd-sudoku"&gt;blog&lt;/a&gt; by Kurt Christensen provides all the links to the various Sudoku articles, and sums it up this way.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;span class="caps"&gt;TDD&lt;/span&gt; may not be the best tool for inventing new algorithms, it may very well be the best tool for applying those algorithms to the problem at hand.&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;Actually I think &lt;span class="caps"&gt;TDD&lt;/span&gt; is a good way to find out if an algorithm will self-assemble or not.  It usually doesn&amp;#8217;t take a lot of time to figure out which it&amp;#8217;s going to be.&lt;/p&gt;</description>
      <pubDate>Tue, 06 Oct 2009 11:07:29 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1624b718-36a6-4521-aa4e-14d5b9623dc0</guid>
      <author>Uncle Bob</author>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age</link>
      <category>Uncle Bob's Blatherings</category>
      <category>Software Craftsmanship</category>
      <category>Clean Code</category>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by joseph</title>
      <description>&lt;p&gt;Thanks for sharing this great article! That is very interesting Smile I love reading and I am always searching for informative information like this.&lt;/p&gt;</description>
      <pubDate>Tue, 09 Mar 2010 02:56:39 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:5266bfa2-2b37-4d12-89f0-3ac3e354e0d5</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-7802</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Easy Date</title>
      <description>&lt;p&gt;I wish things were that easy!&lt;/p&gt;</description>
      <pubDate>Sun, 07 Mar 2010 06:11:55 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7f838479-916d-479a-99f8-56c77dbc925a</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-7725</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Monoket</title>
      <description>&lt;p&gt;Vote for TDD&amp;#8217;s big future!&lt;/p&gt;</description>
      <pubDate>Wed, 17 Feb 2010 07:44:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:6dd8ec2a-4b21-45e4-a4e3-a7c41b099eba</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-7564</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Astrologer</title>
      <description>&lt;p&gt;Bookmarked this site and emailed it to a few friends, your post was that great, keep it up&lt;/p&gt;</description>
      <pubDate>Mon, 15 Feb 2010 14:02:38 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0f7c2631-c929-47df-9105-13327aeb2cb8</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-7556</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by digital camera brisbane</title>
      <description>&lt;p&gt;I&#8217;m impressed, you know what you&#8217;re talking about&lt;/p&gt;</description>
      <pubDate>Wed, 27 Jan 2010 01:51:30 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:6efcc621-0acd-4754-ba91-a4c30541b105</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-7323</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by lami</title>
      <description>&lt;p&gt;&lt;a href="http://www.sextoy7.com" rel="nofollow"&gt;http://www.sextoy7.com&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;shop sex!&lt;/p&gt;</description>
      <pubDate>Mon, 18 Jan 2010 02:48:18 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:fe549465-5f17-48cd-9cb3-e272345fe0ea</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-6994</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by ??????????????</title>
      <description>&lt;p&gt;dumys&lt;/p&gt;</description>
      <pubDate>Sun, 03 Jan 2010 09:59:32 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:44ee76cc-d6ef-4aec-9ac5-0d5e923b530d</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-6722</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Adrian</title>
      <description>&lt;p&gt;My remarks regarding:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;How do you respond to this Microsoft study saying that TDD results in fewer bugs, but longer development time&amp;#8221;&lt;/p&gt;


	&lt;p&gt;TDD = longer development time (~40%) = fewer defects = less time for bug fixing = The total time spent in developing an US is smaller because what we lose in development we gain by spending less time in bug fixing.&lt;/p&gt;


	&lt;p&gt;And think about your reputation when the client sees an &amp;#8220;null reference set to an instance of an object&amp;#8221; exception.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Nov 2009 02:23:30 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:5dc12cca-3020-4300-a225-7d1a8e9d7026</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-5010</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Adrian</title>
      <description>&lt;p&gt;I don;t understand why we speak about developing speed when we speak about TDD.&lt;/p&gt;


	&lt;p&gt;In my opinion, the main goal of TDD is not &amp;#8220;increase productivity&amp;#8221;. I never think at TDD as a productivity booster. For me TDD is a guarantee offered to myself and to the client that my work is well done. Is a way to protect my reputation.&lt;/p&gt;


	&lt;p&gt;So, in my opinion, speeding or slowing the development process when we speak about TDD is meaningless.&lt;/p&gt;</description>
      <pubDate>Thu, 05 Nov 2009 02:17:15 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a0b2ca2b-e488-47b7-9238-fdd7de2eb536</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-5009</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Mohammad Azam</title>
      <description>&lt;p&gt;TDD is awesome and there is no doubt about it. It gives you confidence to make changes and in the long run it proves to be very useful.&lt;/p&gt;


	&lt;p&gt;But then there are some straight forward projects like &amp;#8220;Building Discussion Boards&amp;#8221;, &amp;#8220;Building Knowledge based WebSite&amp;#8221; to host articles and stuff that does not require TDD approach.&lt;/p&gt;


	&lt;p&gt;The reason that they don&amp;#8217;t require TDD is that there is no complexity in the code. Everything is so straight forward.&lt;/p&gt;


	&lt;p&gt;Bottom line is that the domain will dictate if TDD is required or not. For complex domain TDD should be mandatory but for simple projects it MIGHT be an overkill.&lt;/p&gt;


	&lt;p&gt;Thanks,
Azam&lt;/p&gt;</description>
      <pubDate>Wed, 04 Nov 2009 13:17:06 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:11169d01-9e97-4c3e-9384-d5fd8e417baa</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-5006</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by maddin</title>
      <description>&lt;p&gt;if you compare TDD with the hygiene practices a surgeon does, i think its not entirely fair. If a surgeon does not wash his hands before a surgery, the chance is almost 100% the patient will suffer. However, i have written lots of code and it works till today and i did not do TDD as it did not exist in its current form. So, absence of TDD is not life threatening, you can succeed without it.&lt;/p&gt;


	&lt;p&gt;Bottom Line: TDD is a tool that i use when appropriate. There are cases when its not appropriate. I expect an real professional to look at the problem and pick the right tools to solve the problem most effectively. And i don&amp;#8217;t agree that TDD makes you a better programmer. Its the other way round, if you are a good programmer you adopt techniques like TDD. If you are a lame coder no tool nor technique will save you.&lt;/p&gt;


	&lt;p&gt;just my 2 cent.&lt;/p&gt;</description>
      <pubDate>Thu, 29 Oct 2009 04:28:20 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5d070e7b-7f6c-4453-b714-e96ddedab57e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4939</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Norbert</title>
      <description>&lt;p&gt;I read Spolkys article and thought, well, he has some points. I&amp;#8217;d never thought what kind of blogstorm he&amp;#8217;d raise with this.&lt;/p&gt;


	&lt;p&gt;Folks, please, do not be religious about this. If TDD helps you, great! Keep it up. Personally, I try to work like Peter Norvig and Knuth&amp;#8212;though I know I&amp;#8217;ll never play at their level. To me, TDD (yes, I tried) seems kinda cool if your code can be handled like a black box with nice interfaces that are &lt;strong&gt;not&lt;/strong&gt; crossing system boundaries or user interfaces and if you are not trying develop an algorithm. You can only solve problems that you really do understand.&lt;/p&gt;


	&lt;p&gt;For all those TDD evangelists out there who cannot stop saving the poor sheep out there (like myself), why don&amp;#8217;t you guys gather the evidence that TDD is really, truly producing more stable and better code? Your claims should be measurable. Repeating them does not help. You should have some statistics that count applications crashes and whatnot in order to solidify your claims. Remember: People like me do not try to convince you that TDD is bad, but that we simply do not buy into this as religiously as you do. And we do not call you names, ok?&lt;/p&gt;


	&lt;p&gt;Until then, pretty please, stop preaching and state the facts and your conclusions. You never know, you actually might win me over, but, sorry to say, the tone in these discussions is revolting.&lt;/p&gt;</description>
      <pubDate>Thu, 29 Oct 2009 04:06:12 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:2687919d-ba60-408b-87ef-19de8c75089c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4938</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Antony G</title>
      <description>&lt;p&gt;Wow &amp;#8211; feel the love in these comments.&lt;/p&gt;


	&lt;p&gt;The simplest thing I could suggest to people detracting the effectiveness of TDD is to simply try it. Then try to live without it.&lt;/p&gt;


	&lt;p&gt;I can only speak out of personal experience, but to me this is the clincher.&lt;/p&gt;</description>
      <pubDate>Wed, 14 Oct 2009 04:59:49 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1b8d3ce7-8586-4db4-88ff-85f917b8bdb2</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4742</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Christopher Svec</title>
      <description>&lt;p&gt;How do you respond to this Microsoft study saying that TDD results in fewer bugs, but longer development time:&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://research.microsoft.com/en-us/projects/esm/nagappan_tdd.pdf" rel="nofollow"&gt;http://research.microsoft.com/en-us/projects/esm/nagappan_tdd.pdf&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;They say they saw 40-90% lower defect density with TDD, but 15-35% increase in initial development time.&lt;/p&gt;


	&lt;p&gt;(though the development time number was merely an estimate, as opposed to a measured number)&lt;/p&gt;</description>
      <pubDate>Sun, 11 Oct 2009 23:05:25 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b32cfb98-0927-4d90-be96-2e823ceddb09</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4658</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Jake</title>
      <description>&lt;p&gt;&amp;#8220;I think that any programmer that&#8217;s not smart enough to use tools like that is probably not smart enough to be a programmer period.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;I totally agree with you on that. However, we can&amp;#8217;t ignore reality. How many programmers are out there? and how many of them are really good at those tools? So if we kick them out of the industry just because they aren&amp;#8217;t smart enough to be a prammer, this industry will collapse&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 17:12:49 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a94b2078-74a4-4b23-8ede-f4a8c687158f</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4622</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Cedric</title>
      <description>&lt;p&gt;James, you seem to assume that there are only two states for code: &#8220;written with TDD&#8221; and &#8220;with no tests&#8221;.&lt;/p&gt;


	&lt;p&gt;There is a third state, &#8220;written with tests last&#8221;, and my claim is simply that millions of lines of code were written this way and that this code is working just fine.&lt;/p&gt;


	&lt;p&gt;Mocking developers and companies that write code this way and calling them &#8220;unprofessional&#8221; is precisely what makes people think that there is a disconnect between the TDD crowd and the rest of the world.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 15:15:56 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:be3309a5-87ff-4330-9b4a-633fb21da5c4</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4616</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Cedric</title>
      <description>&lt;p&gt;By the way, thanks for rectifying the tone in your second post.&lt;/p&gt;


	&lt;p&gt;The constant use of deprecating adjectives for people who don&amp;#8217;t use TDD (unprofessional, cowboy coding, etc&amp;#8230;) doesn&amp;#8217;t really help when you are trying to convince.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 14:58:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:aa82d76a-537a-4c71-a78a-4bda76e31948</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4615</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Cedric</title>
      <description>&lt;p&gt;James, you seem to assume that there are only two states for code:  &amp;#8220;written with TDD&amp;#8221; and &amp;#8220;with no tests&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;There is a third state, &amp;#8220;written with tests last&amp;#8221;, and my claim is simply that millions of lines of code were written this way and that this code is working just fine.&lt;/p&gt;


	&lt;p&gt;Mocking developers and companies that write code this way and calling them &amp;#8220;unprofessional&amp;#8221; is precisely what makes people think that there is a disconnect between the TDD crowd and the rest of the world.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 14:56:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:de900bae-4a49-4b87-8475-5a49af2a9325</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4614</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by James Carr</title>
      <description>&lt;p&gt;I might have came off in kind of a condescending tone. My point is &amp;#8220;my&amp;#8221; experience has taught me to value TDD over DDT. Maybe this is the opposite for you, but I know that it works well for me and the code I have written without doing TDD is always a bit of a mess.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 13:51:29 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4492863d-1915-48fb-8f14-27104ac66812</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4613</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by James Carr</title>
      <description>&lt;p&gt;Cedric: What!? How can you prove to me your code is even needed if you haven&amp;#8217;t proved the need for it to exist with a well defined example? How can you refactor without having to worry about breaking some unapparent piece of functionality that will cost a company millions of dollars?&lt;/p&gt;


	&lt;p&gt;I work both on new projects and legacy projects all the time, some done with TDD and some that were built by hacking away with no tests. I find the latter to be a lot more difficult to work with.&lt;/p&gt;


	&lt;p&gt;Maybe you just don&amp;#8217;t have the industry experience that has taught me that code written test first is always a lot more cleaner and easier to work with than code that is not.&lt;/p&gt;


	&lt;p&gt;Or maybe I should just listen to you and see the beautiful light of cowboy coding? :)&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 12:02:28 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ad566e77-2b7c-417f-a3dd-5a6109b94e51</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4610</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Cedric</title>
      <description>&lt;p&gt;James: thousands of companies are producing very good software every day without using TDD (and sometimes without even using automated testing).&lt;/p&gt;


	&lt;p&gt;Calling them unprofessional is not just disrespectful, it makes you sound like a zealot&amp;#8230;&lt;/p&gt;


	&lt;p&gt;And I understand that you and Rob live off the TDD industry, and as such, you are surrounded with companies that do use TDD, but hopefully you realize that you are seeing the inside of a bubble.&lt;/p&gt;


	&lt;p&gt;TDD is still far from being mainstream and so far, remains confined to conferences, books and a very small subset of companies.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 11:10:32 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ad250e2b-9755-43a2-8c39-66b8cd9c1d36</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4608</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by James Carr</title>
      <description>&lt;p&gt;Good response Uncle Bob. How people can continue to think that TDD is some silly fad continues to amaze me. Anyone with an ounce of experience would know that TDD helps produce clean, professional code that has been proven that it needs to exist thanks to well defined examples.&lt;/p&gt;


	&lt;p&gt;It isn&amp;#8217;t just silly, but unprofessional imho not to do TDD. Deal with tons of legacy code packed with 2000 line classes and no tests around it and please someone try to tell me that TDD is a bad thing.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Oct 2009 08:17:48 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:aed4c651-82ec-4478-9012-72034b88aaba</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4599</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Stone Age Programmer</title>
      <description>&lt;p&gt;Re 42&amp;#8217;s comments: Yes, this sounds like a discussion between evolutionists and the creationist, with the difference that the TDD programmers are playing the role of crearionists &amp;#8211; asking everybody to &amp;#8220;faithfully&amp;#8221; accept their claims that TDD is indeed better. Evolutionists (stone age programmers) want to see evidence.&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;If you knew Uncle Bob's political and religious views, it would be clear to you that he falls solidly on the side of the conservatives.&lt;/code&gt;&lt;/pre&gt;</description>
      <pubDate>Fri, 09 Oct 2009 07:37:11 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e16a0f54-6fae-416c-81a9-23c8940f9cc9</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4597</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by Paul Thor</title>
      <description>&lt;p&gt;its to easy to be negative! When someone is trying to do something positive.&lt;/p&gt;</description>
      <pubDate>Thu, 08 Oct 2009 15:36:02 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8cb16404-c232-45f4-a76e-9cb58194700e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4565</link>
    </item>
    <item>
      <title>"Echoes from the Stone Age" by 42</title>
      <description>&lt;p&gt;Reading all these comments, it reminds me of an evolutionist trying to explain the concepts of Darwin to creationists. TDD is there to protect us! If you are lucky enough to have a decent spec, that will NEVER change, code without it! But the rest of us have to deal with horrible, ever changing specs. Agile and tdd is a worm digging through the path of least resistance (see YAGNI). Non-TDD coders use a bulldozer, leaves gaping holes everywhere and someone else ends up rewriting it all.&lt;/p&gt;</description>
      <pubDate>Thu, 08 Oct 2009 04:35:58 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:58e8f233-cbec-4934-98f0-f36b8507744c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/06/echoes-from-the-stone-age#comment-4542</link>
    </item>
  </channel>
</rss>
