Sometimes, when refactoring a system which contains terrible design mistakes, one probably learns more about what not to do (i.e., AntiPatterns) and thus about what to do than if you had started with a system of already acceptable quality. Refactoring such a system more or less forces you to think patterns.
(Paradoxically I once even found the resulting system to be better than it would have been had I started from scratch because of what I had learned. But then, I had enough time and the system was very small.)
When you use EducationalMistakes deliberately as an educational tool for teaching, you are applying a WittgensteinsLadder.
There is a PedagogicalPattern called FixerUpper that addresses this issue. -- JoeBerginCategoryEducation