Software development is currently entering a new evolutionary stage: business departments have learned to use agile methods to implement changes productively in short cycles. This gives them the ability to measure changes to a product against real user feedback, and to make well-founded decisions about new software functionality through empirical analysis of user behavior. To get there, however, most IT architectures first need to be brought into shape so that individual parts of a piece of software can be flexibly swapped out and delivered independently of one another.

Retrospective (2026)

Looking back, the core diagnosis still holds: monolithic architectures really were the bottleneck keeping teams from turning agile product thinking into fast, independently shippable change. What I underestimated in 2015 was how much operational complexity microservices themselves would introduce before they paid off — orchestration, observability, and service boundaries turned out to be harder problems than the deployment coupling they solved. Today, working on architectures for autonomous AI agents, I see the same underlying principle resurface: agents need the same independence and clean interfaces that services needed, except now the “user feedback loop” is partly closed by the agents themselves. If I were rewriting this talk now, I’d spend less time selling microservices as the cure and more time on how to keep the resulting distributed system observable and governable, which is exactly the problem space I work in today.