A statement I've had to make quite a bit lately, in two contexts:
To Managers
I've had to explain that object-oriented programming allows for code encapsulation; which allows you, with the use of a unit test suite, to carefully evolve programs and data models into a simpler, easily maintainable code base.
To Developers
There is also a mind set of the old PlanToThrowOneAway, that just does not seem to fit well with refactoring a code base. By 'throwing away' code, there is significant risk in the possibility of altering interfaces, etc. Evolve, don't throw away...
-- ChadThompson
For educational purpose you might DoItAgainToLearn.
See also: SecondSystemEffect, RewritingIsNotRefactoring