General Snippets of Wisdom

But that's what happens when there is no incentive for people to do the parts of programming that aren't fun. Fixing bugs isn't fun; going through the bug list isn't fun; but rewriting everything from scratch is fun (because "this time it will be done right", ha ha) and so that's what happens, over and over again.
“Don't document bad code — rewrite it.”
Fix it or refactor it, the proper term for small in-place rewrites, 30 years later.
“So what should you do in place of a spec? Go with a briefer alternative that moves you toward something real. Write a one page story about what the app needs to do. Use plain language and make it quick. If it takes more than a page to explain it, then it's too complex. This process shouldn't take more than one day.”

In Practice

Sometimes, when further development seems untenable because of the volume of code, it does seem that starting over is the best path. We want to use the latest programming languages, tools, libraries and methodologies in order to obtain the best results. If we *really* want to avoid the mistakes of the past then we must acknowledge the successes as well and focus instead on incorporating the things that have been done right.

Move on to.. Strategy.