November 20, 2010

Key Attributes of a Software Architect

Who is a software architect? Is it the person who is responsible for the software architecture, the answer is no. He is a person who owns more than that. According to the Rational Unified Process,  “The software architect must be well-rounded, posses maturity, vision, and a depth of experience that allows for grasping issues quickly and making educated, critical judgment in the absence of complete information.“
            An architect plays several roles including, Driving major technical decisions, expressed as the software architecture which includes identifying and documenting the architecturally significant aspects of the system, including requirements, design, implementation, and deployment views of the system. He is also responsible for providing rationale for these decisions, balancing the concerns of the various stakeholders, driving down technical risks, and ensuring that decisions are effectively communicated, validated, and adhered to.
            Architect is not only responsible for performing multiple roles, but also holding multiple skills.  Followings are the key attributes possess by a good software architect.
ü       Visionary
An architect is person with a clear, distinctive and vision of the future, usually connected with advances in technology arrangements. He is a person who always determines novel and modern approaches, and always has time to learn. Great architects are great "sponges" with great memory and powers of assimilation. They can look at a new piece of knowledge (e.g. a new API), understand what it does, how it fits and 18 months later will remember to use it when the opportunity arises.

ü       Manager
Architect is responsible for planning and directing the work of a group of individuals, monitoring their work, and taking corrective actions when necessary. Architects direct the team members directly or they may direct several leads who direct the other team members. He also coordinates with all stakeholders to formulate and communicate a practical blueprint. Architects have to explain and advise on technical issues to business stakeholders. They also have to be able to advise delivery teams on how to build.
ü       Developer
Architect helps to develop POC or pilot to validate solution, patterns, practices, and principles. He is a person who is concerned with facets of the software development process. Ultimately the architect will have the "buck stop" at their desk - they've got to be able to solve problems (or help others solve them) regardless of where it exists - client, database, middle tier, network etc. etc.
ü       Leader
An architect in the sense of making decisions and ensuring things get done but also a leader in the sense of empowering other people to make decisions and a mentor to help others make better decisions. He also defines processes and criteria. How files checked in and checked out, which changes are risky and which are not and when should they be integrated.
ü       Coach 
An architect should be able to motivate and inspire others to gain buy in from folks and ensure that each person is getting the challenge they want but in line with ensuring the end goal is still being addressed. Mentors and coaches others on effective application of industry best practices
ü       Governor
As a governor, an architect is responsible for establishing architectural standards and guidelines.  The architect looks at problems in a different way by applying analogies from different fields or projects. A true architect must not be parochial, and this means gaining experience in different roles and fields, probably with different employers. Having and using experience is more about attitude than years.

No comments:

Post a Comment