Old code has been used. It has been tested. Lots of bugs have been found, and they've been fixed. There's nothing wrong with it. It doesn't acquire bugs just by sitting around on your hard drive.Joel also recognizes three types of issues with old code (architectural problems, inefficiency, ugliness), which he recommends be addressed without fully rewriting your software by refactoring, optimizing, and prettifying.
- Low risk. It's not a rewrite from scratch. (In the case of Java to Scala we even get help from tools to perform an initial migration.)
- Revisited code. In the process, we re-read the code and are forced to understand it again. Sometimes we add new comments to unclear code, or even fix obvious mistakes.
- Smaller, more expressive code. We are moving to better languages after all.
- Future proofing. This sets things up for more refactoring in the future. (In fact, we often perform some refactoring right away.)