It is beyond debate that the software development industry is characterized by troubled and failed projects fraught with missed deadlines, scrapped code, muddy accountability, and escalating cost. There has been a tremendous effort to improve tools and methodologies, as well as project and risk management techniques. However, the underpinnings of the software development industry are flawed and projects will continue to fail until it is understood that we are attempting to build huge information technology structures without architects, plans, and logical construction processes.
Mention the word “architect” and even kids on Career Day will intuitively form a clear image in their minds. They envision someone at a drafting table or at a building site supervising blueprints in hand. But put the word “software” before “architect” and the clear images become enshrouded in dense fog. This is true not just for children, but also for the clients of software development projects, the users of the systems, and even the software professionals themselves who have difficulty defining the title, responsibilities, and the role.
The Yellow Pages do not have listings for “Software Architects.” There are no degrees offered in Software Architecture, and yet there are increasingly large numbers of software professionals assuming the title despite the role remaining vague and variable.
Departments of Computer Science are educating software professionals, but they are producing engineers, researchers, and programmers the builders of software systems not architects.
Nonetheless, a spontaneous, inchoate trend toward software architecture continues. It is time to take this beyond a trend by formally establishing the profession of software architecture. The Worldwide Institute of Software Architects (WWISA) has been founded to accelerate this movement, as the American Institute of Architects did in the 1850’s.
“Architect” is a word with a great deal of history behind it; a history waiting to be assumed by the new profession of software architecture. Throughout the centuries, there have been architects who have arisen humbly from the trades and gone on to anonymously design and build cathedrals. There have also been great artists who have turned their attention to architecture at the behest of kings and popes. Since the Industrial Revolution, when the sheer variety, scope, and function of buildings multiplied dramatically, architects have been university-trained, licensed, and subject to professional standards.
Regardless of origins and the wide range of architectural styles through the centuries from Gothic to Post Modern the role of the architect has never varied. That role has always been to design structures to meet human needs and house their activities. This is a starkly minimalistic way to describe such masterstrokes as the chateaux at Chenonceau, Grand Central Station, and the Parthenon, but it is the definition of an architect and the only reason they exist.
The American Institute of Architects was established in 1857 to formally establish that profession. It was understood, of course, that architects had successfully been educating themselves and designing structures for centuries, but the scope of the Industrial Revolution changed everything. Degree programs were established and standards and codes were introduced to meet the challenges of the new age. We are now at a similar point in the Information Revolution. Compared to building architecture, our history is rather abbreviated, but in another sense, the introduction of the professional software architecture is long overdue.
The analogy between building construction and software construction is not new. It has been used to illustrate points, especially to end-users, and to borrow terms like “architect,” but it has never been fully developed. It is referred to as “simplistic” by software theorists, or dismissed as being just a tool for raising questions, but not supplying answers.
But the analogy is profoundly true and has the power to transform software construction out of its current crisis. It is simple and elegant with the elemental force to shift our current paradigm. It will empower not only software professionals, but clients and end-users, as well.
With the analogy, we can solidify the growing trend toward software architects, design, and plans as well as transform software processes, titles, roles, and accountabilities. With the analogy, we see that a software architect is as much an architect as Frank Lloyd Wright. An architect is an architect, whether a structure is erected from lumber, bricks, or computer code. Software architects design information technology structures to meet human needs and “house” our multifarious activities.
All architects, regardless of the “building materials,” are client advocates, and it is there that the process begins. Before ground is broken, or a site even selected, the client hires an architect as a designer and guide. The architect first listens to the client and studies the needs, desires, problems, resources, and environmental issues all of which define the client’s domain.
Based on these needs, preferences and constraints, the architect develops a vision of a structure and, in collaboration with the client, revises the plan until it is affirmed. The architect’s role is to then guide the plan to reality, spanning the worlds of the client and the technical builders. The client can be wholly ignorant of technical aspects of construction (footings, bearing walls, programming languages) but with the architect and blueprint, can validate and manage the logical, sequential building process.
The architect is the arbiter of design decisions and changes as the project continues, the design conscience, as it were. Just as in building construction, however, not all design decisions are made by the architect. The architect’s plan outlines, for example, where the electrical outlets are located, but the electrician designs the actual circuitry and configuration of the circuit box. In turn, the electrician’s helper would design the path of the wires strung through the walls and supports. Low and high level, construction and architectural level, design decisions are made in an analogous way in software construction.
Despite the increasing numbers of self-conferred software architects and the emphasis on architectural design, many clients are, in a sense, going in the opposite direction. The risk of large project failure has led to a short-term approach in which small software applications are built, one at a time, and added to in a modular fashion.
This reduces risk and increases manageability but, through the analogy, we can see that it is akin to building a powder room on a vacant lot and worrying about the rest of the house later. It is fine to build in phases, but it is folly to begin to build without an overall plan of the entire structure. The lack of architects with understandable plans, and the resultant chaos, has thwarted client expectations to the point where this limited, shortsighted strategy has tremendous appeal. But the old adage applies “If you don’t know where you are going, any road will take you there.”
Compounding this problem is a chasm separating software professionals from the people they serve; the clients, users, indeed, the general public, who find themselves intimidated by scary lingo and acronyms. Software professionals, in turn, are frustrated by the ambiguities of their roles and responsibilities, as well as their inability to communicate effectively with clients and users. Without effective communication and without understandable plans, clients are unable to validate and manage software construction and users are unable to communicate their needs. There is growing discontent, but few systemic solutions. The profession of software architecture provides a bridge over this gulf, as the profession of building architecture has since ancient times. Most clients and users, and certainly the general public, do not even know what “methodologies” are, but they can follow diagrams and drawings, as well as rely on the judgement of an architect who is accountable to them.
The architectural plan is consistent with needs and desires of the users and, at the same time, with the needs of the builders. Both sides are given a cognitive map of the design, as well as the logical process that leads to completion. Construction, even with a blueprint, is fraught with difficulty, but at least buildings get built and inhabited. Unlike software structures, total building failure is virtually unknown. With a profession of software architecture, the same happy fate awaits our information technology skyscrapers.
Software architects are organizing to establish their profession, but the client or customer will be the true driving force of this movement by demanding architects with plans. Degree programs will follow which will not only train qualified architects, but will attract new students to information technology, where the numbers are now stagnant and insufficient to meet ever growing demand.
The field of Computer Science has an engineering and programming focus that fits students with that vocational profile and range of interests. Students with different interests, perhaps in business or liberal arts, express a desire to have a career in the information technology sector, but simply do not see themselves as systems engineers or programmers. So, they major in business or psychology, for example, and take a few computer-related courses thinking that will cover all bases. It does not, however, work out in “the real world” where they find their computer skills too superficial for practical use.
A degree in software architecture would be similar to a traditional architecture degree in its multi-disciplinary approach. Both forms of architects require grounding in the technical aspects of construction to know what can be engineered and built. They do not, however, have to master engineering and building techniques. The educational focus would be on information technology and design, as well as such disciplines as business, management, and art. The goal of a software architect’s education is to provide a foundation in design and problem solving with information technology. These tools allow the architect to leverage the full range of information technology in the client’s favor.
Just as in building construction, the scope and range of architectural services can be all encompassing or limited. The project may be a kitchen remodeling or a corporate headquarters; a total software reengineering of a behemoth corporation or a lowly website. In either case, though, the architect strives to do more than merely fulfill a catalogue of client requirements. It is hoped that the structure will attain what noted (building) architect Christopher Alexander calls “the quality without a name.” That is, a structure that is ineffably greater than a sum of its parts, more than mere “function.”
This is the ancient marriage of the aesthetic and the practical that lies at the heart of architecture. It is hoped that it will flower and thrive in software where artistry is as important as it is in buildings. It has been quite rare in the software industry to date but, understandably, how can great aesthetic design be achieved with a chancy, design-as-you-build technique? Besides, as we all can imagine, it is simply impossible to be artistic in a crisis.
The Worldwide Institute of Software Architects (WISA), is a non-profit organization dedicated to the establishment of the profession. For more information on the profession of Software Architecture see the author contact information.
About the AuthorsMarc Sewell is the President of the Worldwide Institute of Software Architects, which opened on September 1, 1998. He has been Chief Architect of IBM, VP of Information Technology for Morgan Stanley, and is currently an independent software architect. Laura Sewell has written for the Atlanta Journal and Constitution and The Washington Post. She is the author of the WWISA website, and also works as a Disability and Rehabilitation Consultant in the insurance industry. |
Contact InformationLaura and Marc SewellThe Worldwide Institute of Software Architects North Cobb Parkway Suite 109-211 Kennesaw, GA 30152 (404) 786-WISA (9472) [email protected] www.wwisa.org |