<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CyberFOX Software Inc. &#187; BDD</title>
	<atom:link href="http://cyberfox.com/blog/category/bdd/feed" rel="self" type="application/rss+xml" />
	<link>http://cyberfox.com/blog</link>
	<description>Coding, Connections, and Other Bloggy Bits of Goodness</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:21:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>TDD: The &#8216;Logans Run&#8217; of Software Development&#8230;</title>
		<link>http://cyberfox.com/blog/35-tdd-the-logans-run-of-software-development</link>
		<comments>http://cyberfox.com/blog/35-tdd-the-logans-run-of-software-development#comments</comments>
		<pubDate>Sat, 06 Oct 2007 03:09:23 +0000</pubDate>
		<dc:creator>Cyberfox</dc:creator>
				<category><![CDATA[BDD]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.vixen.com/blog/2007/10/05/35</guid>
		<description><![CDATA[Greetings, I want to start by making it clear that I know why testing is good, and that it&#8217;s really important, but I think that the TDD proponents are glossing over the most difficult part of a project. I would very much like someone to address the issue of modifying code that is not new, [...]]]></description>
			<content:encoded><![CDATA[<p>Greetings,</p>
<p>I want to start by making it clear that I know <strong>why</strong> testing is good, and that it&#8217;s <em>really</em> important, but I think that the TDD proponents are glossing over the most difficult part of a project.</p>
<p>I would very much like someone to address the issue of modifying code that is <strong>not new</strong>, and <strong>not already perfectly tested</strong> (or even completely specified!).  That is to say, the vast majority of actual code out there.</p>
<p>TDD <em>is</em> intensely focused on the early development phase (or at least TDD proponents are), and on writing <em>new</em> code, as opposed to what the majority of software developers actually do; maintain and update existing code.</p>
<p>It&#8217;s really straightforward (and fun!) to write entirely new code in the TDD fashion.  I&#8217;ve done it for about 3 decent sized projects now (one Java and two Rails), and it can be really pleasant, and a great focusing tool.  No arguments there; when you do it from the start, it&#8217;s really wonderful.</p>
<p>On the other hand, when you&#8217;re making incremental changes here and there throughout a very large, pre-existing, only partially tested codebase, it&#8217;s vastly less pleasant to try and do it test-first.</p>
<p>The Ruby Autotest tool is not such a pleasant tool at that point.  You stop wanting to write failing tests, because fixing it means autotest is going to try to do a <em>full retest</em>, which <strong>sucks</strong> for developer flow&#8230;  Even if your tests take &#8216;only&#8217; 5 minutes to run, breaking a test makes you wince, and writing a failing test and then fixing it is for masochists only (and ones who want to miss the project milestones at that).</p>
<p>The focus of <em>every</em> presentation (<a title="How I learned to love testing..." href="http://www.railsenvy.com/2007/10/4/how-i-learned-to-love-testing-presentation">this one</a> included) I&#8217;ve seen on TDD being on the <em>start</em> of a project makes me wonder why nobody&#8217;s talking about later in projects&#8230;</p>
<p>Nearly every developer out there is going to face a large codebase with poor testing coverage, and will have to make changes that aren&#8217;t entirely new code, to existing code that isn&#8217;t entirely tested.  Does TDD have a solution for the &#8216;large, crufty codebase&#8217;, or is it suited only for 1.0 versions, small projects, and projects that were TDD from the start?</p>
<p>This isn&#8217;t really a rhetorical question for me.  I <em>really</em> want to get my organization&#8217;s culture more oriented towards testing.  I&#8217;ve got buy-in from lots of people that when they&#8217;re writing new modules and services, they&#8217;ll do it test-first (or at least &#8216;test around the same time as the code&#8217;, which is all I can ask for at this point), and that&#8217;s great.  But has anybody developed <strong>any</strong> tools to make TDD better suited to <em>maintenance</em> and improving existing code?</p>
<p>&#8211;  Morgan</p>
<p>p.s.  I&#8217;m skipping BDD entirely, because BDD is so hardcore in the &#8216;only for already very well specified solutions&#8217; camp, that it&#8217;s meaningless for this question.  I&#8217;m also using &#8216;TDD&#8217; and &#8216;test-first&#8217; interchangeably, and I probably shouldn&#8217;t be.</p>
<p>p.p.s.  The title refers to how in Logans Run, everybody was destroyed at 30, so there weren&#8217;t any old people. In the world of TDD (or at least TDD presentations), there are no old projects, every one is fresh and new, so the issues that come with an old code base are never addressed.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyberfox.com/blog/35-tdd-the-logans-run-of-software-development/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

