Software Architect Role?


I'm always interested in building software with good solid foundation. However, building a good architecture takes considerable thought, and a software architect plays an important role. Each software engineer should carry good architect principles and should also play architect role.

The primary role for a software architect is quite simple, creates architecture for a software system! However, a software architect is often surrounded by various roles and responsibilities that are vital to a success for a software project. These include demonstrating outstanding technical and business skills to create or select a sound architecture for a system, communicate the architecture design across various groups, negotiate the design tradeoffs, and coach and encourage others to accomplish the software project to satisfy the business needs. All these roles and responsibilities requires software architect as a technologist, business strategist, mentor and coach, and organizational politician, and I will try to explain them in details shortly.

An architect as a Technologist
As a technologist, the architect needs to have a throughout knowledge of organization domain and product, and possess a broad technical knowledge and skills. This will help the architect to create or select an architecture solution to satisfy the requirements and the business needs more effectively.

In addition, the architect needs to demonstrate competences to adapt technologies in an agility manner to create an architecture design without overwhelmed with choices. This is very important particularly when the software project becomes more and complex that requires the architect to make critical decisions and validate the choices. In other words, the architect who understands business domain can well articulate the architecture vision, conceptualize and research with alternative architectural approaches, model and validate the architecture choices against requirements, and finally explain the architecture design to the stakeholders with strong persuasions. For example, if the architect is knowledgeable in health care industry, he or she may know particular FDA regulations and policies that can influence software systems. Therefore the architect can avoid picking the architecture pitfall that will violate the regulations. If the architect is unfamiliar with this specific domain he or she may make more mistakes at the beginning, underestimate the technical risks and may even fail the project eventually.

An architect as a Strategist
As a skilled strategist, the architect create the right architecture with a throughout understanding of business contexts. The architect understands the organization’s vision, business strategy and the reasoning behind it. Not only these, the architect needs to also understand business practices and how they functions. Keeping these business contexts in mind will help the architect to effectively translate business strategy into technical vision and strategy that that can greatly affect the organization success.

Furthermore, the architect needs to understand customers, vendors, competitors, market trends so he can filters all these business factors into architectural requirements and architectural choices. This helps to set direction to the organization to adapt suitable changes. These changes can enable the organizations to capture customer, organizational and business requirements on the architecture so the software can be built to achieve the business goals. For example, if the architect is aware of the market trend is moving rapidly to adapt Web 2.0 technology, he or she can set strategy on how to the architecture can be changed to meet the market, perhaps a strategy is to partner with vendors who have already used Web 2.0 technology.

An architect as a Mentor and Coach
Owning the knowledge and skills alone cannot insure the software project to be successful. The architect also needs to constantly feed the knowledge to others so others will stand together as a team. This is particularly important to today’s world because software project is typically team based that involves various groups of people such as designers, developers, business stakeholders, and executives, to name just a few here. For junior level designers or developers, the architect mentors them so they can fully understand the architectural choice and rationale behind it before they can design and implement the system correctly. For business executives, the architect needs to coach and educate the stakeholders so they can understand the business benefits of the selected architecture before investing resources and money. Sometimes the architect may need to defend the choice. For example, the architect can use Cost Benefit Analysis Method to provide quantitative evidence why the selected architecture is better than others.

An architect as an Organizational Politician
Admitting it or not, my experiences tell me organizational politics do exist. The architect must acknowledge this: politics exist and are not too bad. It is about how to work with others to come with consensus to gain mutual benefits, and then brings the organization to a success. Within the architect’s capacity, he or she needs to align people through incorporation of interests, and persuasions and influences in oppose to dominance and control. This requires a highly command of communication and negotiation skills that can effectively communicate the architectural ideas and advantages to the stakeholders. When a decision is under attack, dealing with this situation becomes radically complex if the project involves across organizational boundaries, by other projects, divisions, and even other companies. To maintain enthusiastically support of other vital influencers, the architect needs to be an excellent organizational politician who can influence without dominance. For instance, if other groups have used a particular vendor to supply components in implementing software system, even the architect has a strong reason to build the components in house. The architect may experience resistances because it’s out of his functional control, and it requires the architect political skills to overcome the resistances, which is more than technical skills that can overcome.

In summary, a software architect needs to exhibit strong technical and business competencies in various roles including as a technologist, a strategist, a mentor and coach, and an organizational politician. As a technologist, the architect has a solid knowledge and technical background in the organization domain and product to make critical decisions so a right architecture can be created. As a strategist, the architect understands overall business context to set architectural vision and strategy to achieve the business goals. As a mentor and coach, the architect educates others on how and why the architecture is selected. Finally the architect also acts as an organizational politician to influence other to reach a consensus to bring benefit to the organization. With all these roles, one thing can be sure is the architect needs to encompass excellent soft skill sets to be successful, very strong communication and leadership skills.

Comments