I just flipped open a page of Kent Beck’s book from 2000 — extreme Programming explained — pages 24-25 to be exact. He wrote that in order to prevent the cost of change from growing inordinately over the life of a project, we should have:

  1. a simple design, with no extra design elements
  2. automated tests, to have confidence in any changes
  3. lots of practice in modifying the design, so when the time comes to change the system, we aren’t afraid to try it

See additional comments about the above in this LinkedIn post.