<?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: Total Loss</title>
	<link>http://blog.qualityaspect.com/2006/11/21/total-loss/</link>
	<description>Lidor Wyssocky's Blog on Optimizing Software Development</description>
	<pubDate>Fri, 16 May 2008 15:50:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>

	<item>
 		<title>Comment on Total Loss by: Vinyl</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-36787</link>
		<pubDate>Thu, 06 Mar 2008 23:57:36 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-36787</guid>
					<description>Thank you for the wonderful article. You've given me something to think about.</description>
		<content:encoded><![CDATA[	<p>Thank you for the wonderful article. You&#8217;ve given me something to think about.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Angie</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-36744</link>
		<pubDate>Wed, 05 Mar 2008 20:59:19 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-36744</guid>
					<description>I think the most important step is to be realistic in what you can and cannot do.</description>
		<content:encoded><![CDATA[	<p>I think the most important step is to be realistic in what you can and cannot do.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Home Developers Repair Maintenance</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-34853</link>
		<pubDate>Mon, 04 Feb 2008 13:53:09 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-34853</guid>
					<description>&lt;strong&gt;How To Repair Bad Credit By Refinancing Your Home Mortgage&lt;/strong&gt;

One of the best ways to repair your bad credit is by refinancing your home mortgage. The difficult part is finding a lender for your home mortgage since your credit history is not good. Forget about the banks and other financial institutions, they will...</description>
		<content:encoded><![CDATA[	<p><strong>How To Repair Bad Credit By Refinancing Your Home Mortgage</strong></p>
	<p>One of the best ways to repair your bad credit is by refinancing your home mortgage. The difficult part is finding a lender for your home mortgage since your credit history is not good. Forget about the banks and other financial institutions, they will&#8230;
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: ade</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-16999</link>
		<pubDate>Sun, 10 Jun 2007 21:43:25 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-16999</guid>
					<description>If you are looking for a &lt;a href=&quot;http://www.worldtopix.com/used_cars.html&quot; rel=&quot;nofollow&quot;&gt;used car&lt;/a&gt; keep a few guidelines in your mind and you could just drive away with a great car....&lt;a href=&quot;http://www.worldtopix.com/used_cars.html&quot; rel=&quot;nofollow&quot;&gt;read more&lt;/a&gt;</description>
		<content:encoded><![CDATA[	<p>If you are looking for a <a href="http://www.worldtopix.com/used_cars.html" rel="nofollow">used car</a> keep a few guidelines in your mind and you could just drive away with a great car&#8230;.<a href="http://www.worldtopix.com/used_cars.html" rel="nofollow">read more</a>
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Bill</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-16182</link>
		<pubDate>Fri, 25 May 2007 19:04:39 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-16182</guid>
					<description>There is a way to obtain a used car's &quot;story&quot; - simply visit Carfax.com and purchase a vehicle history report. You'll be able to see how many times the car was titled, where, when, mileage at titlement as well as any accidents that were reported on the car. In addition to an inspection by a qualified mechanic, this is about the best one can do.</description>
		<content:encoded><![CDATA[	<p>There is a way to obtain a used car&#8217;s &#8220;story&#8221; - simply visit Carfax.com and purchase a vehicle history report. You&#8217;ll be able to see how many times the car was titled, where, when, mileage at titlement as well as any accidents that were reported on the car. In addition to an inspection by a qualified mechanic, this is about the best one can do.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Mike-O-Matic &#187; Efficiency isn&#8217;t Why We&#8217;re Here</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4662</link>
		<pubDate>Mon, 27 Nov 2006 16:10:42 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4662</guid>
					<description>[...] Lidor&amp;#8217;s blog had an interesting post the other day about how code ages over time. He urges programmers to treat inherited or older code suspiciously, and to not rule out rewrites. Used code. Used code is a lot like a used car. I’m really paranoid when it comes to used code. Code someone else wrote. Code someone else took care of. Did the previous owner of the code make sure the code works as expected? Did he write the code such that I can work with it as needed? And how many owners did that code have anyway, and who were they? [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] Lidor&#8217;s blog had an interesting post the other day about how code ages over time. He urges programmers to treat inherited or older code suspiciously, and to not rule out rewrites. Used code. Used code is a lot like a used car. I’m really paranoid when it comes to used code. Code someone else wrote. Code someone else took care of. Did the previous owner of the code make sure the code works as expected? Did he write the code such that I can work with it as needed? And how many owners did that code have anyway, and who were they? [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: warpedvisions.org &#187; Blog Archive &#187; Code reuse is like a dirty sock?</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4595</link>
		<pubDate>Sat, 25 Nov 2006 23:51:15 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4595</guid>
					<description>[...] Code reuse is like a dirty sock? Another explanation for the programmer&amp;#8217;s illness, not-invented-here, code reuse == used car. This is superstitious horse shit, on both accounts: code and cars reuse fine, if you know what you&amp;#8217;re doing (and how both work). [...]</description>
		<content:encoded><![CDATA[	<p>[&#8230;] Code reuse is like a dirty sock? Another explanation for the programmer&#8217;s illness, not-invented-here, code reuse == used car. This is superstitious horse shit, on both accounts: code and cars reuse fine, if you know what you&#8217;re doing (and how both work). [&#8230;]
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: jk</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4574</link>
		<pubDate>Sat, 25 Nov 2006 10:01:26 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4574</guid>
					<description>A better analogy would be a &quot;used house&quot;.  People don't ever call the house a used house, but, it is.  Over time, a house tends to accrue &quot;improvements&quot;.  Maybe the fixtures get replaced, or windows get installed.  Maybe the house gets its floorplan modified.  Maybe the laws change, and when you do a modification, you have to do a whole series of changes to comply with the law.  Generally, these are permanent changes.  That's similar to software -- if you add it, you have to live with it.

(There are things in houses that wear out, but a lot of things last 10+ years.  That's what's like software.)

If the previous owner had some sense, the modifications will generally not stand out.  They'll fit in, pretty much, invisibly.  They might even repair defects in the original design, without adding features.

Most houses, however, don't fare so well.  They get ugly additions, or trendy &quot;remodels&quot; that don't really improve things.  Maybe they don't degrade the house, but, they may not really help it either.  Some additions, however, really damage the house, by messing with air flow, creating new areas to clean up, taking away from the garden space, or making the house look ugly.  

A few years back, the popular remodel was to install ceramic tile floors everywhere.  Those floors are cold, hard and basically unpleasant to step on.  It's an upgrade that seemed like a good idea at the time, but will eventually be an expensive liability once people realize the problems.  Worst of all, they last forever, making you feel like a fool if you dare to remove it.

I'm sure we've coded a ceramic tile floor into some project at some time or other.

People mocked me (and continue to mock me) when I express a preference for vinyl flooring in the bathroom, simply because it's the warmest non-carpet material.

I can sometimes sense derision when I tell people I still use Perl in addition to other languages.  I think Cold Fusion has a lot of good ideas, too.  I said the same for Lisp, but that gets some respect these days.  Lisp is like the gas range -- companies keep trying to make new rangetops with fancy new technology, but people keep returning to gas or propane... because they want to cook with fire.</description>
		<content:encoded><![CDATA[	<p>A better analogy would be a &#8220;used house&#8221;.  People don&#8217;t ever call the house a used house, but, it is.  Over time, a house tends to accrue &#8220;improvements&#8221;.  Maybe the fixtures get replaced, or windows get installed.  Maybe the house gets its floorplan modified.  Maybe the laws change, and when you do a modification, you have to do a whole series of changes to comply with the law.  Generally, these are permanent changes.  That&#8217;s similar to software &#8212; if you add it, you have to live with it.</p>
	<p>(There are things in houses that wear out, but a lot of things last 10+ years.  That&#8217;s what&#8217;s like software.)</p>
	<p>If the previous owner had some sense, the modifications will generally not stand out.  They&#8217;ll fit in, pretty much, invisibly.  They might even repair defects in the original design, without adding features.</p>
	<p>Most houses, however, don&#8217;t fare so well.  They get ugly additions, or trendy &#8220;remodels&#8221; that don&#8217;t really improve things.  Maybe they don&#8217;t degrade the house, but, they may not really help it either.  Some additions, however, really damage the house, by messing with air flow, creating new areas to clean up, taking away from the garden space, or making the house look ugly.  </p>
	<p>A few years back, the popular remodel was to install ceramic tile floors everywhere.  Those floors are cold, hard and basically unpleasant to step on.  It&#8217;s an upgrade that seemed like a good idea at the time, but will eventually be an expensive liability once people realize the problems.  Worst of all, they last forever, making you feel like a fool if you dare to remove it.</p>
	<p>I&#8217;m sure we&#8217;ve coded a ceramic tile floor into some project at some time or other.</p>
	<p>People mocked me (and continue to mock me) when I express a preference for vinyl flooring in the bathroom, simply because it&#8217;s the warmest non-carpet material.</p>
	<p>I can sometimes sense derision when I tell people I still use Perl in addition to other languages.  I think Cold Fusion has a lot of good ideas, too.  I said the same for Lisp, but that gets some respect these days.  Lisp is like the gas range &#8212; companies keep trying to make new rangetops with fancy new technology, but people keep returning to gas or propane&#8230; because they want to cook with fire.
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Lidor Wyssocky</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4489</link>
		<pubDate>Wed, 22 Nov 2006 20:37:01 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4489</guid>
					<description>People, people... of course you are right. Code which is left alone does not age. Software is not like a car, which won't live forever due to physical laws. 

But, you all seem to agree that maintenance (that is bad maintenance) changes the picture. And that's the point I was trying to make. 

If you get a piece of code and you assume it was well taken care of, you might be... well, wrong. That's why you have to check. Saying that any piece of existing code is better than a new one doesn't make sense. If, for example, the previous owners of the code did a lousy maintenance job, you might end up with code that requires you to invest weeks of work for each small change. You can try refactoring that mess, but this is not always possible or cost-effective. 

Joel's article and your comments are 100% right in an ideal world where most of the code out there is reasonably maintained. I'm not sure this is the reality we all work in. But in any case, it's better not to assume anything and just make sure you check the status of the code before making a decision. 

I don't like black and white rules. Unlike Joel, I try not to use phrases that begin with &quot;Never...&quot; or &quot;Always...&quot;. Just keep your mind open to the option that sometimes a rewrite is better than refactoring. 

Of course, you should do it wisely. Don't wake up one day and throw away 500K lines of code. Do it incrementally and with proper safety nets. But keep in mind that this is a valid option.

Lidor</description>
		<content:encoded><![CDATA[	<p>People, people&#8230; of course you are right. Code which is left alone does not age. Software is not like a car, which won&#8217;t live forever due to physical laws. </p>
	<p>But, you all seem to agree that maintenance (that is bad maintenance) changes the picture. And that&#8217;s the point I was trying to make. </p>
	<p>If you get a piece of code and you assume it was well taken care of, you might be&#8230; well, wrong. That&#8217;s why you have to check. Saying that any piece of existing code is better than a new one doesn&#8217;t make sense. If, for example, the previous owners of the code did a lousy maintenance job, you might end up with code that requires you to invest weeks of work for each small change. You can try refactoring that mess, but this is not always possible or cost-effective. </p>
	<p>Joel&#8217;s article and your comments are 100% right in an ideal world where most of the code out there is reasonably maintained. I&#8217;m not sure this is the reality we all work in. But in any case, it&#8217;s better not to assume anything and just make sure you check the status of the code before making a decision. </p>
	<p>I don&#8217;t like black and white rules. Unlike Joel, I try not to use phrases that begin with &#8220;Never&#8230;&#8221; or &#8220;Always&#8230;&#8221;. Just keep your mind open to the option that sometimes a rewrite is better than refactoring. </p>
	<p>Of course, you should do it wisely. Don&#8217;t wake up one day and throw away 500K lines of code. Do it incrementally and with proper safety nets. But keep in mind that this is a valid option.</p>
	<p>Lidor
</p>
]]></content:encoded>
				</item>
	<item>
 		<title>Comment on Total Loss by: Jeff Staddon</title>
		<link>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4485</link>
		<pubDate>Wed, 22 Nov 2006 18:05:26 +0000</pubDate>
		<guid>http://blog.qualityaspect.com/2006/11/21/total-loss/#comment-4485</guid>
					<description>Interesting, but flawed.   I strongly disagree with the concept that code ages.  The reason code “gets old” is simply bad maintenance practice.  New code is expensive and usually buggier than old code.  It should be avoided if at all possible.  It’s far more cost effective to maintain a code base than to re-create it over and over.  There is only one reason to replace code—if the technology changes too much.  (i.e. it won’t play with other technologies, or the personal or hardware isn’t available, lacks the tools to solve new problems, etc)

But, there are some tricks to good maintenance.  To make a system “ageless” you must never “patch on” changes to the system.  By never, I really mean NEVER.  If you put in just one patch to avoid a particularly painful re-factoring, that patch will spawn another patch and another and another.  Before too many years (or months in worst cases) a complete re-write becomes the only option. 

All maintenance changes must be seamlessly integrated into the existing system.  If the integration requires changing the system architecture--swallow the pain pill and do it.  If you do this, your system simply will not grow old.  An added bonus: if you stick to this disciplined maintenance approach, porting to a new technology will be far easier since the system architecture will clearly reflect the current business domain/requirements not a muddled mess of different versions of past requirements.</description>
		<content:encoded><![CDATA[	<p>Interesting, but flawed.   I strongly disagree with the concept that code ages.  The reason code “gets old” is simply bad maintenance practice.  New code is expensive and usually buggier than old code.  It should be avoided if at all possible.  It’s far more cost effective to maintain a code base than to re-create it over and over.  There is only one reason to replace code—if the technology changes too much.  (i.e. it won’t play with other technologies, or the personal or hardware isn’t available, lacks the tools to solve new problems, etc)</p>
	<p>But, there are some tricks to good maintenance.  To make a system “ageless” you must never “patch on” changes to the system.  By never, I really mean NEVER.  If you put in just one patch to avoid a particularly painful re-factoring, that patch will spawn another patch and another and another.  Before too many years (or months in worst cases) a complete re-write becomes the only option. </p>
	<p>All maintenance changes must be seamlessly integrated into the existing system.  If the integration requires changing the system architecture&#8211;swallow the pain pill and do it.  If you do this, your system simply will not grow old.  An added bonus: if you stick to this disciplined maintenance approach, porting to a new technology will be far easier since the system architecture will clearly reflect the current business domain/requirements not a muddled mess of different versions of past requirements.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
