A better question would be why can’t we just wrap our old architecture practices in agile?
The problem is twofold…
Problem 1
The first is that traditional architecture functions are built on the premise that everything can be known upfront. Designing solutions that would handle every situation imaginable or be robust enough to handle the unimaginable. Experience has shown us that reality is far from this. We cannot know every outcome, nor can we build something robust enough to handle all the unknowns. Many organisations seek to address this through a centralised architecture function.
Problem 2
The second issue is that existing architectures are difficult to work with. For instance, we usually see a lot of:
- old technologies,
- outdated development practices,
- poor test coverage
- legacy / tangled code
Therefore, development teams struggle to change their existing technology with any confidence that would allow rapid improvement.
Agile architecture seeks to bring these two problems close to the development teams. Empowering them to use innovative technologies while also defining some level of guidance to ensure the overall architectural vision is maintained.
An Agile architect needs to be available to their teams as much as possible. Their objective should be to communicate and collaborate on their vision for the solution. The overall vision should be lightweight and flexible. This may evolve through a collective of architects or a community of interested individuals from across the teams. An empowered team will be allowed the autonomy to choose/suggest tooling and technologies that make their life easier. The agile architect will encourage and validate these decisions, sharing and championing the choices made.