"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."
Role of the Software Architect
- The software architect has overall
responsibility for driving the major technical decisions, expressed as the
software architecture. This typically includes identifying and documenting
the architecturally significant aspects of the system, including
requirements, design, implementation, and deployment "views" of
the system.
- The architect 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.
Skills of the Software Architect
- Experience in both the problem domain, through
a thorough understanding of the requirements, and the software engineering
domain. The software architect must provide the global vision for the
project.
- Leadership in order to drive the technical
effort across the various teams, and to make critical decisions under
pressure and make those decisions stick. To be effective, the software
architect and the project manager must work closely together, with the
software architect leading the technical issues and the project manager
leading the administrative issues. The software architect must have the
authority to make technical decisions.
- Communication to earn trust, to persuade, to
motivate, and to mentor. The software architect cannot lead by decree,
only by the consent of the rest of the project. In order to be effective,
the software architect must earn the respect of the project team, the
project manager, the customer, and the user community, as well as the
management team.
- Goal-orientation and Pro-activity with a
relentless focus on results. The software architect is the technical
driving force behind the project, not a visionary or dreamer. The career
of a successful software architect is a long series of sub-optimal
decisions made in uncertainty and under pressure. Only those who can focus
on doing what needs to be done will be successful.
Many Hats of the Software Architect
- Visionary – Discovers innovative and novel
approaches, translating highly-abstract concerns into tangible
opportunities… and results
- Manager - Coordinates with all stakeholders to
formulate and communicate a practical blueprint
- Salesman - Sells the ideas and appropriateness
of the solution
- Developer – Helps develop POC or pilot to
validate solution, patterns, practices, and principles
- Leader - Shepherd's from ambiguous and abstract
to concrete and practical
- Coach – Mentors and coaches others on effective
application of industry best practices
- Governor – Helps to establish architectural
standards and guidelines
Responsibilities of the Software Architect
- Abstracts the complexity of a system into
manageable models that describes the essence of a system by exposing
important details and significant constraints.
- Creates and communicates tailored views of the
software architecture to appropriate stakeholders at appropriate
intervals.
- Provides leadership on critical decisions that
designate a specific direction for a system in terms of implementation,
operations, and maintenance. These decisions usually result in tradeoffs
that define key characteristics of the solution, and they must be well
documented and easily understood.
- Establishes quantifiable objectives that
encapsulate quality attributes based upon which the fitness of the
architecture is measured.
- Proactively leads the implementation during all
iterations and monitors the adherence of the implementation to the chosen
architecture.
- Collaborates with the Project Manager and other
key disciplines to prioritize use cases and organize work to drive down
risk and encourage strong project control structures.
For quick reference, here's a
summary…
Communication
- Understand stakeholder needs
- Ensure the stakeholder's understand the
capabilities and limitations of the architecture
- Gain consensus on approach through diplomacy,
compromise, and mediation
Business
Orientation
- Understanding the business/domain
- Be aware of financial implications, including
costs vs. benefits
- Discover opportunities to make trade-offs that
maximize value to the customer
Technical
Orientation
- Quickly grasp the ins-and-outs of the technical
and functional domains
- Work with the development teams to make sure
the target is met
- Don't gloss over the details - but don't get
buried
- Assume accountability for product delivery
- Manage scope
- Provide technical expertise
Leadership
- Think in the abstract - cut through the clutter
and quickly arrive at viable solutions.
- Know when to stay in the abstract and when to
go deep
- Engage the teams and build passion for the
vision
- Demonstrate commitment to continuous
improvement - for self and team
- Be open minded, innovative, and creative
- Delegate
Judgment
- Harvest patterns and relationship out of detail
and build meaningful models and abstraction
- Make good decisions
- Focus on the right things
You may also like to have a look at the competencies that are required by the Microsoft Certified Architect (MCA) program.