What Architecture Means for Agile Development
In contrast to some discussions we observe in the software community, agile development is not about cargo cult adoption of Scrum or any other process, toolkit, or methodology — although we certainly observe this and consider it a problem. The essence of agility is responsiveness, learning, and sufficiency. Agility is reflected in sustainability and quality in software and its development — by definition, unsustainable and poor-quality development contradict and reduce agility.
The Manifesto for Agile Software Development notes that “continuous attention to technical excellence and good design enhances agility”, offering architecture a clear role within agile, although not one expressed through big up-front design.
Our friend and colleague Jens Coldewey has commented that architecture is what makes you fast. With all the agile will in the world, an architecture that resists the changes you want to make because it’s poorly conceived or misaligned with its purpose will hinder both good process and good architecture.
Frank Buschmann and Kevlin Henney, Architecture and Agility – Married, Divorced, or Just Good Friends?, IEEE Software 3⁄2013