Tuesday, July 10, 2012

Characteristics of a software architect



Using the film industry as an analogy, the project manager is the producer (making sure things get done), whereas the architect is the director (making sure things get done correctly).

As the technical lead on the project, the characteristics and skills of the architect are typically broad, rather than deep

the architect is a technical leader, which means that, as well as having technical skills, the architect exhibits leadership qualities.
Leadership can be characterized in terms of both position in the organization and also in terms of the qualities that the architect exhibits.

the architect is the technical lead on the project and should have the authority to make technical decisions.
The project manager, on the other hand, is more concerned with managing the project plan in terms of resources, schedule, and cost

since the success of the architect is closely linked to the quality of the team, participation in interviewing new team members is also highly appropriate.

Successful architects are people-oriented, and every architect takes time to act as a mentor and coach to the members of their team.
"architect" refers to the role, which may be fulfilled by either an individual or a team.
If the architect role is to be fulfilled by a team, then it is important to have one individual who is considered the lead architect, who is responsible for owning the vision and can act as a single point of coordination across the architecture team

Good architects know their strengths and weaknesses
it is often the case that an architect is supported by a number of "trusted advisors."
Such architects acknowledge where they are weak and compensate for these weaknesses by either obtaining the necessary skills or working with other people to fill the gaps in their knowledge

Day-to-day, the development team will often look to the architect to tell them what to do and often how to do it

Therefore, a good architect will have a balance of software development knowledge and business domain knowledge

architects should have a certain level of programming skills, even if they do not necessarily write code.

Specifically, the architect should have effective language skills, including speaking, writing, and presentation abilities. Also, the communication is two-way. The architect should be a good listener and observer, as well as a good talker.

Communication with the project team is particularly important, since the architect is not simply responsible for conveying information to the team, but also for motivating them

An architect who is unable to make decisions in an environment where much is unknown, where there is insufficient time to explore all alternatives, and where there is pressure to deliver is unlikely to succeed. Such an environment is to be expected, and successful architects acknowledge the situation, rather than try to change it. Thus, the architect needs to be "thick-skinned" since they may need to correct their decisions and backtrack at times during a project

Successful architects are not geeks only concerned with technology.

http://www.ibm.com/developerworks/rational/library/mar06/eeles/










  • The role of the Software Architect

Build durable architectures (Independence with regard to API/framework providers)
Promote genericity and abstraction
Bridge between developers, project managers, and business experts
Often mixed culture (.NET/J2EE/opensource)

the role is often close to the role of a technical expert.
An architect is often an ex-developer who has accumulated such experience as to reach a good level in expertise.
Communication skills are required.
Diplomacy and pedagogy skills are also required to be able to explain architectures, debate about them and have them adopted
An architect must be able to step back and take a higher-level look, which is often difficult for developers and projects managers because they are often too focused on a specific project and so on immediate needs
This means raising from the application level to the information system level.
an architect must be able to quickly read and analyze code.
An architect doesn’t take part to a project only at its beginning, but during the whole project’s lifecycle to ensure a right implementation of the design and architecture.
"Architects are a lot slower in getting a solution, especially if the problem is simple!"

http://madgeek.com/Articles/Architect/EN/architect.htm

No comments:

Post a Comment