It is common to hear software architects draw parallels between physical building design and software system design. The analogy suffices to a certain extent and is a subject of a different post. However, the author of this post is interested in the path of ascensions between the two professions.
The contrasting difference is that a software architect almost always starts as a programmer learning & testing the composition of the building blocks. A building architect starts his or her path on a high level - normally without spending time working as a bricklayer at a construction site. The curriculum of a building architect includes courses on structure, design, environment, and history followed by hands-on learning of CAD tools that support the work.
Now looking at a standard computer science curriculum one would notice that very few courses actually cover the concept of software architecture. Such courses are taught on a graduate level and are normally part of a graduate level software engineering degree.
Is it possible or will it ever be possible to become an effective software architect without the rigorous understanding of the computer science discipline? Will the separation of concerns in the building industry (e.g. structural engineers, plumbing, architects, etc.) transfer over to the software engineering industry with pure software architecture companies? Thoughts in a subsequent post.