A reader saw my latest post on the impending dearth of enlightened architects that can lead the way with SOA, and was was prompted to ask: What about all those smart developers out there that understand the SOA big picture just as much as architects? Why are developers and architects treated as two separate job categories?Is the difference between 'architect' and 'developer' an artificial divide?
The reader, techboy_z, commented on Ron Schmelzer's observation that there's a "bifurcation in the IT community between architect and developer, with development seen as an increasing commodity whereas architecture is an increasing scarcity," noting the following:
"The real bifurcation is between these industry 'analysts' and real people. The divide between architects and developers is largely an artificial one - most developers could easily jump into the architect role. Developers are smart people, who do see the big picture. The real question might be 'what axe to grind does management have for creating an artificial divide?' I submit that this is a convenient artificial bifurcation used to cheapen developer wages."
Wikipedia sees architects as having more of a "selling-to-the-business" role. while developers have more of a technical leadership, project management role. It defines a "software architect" as one who is responsible for, among other things, "interfacing with the user(s) and sponsor(s) and all other stakeholders in order to determine their (evolving) needs to be realized in software," and "ensuring that a maximally robust software architecture is developed." The architect also performs cost-benefit analyses for proposed software projects. A "software developer" is "a person who is concerned with one or more facets of the software development process, a somewhat broader scope of computer programming or a specialty of project managing."
Perhaps there is a lot of overlap between the two roles, to the point where developers are involved in high-level aspects of determining what's best for the business, and architects frequently rolling up their sleeves and seeing projects through to completion. Bill Gibson, for one, suggested that a combined role called "devarchitect" may be emerging. Devarchitects, according to Gibson, "think of themselves as architects (and may have that job title):"
"They are intimately involved in defining the function, structure, and design of systems, including performance, scalability, reliability, interoperability, etc. But they are also deeply involved in developing aspects of those systems, perhaps writing and testing early prototypes or core elements, often in the early days of a project so that the technical architecture and its execution characteristics can be proven, as well as digging in to deliver some of the more complex components as the project ramps up. A devarchitect rolls up his sleeves and gets his hands very dirty. Many high-end developers are devarchitects or aspire to be. Devarchitects often don't want to be anything else - they don't want to get out of touch with development and the details of the technology. And in some cases their organizations can't afford the luxury of full-time architects."
It would be great to hear what readers think on this question -- are the developer and architect roles essentially one in the same, with an "artificial" divide created by employers' job descriptions? Or should these be two distinct roles?