General implications
Solutions to problems are rarely final
When writing a program, it is important to think about how it might change
Well written programs will take plausible future changes into account
Each aspect that might change should appear in as few places as possible