Table of Contents Previous Section Next Section

6.1 Leadership Is a Necessary, Learnable Skill

It is rare that a talented developer can immediately excel when first thrust into a leadership role. Furthermore, close examination of those who are successful typically reveals a history of informal leadership activity such as mentoring and assuming responsibility for tasks such as configuration management, which already affects a large number of fellow developers. Fortunately, leadership, while being a necessary part of an architect's skill set, is also a learnable skill.

Special characteristics of architectural leadership-vision, integrity, and decisiveness-must be emphasized in order to maximize a software architect's chance for success. Vision provides a concrete goal for a development team to focus upon. Without a vision, justifying the rationale for the many technical decisions that are made throughout the development life cycle will be difficult. A high standard of integrity is essential for motivating team members to look beyond their own self-interest and consider the various issues from the viewpoint of what is best overall rather than what is easiest for them. Finally, an architect needs to be decisive, both to facilitate progress and to maintain the confidence of the team that the technical issues are understood well enough to be quantified and acted upon.

The software architect's job is to clearly articulate a compelling vision for the software project. The vision provides the motivation for the team and provides the basis for making tradeoffs in order to accomplish the overall vision. This is extremely vital in software, where success can be realized through a variety of methods, each with its own unique set of tradeoffs and consequences. The architect's vision becomes the software project blueprint, the clear path through which the overall concept of the software is realized in an actual software product.

It is absolutely essential that the software architect be honest and have the absolutely highest standard of integrity. With software, the product is extremely malleable, lending itself to a tremendous number of approaches for accomplishing any particular task. As the technical leader, the architect must advocate a particular approach as the most desirable technical solution. If the architect's actions are perceived as being motivated by other than technical reasons (e.g., to appease various political forces in an organization), the trust of team members who are expected to preserve the architectural vision is undermined. While political forces may be just as real as technical forces from the viewpoint of the individual, political concerns are far less likely than technical forces to provide common issues to rally around.

Finally, the most vital attribute a software architect must have is decisiveness. When a technical issue that requires the architect to make a decision arises, more likely than not the worse decision is to avoid making any decision at all. Doing so impedes, rather than facilitates, progress, and it frustrates people who can be far more effective after the decision is made. Remember that failing to decide something is also a decision; in fact, it is unlikely to result in any sort of resolution and may run an increasingly high risk of magnifying the problem. Not being decisive demonstrates to others both a lack of urgency and a lack of confidence in resolving technical issues. Either of these is sufficient to compromise the architect's ability to serve in a leadership role, but the combination is a recipe for the certain alienation of other team members who do possess these vital qualities. If the architect does not exhibit a determination to have the development effort succeed in its goals, then other team members will question whether the team and the individuals within the team are meaningful and whether the team goals are worth pursuing.

    Table of Contents Previous Section Next Section