I was recently asked to provide my definition of an architect. I have a more philosophical view of the role in comparison to others, but this is my Blog and these are my thoughts. My job is to spew nonsense; your job is to read it and disagree (at least that’s what most people do).
An architect is responsible for getting the job done right vs. just getting the job done. They are the visionary responsible for the spirit of a design along with establishing the guardrails for the implementation. They are also the person that is responsible for understanding the design, the use, the potential use, the management and maintenance as well as the implementation of a solution. They will use many tools, experiences, references and guidance add in some customer requirements and constraints and produce what they feel is the best solution for the problem at hand.
Here are some stories that read recently where the architect failed:
Architects do good as well. I am always amazed at the thought that goes into software frameworks where the intended purpose if completely unknown. Think about the HTTP protocol RFC. I bet when the architects where in the room back in 1999, thinking about what people might do, the thought of using it to build systems that would be able to able to carry videos, executables, HTML, voice, and pretty much anything we throw at it.. However, the design was simple enough to understand (request and response between servers and some data in the middle) yet complex enough to allow for others to use and extend without major redesign of the protocol. Great architecture.