Allan Hoffman at Monster.com is researching the software architect role for an upcoming article on Monster.com, and he asked me to give input. Here is his leading question (in italics) and my response:
What are the key elements differentiating the role of a software architect from related roles (project manager, programmer, and so forth)?
The role of software architect particularly comes into play for reasonably complex projects. These require the co-ordination of a fair number of people as they create, improve and extend a collective work product. This is not just a matter of scheduling and workload balancing. Software construction is very far from route manufacturing assembly. Rather it is a process of invention and inventive evolution.
Software architecture has to provide a context for this innovation, creating boundaries within which programmers can work with a high degree of freedom, while nevertheless delivering a system with a coherent identity, with parts that collaborate to produce services with service levels that not simply emergent, but rather the result of a reasoned, goal-oriented process.
Software architects are the people with the skills and experience needed to design these architectural elements that become units of work, and units of innovation and experiment, containing the cost of change through the initial experimental stages, and throughout the evolution of the system.
Software architects need to have real system development experience. But they are not just technically great. They also need to have skills that are more like those of managers, because they need to lead various communities (including developers, but also managers, and others), persuading, consulting, mentoring, and so on.
Software development is innovative work; getting people to work towards something with a coherent identity and integrity is a matter of getting people to voluntarily contribute their imagination and best effort to working towards a common vision, within a common setting of goals, principles and overall system structure, and with a good idea of the commitments their piece of the system must contribute to the overall system purpose.
Setting system goals is strategic, motivating and aligning people to achieve them is leadership, helping people understand them and be successful is consulting, navigating all the relationships and networks of influence to get things done in organizational settings is organizational politics. The architect must have all these skills, or partner very, very well with someone who does!
- “The Role of the Software Architect”, by Ruth Malan and Dana Bredemeyer http://www.bredemeyer.com/who.htm
- “More on the Architect Role,” http://www.bredemeyer.com/Architect/RoleOfTheArchitect.htm
- Ruth Malan’s “A Trace in the Sand” Architecture Journal covers topics on the role of the architect, along with architecture topics. See http://www.ruthmalan.com/Journal/JournalCurrent.htm
Added 7/24/06: Allan Hoffman’s article on the Software Architect Career is out and he has done a great job. You can see it at Career Spotlight: Software Architect (http://technology.monster.com/articles/softwarearchitect/).