Steering agile architecture

"Emerge your architecture" goes the agile mantra. That’s great. Developers get empowered and fluffy papers make room for real code structure. But, how do you ensure the cohesiveness of the result?

The architecture of the system is important and it deserves special attention because it is too easy for it to go wrong in the long run, and it is too expensive when that happens. Yet, despite common belief, architecture cannot be commanded and controlled because architecture is a commons. In this talk we detail a method of approaching architecture by steering it on a daily basis through:

  • making architectural concerns explicit,
  • crafting automated checkers,
  • agreeing on findings, and
  • distilling corrective actions.

This process requires a new kind of infrastructure and associated skill that enable you to craft checkers fast and cheaply. However, this is a technical detail. The critical benefit comes from making architectural decisions explicit, and from the daily actions of cleaning the state of the system.

This discipline offers a practical space in which everyone can participate and can negotiate the future architecture. This approach works both in the small and in the large. And, it also comes in handy for larger projects such as migrations or splitting monoliths towards services.

This talk is targeted to both engineers and managers. Engineers have to understand how to organize to produce meaningful architecture, and managers have to understand what this all architecture story involves in practice. We cover the basics of the process, and we accompany the conceptual descriptions with examples from real life projects.

Related resources: