3 ms·
Joel wrote an article back in 2000 on why you should never rewrite, mentioning Netscape. While I'm far less sure than he is about it (see below), there are some
by richardw 17y ago
Joel wrote an article back in 2000 on why you should never rewrite, mentioning Netscape. While I'm far less sure than he is about it (see below), there are some awesome points in there.
http://www.joelonsoftware.com/articles/fog0000000069.html http://www.joelonsoftware.com/articles/fog0000000069.html
While rewriting I've often been surprised how much I've had to re-discover and re-think, and how many mistakes I'll make second time around. On the other hand, on one occasion a rewrite saved the day because it pulled together 5 different apps in different languages in a new up-do-date platform. A few months of work and the sum was infinitely better than the whole and saved the business much more than it cost.
- jlouis 17y agoInterestingly however, much of the Linux kernel is based on the idea of pulling something off and then substituting it completely. For what it is worth, it seems to work for them.
- jcapote 17y agoI wish they had rewritten netscape, maybe firefox wouldn't be total garbage now. This advice, while great for some things, needs to be taken with a grain of salt. Sometimes, a full rewrite is the only option.
- firefalcon 17y agoThere are some success scenarios for rewrite. For example, IE 4 was rewritten from the scratch. It became #1 browser. So it depends.
- btilly 17y agoIE 4 was competing with NS 4, which also was largely rewritten. That leveled the playing field quite a bit. (Particularly since the NS rewrite introduced a lot of problems.)
- btilly 17y agoOn the flip side during an extended major refactor your code looks like a construction site. You have some stuff that has been rewritten, some that hasn't, and no consistency. Then during the refactor people will rethink how they want it written, and you get more code styles. Frequently the dust and mess gets so discouraging that people start being driven away. And then the rewriting effort peters out and people just get used to living in a half-demolished house. The moral? Keep refactors small. If you want to do a major redesign, I would suggest rewriting a small prototype of a piece of it. If the prototype goes well then expand it until it can replace the previous system. (I've seen this prototype approach succeed several times. I haven't seen such good results with major refactors, or the "Let's rewrite from scratch!" approach.)
- firefalcon 17y agoI also don't think that full rewrite from scratch is a viable strategy. Much better is to rewrite by pieces and integrate them with existing system via interfaces/adapters/etc. For example, you may start new Data Layer and move code from old app to it slowly, but constantly. Sometime you will have completely new DL.
- btilly 17y agoBelieve it or not I have seen multiple people succeed with a full rewrite from scratch. The ones I have been close to did it with a prototype they evolved.