Friday, September 17, 2010

The path to be a software architect...

I am not very sure whether I am qualified to write on this topic. My intention here is to register my thoughts on the topic.

Calling yourself as an "ARCHITECT" is itself considered to be a pride by self! The word now-a-days is more than a sign of prestige and pride rather than whether you qualify for it or not. There used to be a time when "Lead", either you prefix or suffix with any word was considered to be a designation on pride, but now I see "Technical" and "Architect" taking that roles. How many of us have really felt that we qualify to own that word as our identity?

To be an architect you need to be a - programmer - debugger. Architecture is not about designing systems or solutions with design patterns, frameworks, portal solutions, messaging bus and soa, rather it is about putting together pieces of code that would work perfect for the given need. This should also take care of the past bad and buggy experiences you had in your career. If you are able to conceive such a system or solution, then you may call yourself the creator (architect) of that system. You should each and every entry and exit point of the system. You should be able to see where the system would fail and where it would choke. You should have addressed all those areas. The system should of course follow a standard or a pattern, but it should be only to the extent it is needed.

But on contrary to this, doing architecture or system design is now considered to be using design patterns (that the individual is comfortable with) and popular frameworks (that the individual knows). Most of the times I see things are being used for the sake of it. In my opinion I feel that this practice should change. 

The other type of architects that I have come across are people who live that designation and take that very personal. They are so obsessed about what already exists and start writing things on the own. I am not sure whether they do it for the sake of it OR they really don't believe is something that is already proven. I have several times asked the question:- "Why don't you take the existing stuff and re-factor or enhance it and use it? So that others can also benefit". But I always get a weird look as my answer. 

Okay, now coming to your question, I see you asking me "What kind of "architect" are you?
I am the person what I have echoed above. I too have been carrying the word "architect" as my identity for quiet some time, but I have always lived to the the kind of person whom I echo to be. I have not created the so called great solutions so far, but I have had a lots of learning.  So, what do I do as an architect? I code - debug - refactor - create small frameworks that cater to a common issue in my design - test automation - application profiling - so on and so forth....

As I said in the beginning, I might not be qualified to write on this topic, but I definitely wanted to echo my take on this.