3 ms·
I disagree. My experience has been that no matter how well thought-out the first version is, there are always a few extra features added, or previously major fe
by harpastum 18y ago
I disagree. My experience has been that no matter how well thought-out the first version is, there are always a few extra features added, or previously major features abandoned. These types of changes represent a distinct shift in the structure of the program, but are often simply tacked on or hacked out, respectively.
On the other hand, this article is simply stoking the embers of the long-standing war between refactoring and rewriting, without adding a whole lot to the debate.
Some other insightful opinions on the issue:
Joel Spolsky: http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html
Jeff Atwood:
http://www.codinghorror.com/blog/archives/000684.html http://www.codinghorror.com/blog/archives/000684.html
Ronkes Agerbeek: http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode http://www.ronkes.nl/blog/?2005-04-15-neverrewritecode
- joe_the_user 18y agoActually, I wasn't saying that you should always use the first version (or that you should always use the second version) but simple that at some point you need to release and that the result you release will be imperfect(I have edited my original post to reflect this). I would actually agree that one should not rewrite existing, production code for the purposes of using it in the same application. The main reason is that the compromises that you remember as silly actually happened for important "semi-major" reasons you have forgotten about. Development can feel like a huge "rolling jello" activity but that jello-rolling produces a "compromise path" which cannot be found by deductions from first principles. The reason to rewrite code from scratch is to produce a different application. Any serious application, produced over a matter of months, has so many man-hours in it that it impossible for even the creator to comprehend the sum-total of compromises which it involved and their motivation. Thus the "character" of a particular application can almost never be recaptured by a rewrite.