Agile development and Enterprise Architecture practice – Can they coexist
Your reaction to the title is probably one of the following:
- Why should it be a challenge?
- Co-existence would be impossible.
- There will be difficulties but it can be done.
Why should this be a challenge?
After all, EA is agnostic to software development methodologies. Irrespective of which EA definition is accepted, no direct link with any software development methodology exists. Therefore, you would argue, that there would be no conflict between any Enterprise Architecture practice and adoption of agile development methodology. (If you want a quick premier on what EA is then have a look at: A Comparison of the Top Four Enterprise-Architecture Methodologies).
If you are thinking along these lines then I think most Enterprise Architects will agree with you.
Co-existence would be impossible
“…the mission, scope, tools, mentality, culture, and personality types of enterprise architects and agilists are so radically different …. not only is the nature of their work different, but the management styles, employment incentives, and career path options that work with one group don’t work with the other …”
In EA you start with a business goal and from the goal work out what needs to change (people, process, technology, application, data …). As the next step you spell out in complete detail, how the changed scenario will look like. This is to be followed by an implementation plan, execution of the plan and proper governance. The approach is top-down, structured and planned.
In Agile, though you have a business goal in sight, the approach is always evolutionary. You take one step at a time, delivering working solution and reorienting you plan as learning from that step. You create the environment for the team and empower them so that they can self-organize and be more productive.
If this was your answer then most agilists will agree with you.
There will be difficulties but it can be done
Since there happens to be a common ground – both EA and Agile believes that delivering business value is the key – it should be possible for them to co-exist. Not only can they co-exist, they can also complement each other. It is explained succinctly by Ronald van Luttikhuizen (see this):
“…enterprise architecture (top-down), works toward a long-range vision … (agile – bottom-up) addresses questions coming out of projects right now – questions that should be answered quickly … but if either the top-down or bottom-up architecture is missing, you’re not going to end up in the situation you want…”
As stated earlier, in EA you always start with a future business scenario work out what you need to do to achieve that. Similarly, the first two of the 12 principles of Agile Manifesto talks about “…delivery of valuable software…” and “…the customer’s competitive advantage…”.
“…when project teams work under the assumption that they can do anything that they want … chaos typically results … although each individual project may be very successful, as a portfolio they may have serious challenges…”
Now let me add a variant to this thought. I am sure I will invite the wrath of both enterprise architect community as well as the agile community for saying this but I think both EA and Agile have a UTOPIAN world view. In the real world you have to find a middle ground.
Neither emergence nor up-front design can be the right answer to all problems. A middle ground, a HYBRID approach is what is needed.
Imposed structure may be right in some situation; self-organizing team may perform better in other. It is important to be ADAPTABLE so that you can judge which way is better for a given team.
I am sure if you are a realist who understands the dynamics of a large enterprise, you will agree with me.