I got to thinking recently, "what makes a software architect a software architect?" With that thought I then delved into the various degrees and ideas about what differentiates an architect from a senior developer. With even more thought I pondered what breaks up architects, where are the separations within the description itself? While out eating and enjoying a bit of beverage atop the 26th floor of the Sheraton in Tacoma a few coworkers an myself assisted me in furthering my thoughts. Are there ways to draw borders around a program software architect versus an enterprise architect versus a business technology architect? Are these even legitimate separations?
I'm going to, for the context of this blog entry, attempt some definitions and maybe even declare some specific "architect" guidelines. So far I can think of several descriptive adjectives that software architects would fit into; business, enterprise, and program. What definitions these would probably have would be somewhere along the following initial rough drafts listed. Of course keep in mind my actual adjective use is in "draft mode" also!
Business Architect :: A Business Architect would define a resource (contractor, full time employee, or other) that has specialized abilities to define, at an executive level, what tools would work well together to accomplish a business goal. This person would also know how to get the best use, return on investment, and minimal amount of implementation burden with maximum usefulness of the software to the core business itself. This person would know what parts of the Java, Web, .NET, or other technology "world" would fit together for a particular business. This person would see how executive decisions are made, how open or closed source would be best for the business interests, and how these people expect the software to work within their respective business environments. This architect should be familiar with management methodologies that their suggested software implementations would interface with best during the software development lifecycle. This architect would most likely work in or come from a small business or fast moving business environment of a few people (3 or more) to a few thousand (1-9 thousand) people.
Enterprise Architect :: A Enterprise Architect would define a resource (contractor, full time employee, or other, in a enterprise usually a full time employee) that has specialized abilities to define at a large scale what a design should look like for a particular corporate environment. This individual would not particular know management implementation methodologies but would know how to integrate disparate technologies with the highest return and the lowest over head or cost to business flow. This person would not be particular concerned with the executive attitudes as the primary concern is increased consistency of patterns, methodologies, and repeatable design and development efforts. This person would understand application design scope within a department, multiple departments, and outside vendors and how these concerns will integrate with the design. This architect would most likely work in or come from a mid-size to large corporate environment ranging from several thousand (5-10 thousand) to the hundreds of thousands (100-200 thousand) people.
Program Architect :: A Program Architect (or Application Architect) would define a resource (contractor, full time employee, or other, in a Program Architect role usually a contractor) that has specialized abilities to define a small, medium, or large scale application for a medium size business. This person would know primarily how all layers, servers, and tools used for the application would integrate into an existing business or enterprise environment. This architect level would be almost 100% technical and not concerned with the business itself so much or the executive attitudes or methodologies. Of course some concern may be important but the primary focus would be the tools, servers, layers, and integrations. This architect would most likely work in or come from a small or mid-size to large corporate environment having spent several years contracting and be familiar with a wide range of software servers, tools, development environments, etc. Generally this architect should be familiar with small (3+) businesses to large corporate environments with thousands (100-200 thousand) people.
This is my initial outline. If you have anything to add PLEASE comment. I'd really like to further the details or even break things out into more specific categories and really get to the core of what makes up a real software architect role.