As promised in my last post, and after reading my friend Ron's post I am going to try and answer the following important question. :-
Whats the role of an Architect in an Agile team?
Contrary to the common believe that Agile doesn't need architecture (or an Architect role for that matter), Agile (or specifically XP) doesn't imply Design Is Dead (as Martin Fowler puts it).
Since Agile doesn't believe in BDUF (Big Design Up Front Paradigm), its opponents tend to claim that Agile doesn't require architects which i should say is not the case in reality. (Note: Agilists may say that they don't need Architects sitting in silos segregated from the developers (aka Ivory Tower Architect). Which IMHO is a right thing to say)
So, Agile does indeed emphasize on importance of Architecture, the only difference is, instead of planned design (BDUF) it focuses on evolutionary design. In practice evolutionary design doesn't mean Zero design in the beginning, but rather 'just enough design that is easy to evolve/change/maintain' with passage of time. Obviously, purists on both side of the camp would argue that, BDUF= planned design and Evolutionary Design = Zero Up front design. Since no one can foresee the future and requirements are always changing, reality perhaps lies somewhere in between. What I am suggesting is that from my experience i have seen evolutionary design tend to work better in general (yes, there are no silver bullets here). I can go on talking about this, but I'd rather focus on the role of an Architect in an Agile world and for that i believe following are some key activities (in addition to vanilla responsibilities) an Architect needs to own and be responsible for:
- Agile Architect is hands-on and participates in day-to-day development
- Agile Architect is very keen on maintaining the code-quality ( through Code Analysis , Reviews etc.)
- Agile Architect understands all the stake holders and works towards maximising their value
- Agile Architect works towards understanding the business domain
- Agile Architect can not predict the unseen future but can anticipate volatile areas and provide design guide lines accordingly ( a la: Design for Change)
- Agile Architect makes sure that everyone follows Agile Principles, specially the ones outlined by Uncle Bob)
I think the most important take-away is that Agile Architect is hands-on and participates in the team through out the development life cycle rather than a big bang contribution in the beginning.
IMHO only special agile developers can become Agile Architects and not all software architects are Agile by default.
I think i will leave this discussion at it at the moment and would take it further depending upon your comments/feedback....
Its 3 AM in the morning and i should get some ZZZZ...
ps: also check out the following links: