The Enterprise as Complex System
Perhaps the biggest aha moment on the road to Agile Architecture is when you realize that implementing such an architecture isn't traditional systems engineering (TSE) at all, but rather a fundamentally different approach to dealing with complexity in the IT environment. Needless to say, this realization is an especially big wake-up call for people with TSE backgrounds! The fundamental shift in thinking is this: TSE focuses on building big systems out of small components, where the behavior of the resulting system depends directly on the properties of the components. Essentially, TSE boils down to a “connecting things” way of thinking about distributed computing, where integration is the central activity, and what you end up with when you're done with all the integrating is at best what you expected to build.
Agile Architecture, on the other hand, calls for an entirely different approach—Complex Systems Engineering (CSE). In this context, we focus on building and maintaining the Business Service abstraction, which supports inherently unpredictable behavior as the business composes Services to support fundamentally dynamic business processes. Essentially, with Agile Architecture we're building for change, whereas with TSE, we're building for stability. The problem with stability, of course, is it only takes the business so far—if the organization requires business agility, then it's much better off implementing Agile Architecture.