I Cringe

schwern on 2003-05-04T04:59:07

[cogent showed me this one]

I, Cringley demonstrates what happens when you open your mouth REAL WIDE about a topic about which you know nothing.

Cringley tries to talk about the economics of Open Source It ain't no Homesteading in the Noosphere. Towards the end there's some rehashing of the old "there's too many projects, its all confusing and thinning us out" whinging that misreads Open Source as some sort of dispersed business venture. Feh. But that's not what caused my eyeballs to drop into my stomach.

Look how many Open Source projects have updated versions and the changes read "cleaned 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't keep his hands off the code even when he isn't 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's ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.

ALERT MARTIN FOWLER! Refactoring is all just an ego trip! Hoooboy. I've never seen anyone attempt to turn programmer hubris on its ear that badly before. Yes, we should not attempt to improve the design of existing code for fear we might break something. Spagetti code all 'round, boys. I wish I could offer Cringely a free pass to a testing tutorial so the man can have a little confidence, geez. A little less harshly is to say that Cringely doesn't really understand Refactoring, its just "cleaning up code for no apparent purpose". A lot of people don't understand Refactoring, but they don't have a column on PBS.

Even better is what cogent has just coined: "Cringely's Second Law of Softwaredynamics: Software only ever goes from WORKING to NON-WORKING".

Since all changes to WORKING code become NON-WORKING code than no changes can be made to WORKING code which produce WORKING code (unless we allow that one can go fro NON-WORKING to WORKING). Taking this to its illogical extreme, Cringely is proposing a Creationist view of software development! WORKING code cannot be created, it can only become NON-WORKING code! All WORKING code must have existed at the beginning of time!


Possibly Partly Correct

chromatic on 2003-05-04T08:20:23

I saw that earlier today and sent Cringely a lengthy e-mail. Here's the conclusion:

Now rewriting code for the sake of rewriting (without a concrete goal in mind) or refactoring without tests are both silly and oughtn't be done and happen all too often in the open source world. They also happen in the proprietary software world too, unfortunately.

We just hear about them more in the open source world; there's less to hide.

Good on you for suggesting a free day pass to Testing Boot Camp, though.

Re:Possibly Partly Correct

kjones4 on 2003-05-04T08:42:22

*Any* time I've cleaned up code, it's been to fix known problems. Maybe I have a different definition of cleaning up.

Re:Possibly Partly Correct

pudge on 2003-05-07T03:58:38

And one of those problems is often that IT IS UNMAINTAINABLE as-is, and NEEDS TO BE MAINTAINED. "This car works, despite the duct tape on the hoses ... if I replace the hoses, gosh darnit, the car might stop working!"