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.

This article was first noted down on the 10th of August, 2015.