The problem is, in software design, often the consequences of your decisions don’t become apparent for years.

– Kent Beck