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
Post a Comment