November 20, 2010

Why will a brilliant programmer / designer may not necessarily be a good software architect?

A brilliant developer might have an idea about what to be developed, the module that he is supposed to develop, the requirements that needs to be implemented, but if a brilliant programmer doesn’t have the big picture of the system that he needs to implement, he cannot be a good software architect. And also most of the time a best programmer might not be able to, sell the vision throughout the entirety of the software development lifecycle, evolving it throughout the project if necessary and taking responsibility for ensuring that it's delivered successfully. A brilliant programmer might be able to develop and deliver whatever he supposed to develop, but he might not be able to make sure that the entire project delivery is successfully.
            A good software architect owns the bigger picture. Technical leadership is only one aspect but there are other things that need to be done during the delivery phase of a software project. These include taking responsibility, providing technical guidance, making technical decisions and having the authority to make those decisions. An architect need to undertake the technical leadership to ensure everything is taken care of and that the team is being steered in the right direction on a continuous basis. A brilliant programmer might be an expert for one or two development environments, and he might not be an expert in most of the environments. A good developer might not have good technical leadership skills and since many project teams don't get the technical leadership that they need and most of the time they are depend on the architect, if that programmer is going to be an architect the entire project fails.
            We have seen many brilliant developers who are not good mentors, or coachers. In most software projects coaching and mentoring is an overlooked activity since many team members not getting the support that they need. A good architect uses his coaching and mentoring ability to enhance people's skills and to help them improve their own careers, whereas a good developer might fail.
Most architects are experienced coders, so it makes sense to keep those skills up-to-date. In addition, the architect can experience the same pain as everybody else on the team, which in turn helps them better understand how their architecture is viewed from a development perspective. A good developer may be selfish, and doesn’t understand or even try to understand others needs. So he cannot be a good software architect even though he is a good developer.
When we consider the overall details, a good software architect does not just happen. He possesses set of qualities and also his experience makes him a good software architect. A brilliant programmer who does not have much experience and key qualities as a software architect cannot be a may not necessarily be a good software architect.

No comments:

Post a Comment