Grady Booch IBM Fellow Podcast 2: Review the role of the architect (5 min 0 sec) IBM software architect kit http://www.ibm.com/developerworks/architecture/kits/index.html Kent Beck once quipped that, software architecture is what software architects do, and therefore by implication what software architects do is, well, they architect software. About a decade ago, it was fairly rare for me to encounter individuals who would have software architect or chief architect on their business card. I would go up to such people and typically ask them the question, what do you do, and unfortunately, many of them would give me an answer not unlike that of Kent's tongue-in-cheek definition. Philipe Krustien wrote a delightful paper a few years ago in which he indentified a variety of untruth about software architecture. The following he identified as many observe as usually true, but in reality, is patently false in practice. Some organizations believe that architecture is just paper. Absolutely wrong. Architecture and design are the same thing. Architecture and infrastructure are the same thing. Your favorite technology is the architecture. Also false. A good architecture is the work of a single architect. Not necessarily so. Architecure is simply structure. Not so, it's often behavior as well. Architecture can be represented in a single blueprint. Perhaps true for trivial systems, but not for ecnonimcally interesting ones. Systems architecture precedes software architecture. Also false. Systems and software architecture involves a very careful and measured dance between the two. Architecture can neither be measured nor vaildated. Also false. Architecture is a science. Well, architecture is also an art. Let's focus upon one of the things that Philipe was speaking of -- the myth of, a good architecture is the work of a single architect. Again, this may be true of trivial systems, but, in our experience, an architect is really the person -- team or individual -- responsible for a system's architecture. And again, by architecture we mean that assembleage of significant design decisions that define a system whereby significant we measure in terms of cost of change. Philipe goes on to note that the life of a software architect is a long and sometimes painful succession of suboptimal decisions made partly in the dark. In other words, this is a classical engineering activity. Designing economically interesting complex systems is hard and involves the resolution of a variety of engineering forces. That's where the architect steps in. So to be clear, an architect is not just a top-level designer. The best architects I encounter are also code warriors. These are the kind of people who have true skin in the game. You need architects who are not blue-sky dreamers because you want them to design systems that are indeed feasible to build. It's also the case that architects are not the project managers except in trivial or small projects. Jim Coplain has observed in his work on the patterns of organization that a common pattern you find within hyperproductive organizations is the binary star of the systems architect and the project manager orbiting one another, and the rest of the team surrounding them. It's also the case that a software architect or a chief architect is not necessarily a technology expert or a domain expert but they do have experience and expertise in both of those cases. They have the ability to reach out to people on the team who are the detailed experts in both of those cases. And they have the unique skill to fuse both the domain as well as the technology expertise. It's also the case that the architect is rarely a lone wolf. Communication, political leadership, and a shared technical leadership are important skills for the architect. Oftentimes you'll find that architects are grown, as opposed to just made. The best architects usually grow out from code warriors to project leaders to system designers, and eventually, to chief architects. To further your career as a software architect, I'd recommend a couple of associations that you take a look at. There's the Worldwide Institute of Software Architects at wwisa.org, or the more recent International Association of Software Architects at iasa.org. Software architecture is an important activity among the stakeholders of building economically interesting systems, and as such the profession of architecting in software is one that is growing into an identifiable set of activities.