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
CategoryRefactoring