The Hidden Roles of Software Architects

By Mario Cardinal

March 2008

Table of Contents

The three types of architect
Three characteristics differentiate a team from a group of individuals
Roles and responsibilities of the team
The hidden roles of the software architect
Conclusion
About the Author

Summary: This paper presents the full spectrum of roles that software architects must fulfill when building enterprise applications.

An enterprise application is a software application intended for use inside an organization; the application must work within an existing architecture and be capable of being deployed and supported by an internal IT staff. Enterprise applications exist only to support the organization and its activities, or to help change the way business is performed. Developing for the enterprise is a very different challenge than building standalone applications. We start down the enterprise path as soon as we have to share resources, such as a relational database, among a large number of users, typically over a computer network.

To identify the various roles that a software architect must perform daily, I will make use of my personal experience. I have designed large-scale information systems for almost 20 years. As a software architect, I am responsible for conceiving a technical solution to support, automate, or even totally change the business processes of my clients. At present, I am an independent senior consultant working for the largest institutional funds manager in Canada and also for one of Canada’s leading financial institutions.

The three types of architect

This paper targets software architects, who perform different duties than enterprise or infrastructure architects.

Enterprise architects ensure convergence between business needs and technologies by establishing architectural guidelines such as enterprise conceptual data models or, in service-oriented environments, business service interfaces. For each project, they must validate that the technical solution design by the software architect complies with the corporation’s network policies and capabilities. It is interesting to note that the job of the enterprise architect is not terribly technical: It requires technical understanding, but to an equal degree it requires understanding business issues and business needs.

Infrastructure architects, on the other hand, are highly technical. They ensure the safe and productive deployment and operation of enterprise applications. This involves managing hardware, network and operating systems, as well as the so-called infrastructure services, including security, logging, and error management.

Software architects design the technical solution of the entire application. The logical and physical structure that they conceive must simplify the technical work and be within the technical capabilities of the development team.

Software architects must work hand-in-hand with enterprise and infrastructure architects.

Three characteristics differentiate a team from a group of individuals

Software architects are a vital part of the team responsible for building an enterprise application. The people involve with software architecture must not only possess technical leadership but also strong capabilities to work with a team of peers.

A group of individuals is not a team. Activities such as communication, sharing, mutual support, respect and appreciation of others can turn a group of individuals into a team. However, for a team to function there must be an additional element, an element of cohesion, what I call a collective intelligence. This collective intelligence indicates the cognitive capacities of the group and results from many interactions among its members.

A team is a community of interests characterized by qualified individuals with credible roles, a common goal and a shared leadership. Here are three characteristics of teams in greater detail:

Credible membership

There is only one selection criteria within a team: competency. The team is defined by a restricted set of roles. A role represents a type of expertise necessary to complete the project. An individual will be recognized as member of the team only if he or she offers competencies to achieve one or more roles.

In the achievement of a role, each individual stands in relation to one or more other individuals in the group. The individuals will collaborate with each other if they perceive that they can achieve their roles more effectively through collaboration. Team members who lack credibility will cause the team to collaborate poorly, and therefore the team will display a weaker collective intelligence.

Objectives recognized by all members

Each individual is an expert in his or her field, but possesses only a local and limited vision of the work of other team members. The only point anchoring the entire team, which is shared by all its members, is the common vision. In a community of interests, we share this common vision and we ask team members one simple question: “Does the work that I am doing help the team to achieve the common goal?”

Leadership shared by all members

One finds a collective intelligence within a team if the members agree to assume leadership roles. A leader is not a top-down manager who makes all decisions. This type of autocratic leadership does not lead to the creation of a team. In a team, there are various leadership roles that may change according to the situation. The most typical leadership roles are facilitator, public character, gatekeeper, matron, wise fool and mythical figure.

Here are the details of the leadership roles on a team:

  • The facilitator: Animates, regularizes and facilitates the workflow among team members, while protecting and even reinforcing the trust relationships among members.
  • The public character: This is the information specialist who likes to share knowledge. The public character is effective in identifying the information necessary for the good of the project.
  • The gatekeeper: Protects team members from external interruptions that would distract the team and bring little value to the project.
  • The matron: Organizes the social and interpersonal activities necessary to weld the team together and build its spirit.
  • The wise fool: Defuses conflict situations using humor, and may say with impunity things that nobody else on the team dares say.
  • The mythical figure: Recognized for past successes, vast experience and practical expertise.

These leadership roles support the emergence of a community of interests that has the following attributes:

  • Free membership: Membership in the group is founded on a common vision and a mutual confidence among members.
  • Horizontal structure: The rules, both tacit and explicit, are the same for all team members.
  • Dynamic organization: The distribution of roles is wholly voluntary and is based on the members’ competencies.
  • Collective management: Members are autonomous and responsible for their own actions. Strategic decisions are based on consensus decision-making.

