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.
4 thoughts on “Software Architect?”
In the enterprise architect you have a few ‘what an enterprise isn’t like’. I personally would like to see more of what an enterprise architect is and not what it isn’t. I know you’re trying to be comparitive, but I feel as though you need more meat with them potatoes.
Dude, you’re thinking way to hard about this. I’m not sure why. 🙂 I think any business that wants to put these types of labels on a position will loosely define the job descriptions so they don’t have to think this hard. In general, an Architect doesn’t build anything, just plans what needs to be done, and thinks of not only tools but widgets to slap together to make it work. Developers do the glorious grunt work (implementing a solution that fits within the architect’s framework) and may speak to the feasibility (or lack thereof) of implementing the architect’s design. Further dividing architects into subcategories is outside of my wants and desires. I guess if you need some padding for layoff times, creating these extra positions will be an easy way to see where you can let people go.
You might want to cover the role of a chief architect, specifically within software product companies where they’re thinking about the overall roadmap of a product or suite of products. Really high level, I worked on a search kind of like this once though the title was a bit more general. Funny how that works. 😉
—> Hey Tom, you’re absolutely right! I’m always thinking to dern hard about these things! 😉 But anyway, it was an ongoing discussion at lunchtime a few days ago. 😮 I agree though, that no one would really sit down and specific to such details, but among developers we tend to be semantic arguers. Thus among this recent lunchtime conversation it was brought up that even though a person would generally be called an "software architect" at a company, to developers there are really more than one type of architect.
For instance, compare let’s say, Scott Hanselman of Corillion Corporation and Martin Fowler. Two architects, two completely different approaches. Thus my desire for clarification! 🙂
—> Hey Amela, thanks for the post, I’ll definitely add that to my list of Software Architect Definitions. 🙂
Hopefully I can get a list together and might even post it as a dedicated Wiki type page. Eventually I want to upgrade the site and have a lot of technology Wiki pages just like that.
Thanks to both of ya for commenting!!
Comments are closed.