<?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 to Throw in the Towel</title>
	<atom:link href="http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/feed/" rel="self" type="application/rss+xml" />
	<link>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/</link>
	<description></description>
	<lastBuildDate>Tue, 27 Jul 2010 02:46:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Aaron Walker</title>
		<link>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/comment-page-1/#comment-489</link>
		<dc:creator>Aaron Walker</dc:creator>
		<pubDate>Mon, 06 Jul 2009 14:38:33 +0000</pubDate>
		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=257#comment-489</guid>
		<description>+1 to everything Ted said.</description>
		<content:encoded><![CDATA[<p>+1 to everything Ted said.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ted Howard</title>
		<link>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/comment-page-1/#comment-490</link>
		<dc:creator>Ted Howard</dc:creator>
		<pubDate>Thu, 02 Jul 2009 15:16:00 +0000</pubDate>
		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=257#comment-490</guid>
		<description>I find a rewrite to be hard to justify unless the code is very immature or incredibly low quality. Mature code includes special cases to fix rare bugs. When rewrites happen, those special cases are usually forgotten, thereby reintroducing the bugs. Also, a rewrite introducing its own new bugs.
Rewrites are also a delay for everyone involved. &quot;If ten people waste just ten minutes per day...you’ve lost  over 10 weeks worth of work during that project&quot; Well, if the rewrite takes 4 weeks to finish and is only 50% less buggy then you&#039;ve gained 5 weeks for others but you&#039;ve lost 4 weeks of dev time. Your gain is only 1 week, not 10. (Unless you can write code that&#039;s far superior to what exists already.)
I think about 80% of &#039;rewrite&#039; projects I&#039;ve seen never got finished. It usually comes down to two truisms. Engineers are too optimistic about their skills. Engineers are too negative about the skills of the engineers who wrote the code they have to maintain.
My suggestion: refactor. Treat &quot;bad code&quot; as a bug. Enter it to your bug database, schedule it to be fixed, then fix it not by rewriting but by morphing the code and testing along the way. Often, you can change the architecture of a codebase in-place and fix things without causing a long delay for the rest of the team. Or re-architect to allow you to rewrite a component at a time.
Of course, sometimes a rewrite is still the right choice.</description>
		<content:encoded><![CDATA[<p>I find a rewrite to be hard to justify unless the code is very immature or incredibly low quality. Mature code includes special cases to fix rare bugs. When rewrites happen, those special cases are usually forgotten, thereby reintroducing the bugs. Also, a rewrite introducing its own new bugs.<br />
Rewrites are also a delay for everyone involved. &#8220;If ten people waste just ten minutes per day&#8230;you’ve lost  over 10 weeks worth of work during that project&#8221; Well, if the rewrite takes 4 weeks to finish and is only 50% less buggy then you&#8217;ve gained 5 weeks for others but you&#8217;ve lost 4 weeks of dev time. Your gain is only 1 week, not 10. (Unless you can write code that&#8217;s far superior to what exists already.)<br />
I think about 80% of &#8216;rewrite&#8217; projects I&#8217;ve seen never got finished. It usually comes down to two truisms. Engineers are too optimistic about their skills. Engineers are too negative about the skills of the engineers who wrote the code they have to maintain.<br />
My suggestion: refactor. Treat &#8220;bad code&#8221; as a bug. Enter it to your bug database, schedule it to be fixed, then fix it not by rewriting but by morphing the code and testing along the way. Often, you can change the architecture of a codebase in-place and fix things without causing a long delay for the rest of the team. Or re-architect to allow you to rewrite a component at a time.<br />
Of course, sometimes a rewrite is still the right choice.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Walker</title>
		<link>http://thetoolsmiths.org/2009/07/02/when-to-throw-in-the-towel/comment-page-1/#comment-491</link>
		<dc:creator>Aaron Walker</dc:creator>
		<pubDate>Thu, 02 Jul 2009 14:35:22 +0000</pubDate>
		<guid isPermaLink="false">http://toolssig.wordpress.com/?p=257#comment-491</guid>
		<description>Another aspect of determining when to rewrite is how long it takes to develop code that extends or interfaces with the existing system. If your code is a central aspect of your pipeline and that pipeline will need a great deal of work for your project, there are other gains that you can use to explain why the rewrite is a sound investment.

I could go on and on, this topic reads like my day-to-day experience.</description>
		<content:encoded><![CDATA[<p>Another aspect of determining when to rewrite is how long it takes to develop code that extends or interfaces with the existing system. If your code is a central aspect of your pipeline and that pipeline will need a great deal of work for your project, there are other gains that you can use to explain why the rewrite is a sound investment.</p>
<p>I could go on and on, this topic reads like my day-to-day experience.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
