"Well-designed code is easy to change, refactoring is how you change from one design to the next, and tests free you to refactor with impunity." (Sandi Metz, "Practical Object-Oriented Design")