I chuckle whenever I hear or read the question “should architects code”. Joe brings this up again in the Rabbit Hole and I promised to blog about this at some point. Well it’s over a week later and I think I finally have some time to put something brief down.
The short answer to the question is yes. But answering yes leads to another question and that is: what should an architect code? To answer this question, one has to identify what an architect actually does. To keep things simple, let’s just assume that an architect is responsible for the architecture of a system. What then is architecture?
Architecture and Architectural Styles
A definition for architecture states that architecture (and it’s specifications) are both intensional and non-local meaning that software architecture concerns itself with abstractions that are:
- applicable in multiple domains
- applicable at a system level
Hence architects talk and discuss things like Rest-Oriented Architecture, Service-Oriented Architecture, Event-Driven Architecture, Layered Architecture etc. Code they write should be focused on illustrating these architectures and architectural styles. Being able to think abstractly is suppose to come with years of designing and implementing systems. This is not always the case for everyone.
This is not intended to suggest that an architect should not write code that demonstrates design principles or is actual implementation code. That is dependent on an organizations structure. However, if you are an architect and you’re in a situation where you are not writing any code at all, simply put, “check yourself!”.