Rewriting Software from Scratch
I enjoyed Adam from Bitscribe’s take on rewriting software. Joel can be such a curmudgeon.
The focus of a from-scratch rewrite should be clarity, not generality. A simple rule I’ve come up with after going through many rewrites, some not very successful.
If adding clarity is paying down accumulated programmer debt, adding generality is deficit spending. Big Rewrites that get carried away expanding the scope of a system are the ones that turn tragic.
A big rewrite should be about taking advantage of the understanding from the previous version and refining the design to fit that understanding. There’s a strong need for an architectural YAGNI presumption on from-scratch rewrites.
After all, why rewrite from scratch? Same reason you rebuild a house from scratch – because the original has a crummy structure. But now you know how it should be. So get it working with the new structure and then worry about adding on.
My sympathies if you have a manager who is annoyed that you worked on the rewrite “just to have it do the same thing it already did.”