> Design is more the art of preserving changeability than it is the act of > achieving perfection. Practical Object-Oriented Design in Ruby by Sandi > Metz
Too often when refactoring it can be easy to get carried away trying to refactor and optimize to a structure that is perfect, expressive, concise and readable.
The quote above is a good reminder that what we really need to design for is something that preserves our ability to change it. I have learned this the hard way. More times than I'd like to admit, I've refactored to a solution that is more difficult to change than if it was just left untouched.