Change is fundamental to Agile Architecture. If it’s not the business and their requirements, processes, policies, or metadata that change, it’s the underlying technologies, implementations, and schemas that do. The enterprise is constantly shifting.
The more that we can enable change without having a high penalty cost for that change, the more we enable business agility. Getting things right at the start isn't an appropriate goal for an Agile Architecture effort. In fact, the goal might be just the reverse — build capabilities that you know won’t be right and then make sure the architecture enables you to change them without breaking anything.
As a result, there’s no point to trying to get all the software right, and then locking everything down so that nothing can change. Instead, focus on failing your way to success. When things keep changing, there’s no way you can always be right. So fail often to succeed sooner. And to do that, you need to reduce the cost of failure.
But clearly, any technology you deploy has to work, otherwise it’s not meeting any business requirements. Building software that works is a fundamental Agile principle to be sure. How can you build for failure while building software that works?
Agile Architecture solves this contradiction. Instead of making failure expensive, focus on reducing its costs. To deal with continual change, Agile Architecture enables agility through the abstraction of IT capabilities so that your system allows for ambiguity. Design your system for flexibility by working at a level of abstraction that treats change as a constant.