At some point in the distant past, a manager inside a software company made an absolutely brilliant decision. The name of the individual is lost to history, but the brilliance cannot be denied. It was simple really, and necessary. When we install our software onto the company’s hardware, he reasoned, the software will work perfectly. From there, it’s all downhill. Over time, the company will change their requirements. They will upgrade their hardware and expect our software to continue working. They will want our software to talk to other software. They will change processes, and new best practices will emerge. The user base will evolve. Each of these changes will decrease the usefulness of our software to the customer.