I was just curious to know about how to become a good technical architect Or what are the things makes a Developer good architect. Please share your insights and articles.
It depends on how you define the role.
Some organizations define it as the person who designs the overall solution to a problem or set of problems. That role needs someone with a lot of design and programming experience who can get up to speed on new things and has an interest in keeping up on new tech and new challenges from the business side of things.
Other organization define it as the person who identifies new opportunities or builds the road map to the future state. This version is much more powerful, but also much more dangerous. You need all the requirements above, but you also need a fairly intimate level of knowledge of how the work actually happens and all the little bits that are never documented that human reason, timing, current nature of the clients, etc. takes care of for you. These people almost never are successful unless they come from within the organization or a nearly identical situation or are given months or years to familiarize themselves with the workings of the company.
A developer with a reasonable variety and length of experience can do the first, but only a developer with the right specific industry knowledge is likely to do well in a reasonable amount of time at the latter.
IMHO in both cases it helps to be a developer who is more interested in practical problem solving than theoretical perfection. If you find yourself uncomfortable with making ugly compromises when needed you will likely not enjoy this role.
IMHO, a good architect:
The sign of a good architect is a project that is a pleasure to work on months or years later.
From Wikipedia :
I think the moment you start designing a software before-hand, you're an architect. You try to organize things to remove complexity before coding anything. The main goal of an architect is quality in its broad sense. So if you want to be a good architect you have to know what quality is. Here are a few starting points in quality :
The goal of an architect is to clearly define what the customer expects from the software in terms of quality, and design a solution that answers to every quality requirements expressed.
There are ways to formally express quality attributes. Read Software Architecture in Practice by Bass, Clement and Kazman. They cleary define architecture, terms and associated practices.
An technical architect is a very broad term, because today we have a lot of definitions given the roles and responsabilities.
Right now I think of the usual types of architects:
But even when every type has a different set of goals and products, all of them has commons goals on the architecture definition, that are:
Given that ground base, I think that the things necesary to become a "good" architect are the ones that maximizes the results of an architect.
These things are the "hard" (technical) and the "soft" (personal) skills that every architect must have.
On the hard skill side, a "good" architect must have:
On the soft skill side, a "good" architect must have:
There are a lot more of skills on either side, these set is only a starting point.
A good architect is the one who identifies/ defines the right problem to solve and provides the best approach to solve it.