|
This role is responsible for designing the software architecture, which includes making the key technical decisions that constrain the overall design and implementation of the project. |
Role Sets: Roles |
|
Relationships
|
Additionally Performs:
| Modifies:
|
Main Description
This role leads or coordinates the technical design of the system and has overall responsibility for managing the major
technical decisions expressed as software architecture. This typically includes identifying and documenting the
architecturally significant aspects of the system, including requirements, design, implementation, and deployment
views.
This role is also responsible for providing the rationale for these decisions, balancing the concerns of the various
stakeholders, reducing technical risks, and ensuring that decisions are effectively communicated, validated, and
followed.
This role is closely involved in organizing the team around the architecture by working closely with the Project Manager in staffing and planning the project.
|
Staffing
Skills | Architects must be well-rounded people
with maturity, vision, and a depth of experience
that allows for grasping issues quickly and making educated, critical judgments
in the absence of complete information. More specifically, the person must possess
this combination of qualifications:
- Experience in both problem and software engineering domains,
with evidence of a thorough understanding of the requirements to solve the
problem and active participation in software development. If there is a team,
this experience can be represented
by different team members, but at least one person must be
able to provide the overall vision for
the project.
- Leadership ability to motivate and maintain momentum for the technical
effort across the various teams and to make critical decisions under pressure,
plus make those decisions stick. To be effective, this role must have the authority
to make technical decisions.
- Excellent communication skills to earn trust, persuade,
motivate, and mentor.This role cannot lead
by decree, but only by the consent of the rest of the project team.
To be effective, this person must earn the respect of the team members,
the Project Manager, the customer, and the user community, as well as the management
team.
- Goal-oriented and proactive orientation with a
relentless focus on results. This person is the technical driving force
behind the project, not a visionary or dreamer. The career of a successful
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.
From an expertise standpoint, this role also needs to show both design and
implementation abilities. However, from the design perspective, the effective
architect typically exhibits these traits:
- Tends to be a generalist, rather than a specialist, who
knows many technologies at a high level rather than a few technologies at
the detail level
- Makes the broader technical decisions,
thereby demonstrating broad knowledge and experience, as well as communication
and leadership skills
"The ideal architect should be a person of letters, a mathematician, familiar
with historical studies, a diligent student of philosophy, acquainted with
music, not ignorant of medicine, learned in the responses of jurisconsults,
familiar with astronomy and astronomical calculations." — Vitruvius,
circa 25 BC
|
Assignment Approaches |
This person in this role should be engaged in the project from start to finish.
For smaller projects, a single person may act as both architect and Project Manager. However, if possible, it is better to have these roles performed by different people to ensure that time
pressure in one role doesn't cause neglect of the other role. If you adopt this separate-role approach, both
individuals must make sure that they work together closely.
If the project is large enough to warrant an architecture team, the goal is to have a good mix of talents that covers a
broad spectrum of experience and share a common understanding of software engineering process. The architecture team
should not be a committee of representatives from various teams, domains, or contractors. Software architecture is a
full-time function, with staff permanently dedicated to it.
|
|