How to Do a Full Rewrite
Rewrites typically work well when the people behind the rewrite are the same people who wrote the original code and maintain it.<p>Often, the requirements changed along the way as the problem domain incrementally became better understood. At that point, the original design is not helping, but sabotaging everything.<p>This is why that first version should always be considered a prototype. And the next version will probably also be.<p>Not rewriting will have a much larger cost down the line.