First we need to understand what we mean by Enterprise Architect and Agile Development. Enterprise Architecture and Agile share common ground, they are both decision-making frameworks. The main difference is that Enterprise Architecture focuses on the future vision for the enterprise, it’s about where the enterprise has to be tomorrow, it is also about algining business strategy with technology. Agile development focuses is on project delivery, where does the project need to be today. Agile is mostely implemented as a response to volatile levels of changes. Enterprise Architecture is most effective and needed when there are high levels of changes. While agile is not a direct enabler for Enterprise Architecture, its use might indicate the need for it. Some of the most common anti patterns for Enterprise Architecture is the “Ivory Tower Syndrome”.
A significant aspect of this love/hate relationship is the difference between top-down architecture and bottom-up architecture. To ‘soften’ these two approaches is to end the perception of architects as obstacles to project. On the other hand, architects need to learn from agile development. ‘You don’t know everything up front.’ Enterprise Architecture and Agile can be viewed as different perspectives on the same objectives.
My belief is that they can coexists if you follow the following rules:
– Your Enterprise Architecture effort should be driven by the business, not by your IT department.
– Enterprise Architecture should evolve over time. An evolutionary approach enables you to act on concrete feedback that you receive when you try to actually implement it, thereby enabling you to steer the development.
– According to some surveys, Enterprise Architecture points to “people issues” being the critical determinants of success or failure. My experience is that the best Enterprise Architecture or Agile approach is to work closely with the intended audience, both business and IT.
– Delivery teams and Enterprise Architects should work closely together so that they can leverage the common infrastructure, and to help build the project efficiently and effectively. Disciplined agile teams realize that they can benefit greatly by doing so.