For quite a few years now I have been working in the software architecture and Agile space which may seem like an oxymoron to some. I got asked the other day, from somebody who knew me for both, what type of reaction I got from the XP community members when I brought up the word “Architecture”? Honestly, I had gotten some rolling eyes, criticism, and the usual YAGNI blurb. It hasn’t affected what I am doing and I keep closely aligned with the Agile Manifesto and the Principles behind it. So how can I work with anything regarding software architecture and still be “agile”?I have found that in some cases the guidance provided through higher level views of systems has enriched the product delivery. Definitely it is not needed in every case and I will freely admit that the “Ivory Tower” approach to software architecture is mostly misguided. There are the cases in which you do have a need for infrastructure and enterprise architecture. But instead of the “Ivory Tower”-type teams, these groups could be more in line with the product delivery cycle. I was amazed the first time that I had an Enterprise Architect work as the Product Owner of a Scrum project. The EA had a great ability to manage communication from business customers into the product backlog. The EA could help breakdown multi-team work with minimal dependencies and integration points. The EA was able to have great negotiations with the team regarding new information learned during a sprint. I was amazed at how well it worked. Then I thought about it and these are the skills that many of the EAs I have worked with and respect had already.

Along with EAs, the Infrastructure Architect is still needed in certain contexts to help in large scale deployment configurations. I have heard of instances where this team can run Agile projects and incorporate Lean principles to remove waste such as duration to deliver in the supply chain. Instead of taking the approach that “this is how things are” we can decide on how things “should work” and then work towards that. If it takes 2 months to procure a server for our staging environments then we should be asking ourselves why? What would stop us from being able to deliver on these server requests in 1 week? Sometimes we don’t take a step back and look at these options. If we do, we might just find out that we can increase the productivity of our entire organization.

I have been holding these two spaces, Agile and Architecture, away from each other for the most part but I am going to change that. Agile and Architecture are compatable and I will continue my quest to promote my findings on this topic, good or bad. Just remember that I am not speaking about the traditional Architecture role but rather what I have found as an Architect that works. An Architect is not a role which is the “know it all” in designing an application for teams of developers. Prescriptive approaches to working with development teams can be characterized as intrusive and misguided. We must understand how we can help in the true guidance of a team doing their work and delivering on goals.