Saturday, 19 May 2007

Am I a software architect?

Am I a software architect? - any chance you have asked yourself this question recently. Before you answer this, take some time and check out, what is it that makes one a software architect - as the term seems to become a bit ambiguous over recent years. IMHO it is due to this ambiguity, that many of us struggle to define our relation to software architecture correctly and there is a quite large hum on the web discussing exactly this subject...

What is software architecture?
By Wikipedia :
The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships between them. The term also refers to documentation of a system's software architecture.

Why should we pay attention to architecture?
It would be scary to even ask such a question to a professional civil engineer. Is seems okay to do it in software domain though... Anyways, architecture serves both technical and organizational purposes. Architecture is the essential foundation for agility, responsiveness and effectiveness - in other words it serves the business. Check this article to learn how exactly.

Who is right for the architect role?
If you are a techie, as soon as you become an architect, you might realize that the technical aspects of the role, are the ones easier to handle. Critical technical skills include ability to:
  • make assertions about the technology directions
  • determine consequences for the technical strategies.
As an architect you will need various soft skills to succeed like ability to:

Personality traits supporting this include:

For remaining information refer to this article or coding architecture.

How do I create an architecture?
The deliverable of the architecting process is the architecture document, motivating and describing the structure of the system through various views. However, though system structuring is at the heart of the architecting process, it is just one of several activities critical to the creation of a good architecture. Architectural requirements are needed to focus the structuring activities. Different architectural approaches tend to yield differing degrees of fit to various system requirements, and modeling and evaluating alternatives, and analyzing tradeoffs among them, are an important part of the structuring phase. Lastly, a validation phase provides early indicators of, and hence an opportunity to resolve, problems with the architecture.
More can be found here

Where does architecture fit in development?
Architeture comprises evaluation and feasibility studies, component and interface design, documentation plus SLA maintenance. It is a lot things to do, but still, you do not have to give up coding. Another thing is, that the architect remains accountable for the software, so it is no good to deliver paper work and let it go.

What type of the software architect am I?
Hang on, I am a software architect but how to describe my role so it is meaningful t others, as there are so many types of architect roles. If you are not sure, Microsoft's Skyscrapr will provide you with consistent architect role definitions. Roles are also discussed by this article with an emphasis on progression. In other words how far am I from becoming an enterprise architect.

Who needs architect - anyway?
So now is the time to ask this final question. It is really a great title of an article published by Martin Fowler, which is a great read as the following quote hopefully shows:
Software is not limited by physics, like buildings are. It is limited by imagination, by design, by organization. In short, it is limited by properties of people, not by properties of the world. “We have met the enemy, and he is us.

So what kind of architect are you?

If you are interested and want to learn more take a look on the coding architecture blog and its posts. It is very good read.

No comments: