- Make changes easy, avoid making easy changes.
- Keep changes in behaviour and structure separated.
- Mind code coupling and cohesion.
- Keep your code separated from the products you decide to rely upon.
This allows for quick, painless switches to other or more technologies, should you need to. Leverage interfaces.