IWETHEY v. 0.3.0 | TODO
1,095 registered users | 0 active users | 0 LpH | Statistics
Login | Create New User
IWETHEY Banner

Welcome to IWETHEY!

New Wouldn't be the first time. And Cringely on rewriting.
MS likes/d to redo things like driver architectures every once in a while...

This week's Cringely column at PBS has [link|http://www.pbs.org/cringely/pulpit/pulpit20030501.html|this] to say on rewriting code:

Look how many Open Source projects have updated versions and the changes read \ufffdcleaned up some code." What that really means is the programmer loves his little project, and a few fans have made him love it more, and he just NEEDS to touch it. He can\ufffdt keep his hands off the code even when he isn\ufffdt adding new features.

"Cleaning up code" is a terrible thing. Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible. The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer\ufffds ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.


I guess that means that MS isn't a professional outfit, eh? Wait, I think we already knew that... ;-)

Cheers,
Scott.
New I couldn't disagree more
Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible.
Starting with 4000 lines of brittle, inefficient, non-modular code and ending up with 1700 lines of efficient, flexible code that does the same thing, and can be easily re-used in other locations is not terrible. And yes, I've done that on code that someone else had written. (I'm sure I'd love to disavow some of the code I wrote when I first started out, so this isn't just bragging.)

Sure, if you get a comprehensive spec from day one and it never changes, odds are the code will be fairly clean on then first shot. But if, as often does "occur in nature", the coding starts before the end-user has a clear idea of what they want, and the spec changes throughout the development process, there will be sections that ought to be re-written.
===

Implicitly condoning stupidity since 2001.
New Heh.
I just emailed Cringely about the issue... which is why your response is first. ;-)
Regards,

-scott anderson

"Welcome to Rivendell, Mr. Anderson..."
New Heh indeed! Thank you both
Cringe is OK, but every once in a while he does screw the pooch.
jb4
"We continue to live in a world where all our know-how is locked into binary files in an unknown format. If our documents are our corporate memory, Microsoft still has us all condemned to Alzheimer's."
Simon Phipps, SUN Microsystems
New I've had to
I'm sure I'd love to disavow some of the code I wrote when I first started out, so this isn't just bragging

go back and modify some of my own code, a year or two later. Remember all those "comments" that "we'll never need"? I've scratched my head over many a things I coded in the past. "Now what the h..l was I thinking?"
[link|mailto:jbrabeck@attbi.com|Joe]
New And he's wrong about that.
The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer\ufffds ego trip and nothing else.
This is what regression testing is all about. So you can clean things up (which means making things more flexible, more efficient, easier to maintain, etc.) without turning it into non-working code.
Regards,

-scott anderson

"Welcome to Rivendell, Mr. Anderson..."
New I quite agree.
Being able to fearlessly and mercilessly refactor - he got that term right, at least - is one of the benefits of [link|http://www.extremeprogramming.org/|Extreme Programming]. This is possible when you have automated unit-tests - a variation of your regression tests. It's quite a buzz to completely rewrite a module and know you're not breaking anything because the unit test still runs. Especially when you achieve an order of magnitude of speed increase at the same timne. :-)

Wade.

Is it enough to love
Is it enough to breathe
Somebody rip my heart out
And leave me here to bleed
 
Is it enough to die
Somebody save my life
I'd rather be Anything but Ordinary
Please

-- "Anything but Ordinary" by Avril Lavigne.

New So what does *this* mean?
From Cringely:
"Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software."

[emphasis mine]

I thought evolution was Nature's way of refactoring.
Tom Sinclair

"Man, I love it when the complete absence of a plan comes together."
- [link|http://radio.weblogs.com/0104634/|Ernie the Attorney]
New Just received an answer from Bob.
And apparently the response to that bit of his column was so overwhelmingly negative that he's going to make an attempt in his next column to explain himself better. ;-)
Regards,

-scott anderson

"Welcome to Rivendell, Mr. Anderson..."
     Re-rewriting .Net code? - (johnu) - (11)
         Wouldn't be the first time. And Cringely on rewriting. - (Another Scott) - (8)
             I couldn't disagree more - (drewk) - (3)
                 Heh. - (admin) - (1)
                     Heh indeed! Thank you both - (jb4)
                 I've had to - (jbrabeck)
             And he's wrong about that. - (admin) - (1)
                 I quite agree. - (static)
             So what does *this* mean? - (tjsinclair)
             Just received an answer from Bob. - (admin)
         Re: Re-rewriting .Net code? - (johnu) - (1)
             It could be a lower level thing - (altmann)

Nobody can spell “fuchsia”.
100 ms