Saturday, October 2, 2010

What makes a good software architect

architect I have recently read an interview with Ray Ozzie, Microsoft’s chief software architect where he spoke about his role as chief software architect and what makes a good software architect.
Software architecture is a very complex and vast topic. It definition can be vague and the definition of a software architect can also be vague at times. In the past 10 years of experience in the ICT industry I have met many high level CIOs. I was always surprised to hear from some of them that they found that there is no need to have a dedicated software architect, they said that the role can be fulfilled by the CIO himself in combination with senior software engineers.
If the software engineer is competent in software architecture then in practice you have someone performing the role of software architect.
I have seen many definitions of the core competencies of a software architect. Some of them were so extensive that it would be hard to define the role.
Ray Ozzie’s says that a good software architect are the ones that have spent time building and debugging applications. He says that one can learn a lot by reverse-engineering applications. The more systems you develop and debug, the more you develop an understanding of what good and bad practices and design patterns. “It is the library of patterns that defines a good software architect”.
Ray Ozzie’s view makes sense. A good architect should have plenty of experience in order to develop a comprehensive knowledge of the patterns to use build applications.
A good software architect is the one that is always researching and learning about new technologies and how to apply them to solve real-life business problems.