Roles and responsibilities of the team

The team is defined by a restricted set of roles. A role represents a type of expertise necessary to complete the project. There are three main roles, each of which has several sub-roles:

1.      Customer roles, responsible for expressing the requirements of the solution.

2.      Technical roles, responsible for developing the solution.

3.      Support roles, responsible for facilitating the work of the members of the team.

Here are the details of each category:

Customer roles

These are roles of the customer:

  • Purchaser: Pays for the project and seeks to obtain the maximum value for end users.
  • End users: Use the application in their day-to-day jobs.
  • Pilot: Responsible for final acceptance testing of the application before its deployment in production.

There are also some roles that have direct links to the customer, but are supported by the IT staff:

  • Business analyst: Creates use case scenarios, documents business processes and designs the data model.
  • UI designer: Conceives the user interface.
  • Trainer: Teaches end users how to use the application.
  • Technical writer: Writes user, installation and operating guides.
  • Customer support: Helps end users to use the application more efficiently.

Technical roles

Persons with technical roles focus on conceiving a solution that meets the customer’s requirements. Five technical roles are necessary for carrying out a project efficiently:

  • Software architect: Conceives a solution that the technical team can create.
  • .NET developer: Designs and builds components and unit tests them; also corrects bugs assigned by testers.
  • Database developer: Conceives the database schema, and designs, builds and unit tests stored procedures; also corrects bugs associated with the database.
  • Tester: Tests use case scenarios worked out by the business analyst; for each failure, the tester opens a bug, assigns it to a developer, and closes it when it is resolved.
  • Deployment specialist: Builds and deploys the application using source control management and build tools. Also automates build and deployment tasks by using scripts.

Support roles

These two support roles facilitate the work of team members:

  • Project manager: In addition to stating the vision of the project and selecting the members of the team, the project manager plans and guides the various iterations.
  • Administrative assistant: Provides administrative support to the project.

The hidden roles of the software architect

Now that we have explained the roles and responsibilities of the team and have differentiated a team from a group of individuals, it is now time to discuss the hidden roles that the software architect must carry out in order to lead a team efficiently. These hidden roles are three leadership roles:

  • Technical facilitator: Once a technical solution is identified, the software architect facilitates the technical work among the team’s members, while simultaneously protecting and even reinforcing the trust relationships in the team. With this intention, the architect must set up the development infrastructure; lay down coding rules, nomenclatures and design principles; and provide architectural guidance. More often than not, since the role of deployment specialist is not an official role within the development team, the software architect also builds and deploys the application. This may explain why so many software architects in the .NET community also are experts with Microsoft® Visual Studio® Team Foundation Server and Visual Studio Team Build.
  • Public character: The software architect must be an information specialist who enjoys sharing knowledge, and is recognized for vast experience and expertise. The software architect must know how to find the information necessary for keeping the project moving ahead, identify a technical solution for a specific problem, and validate the technical feasibility of the solution. This is the main reason why software architects may still write code in a project: they need to build a prototype or build a proof of concept in order to efficiently transfer technical knowledge to the team. The software architect fulfills this role by being a technical mentor who raises team members’ competencies and uses his expertise to guide and assist the team in realizing the project.
  • Gatekeeper: The software architect protects team members from external forces that could distract them and would bring little value to the project. For example, the software architect manages all interactions with the internal IT staff. Whether the issue relates to the deployment and operation of the application, or to the development infrastructure, the software architect takes responsibility and leaves the other team members free to do their jobs.

Conclusion

The roles that software architects must fill when building enterprise applications are not only technical, but strongly associated with leadership. An efficient software architect not only designs a technical solution, he or she is a technical facilitator, a public character, and a gatekeeper for the team.

About the Author

Mario Cardinal is an independent senior consultant specializing in software architecture with agile processes and Microsoft Team System. He has almost 20 years of experience in designing large-scale information systems. For the third year in a row, he has received Microsoft’s Most Valuable Professional (MVP) award in the competency of Solutions Architect. He is a member of the Microsoft VSTS Customer Advisory Council. He leads the architecture interest group of the Montreal Visual Studio User Group and is the architecture track tech chair for the DevTeach Conference. Since 2004, he has hosted the Visual Studio Talk Show, a podcast about software development.

Mario holds Bachelor of Computer Engineering and Master of Technology Management degrees from the Ecole Polytechnique in Montreal, Canada. He also holds the titles of Certified ScrumMaster (CSM), Microsoft Certified Technology Specialist (Team Foundation Server), and Microsoft Certified Solution Developer. (www.mariocardinal.com).

Page view tracker