By Mario Cardinal
The three types
Three characteristics differentiate a team from a group of individuals
Roles and responsibilities of the team
The hidden roles of the software architect
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.
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.
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:
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.
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?”
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:
These leadership roles support the emergence of a community of interests that has the following attributes:
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.
These are roles of the customer:
There are also some roles that have direct links to the customer, but are supported by the IT staff:
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:
These two support roles facilitate the work of team members:
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:
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.
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).