I’ve been working with numerous software organisations for years, occasionally where the software is intended to be embedded in hardware… I regularly meet people with the role “Architect”. But I don’t really have a clue what real architects do—they design buildings, basically…
I’ve seen a lot of bad effects caused by inadequate metaphors in software engineering—engineering, for a start. But even worse, in my opinion, is architecture. Architecture has no place in software—and to explain why I feel that to be the case, I need to understand what architects do.
My brother is an architect, so I asked him to explain in reasonable detail…
What (in the process of creating a building) is an architect responsible for? Which types of tasks does she delegate, what kind of decisions must she take himself? What kind of people is she working with and who does she report to?
First job of the architect is to analyse the needs of the client. A good architect will engage the client in intensive dialogue about all important aspects of the building: Costs, energy consumption, number of people to live/work/have fun in the building etc. She needs to pay sufficient attention to detail and to gain a sound understanding of the kind of activities that the clients plans to entertain in the building. Especially for corporate buildings, this requires a quite deep understanding of the client’s business. I was astonished by the similarity of the questions my brother asks a new client to those I use in a first assessment as an agile coach!
Very detailed prescription
The architect “designs” the building on many different levels of detail. Materials for the main structural elements (walls etc) are defined just as well as doorknobs, plugs, and the colour of the carpet. For topics involving technical specialist knowledge, like electricity and network, heating/cooling, machines that need to be built in, the architect involves the relevant specialists. An architect does not have fundamental technical knowledge of all the technologies built into his product!
Obviously, this is not a term that architects use—but what stunned me was that the elements of the building that its users actually see and touch are those that she spends the most time and energy on. For most projects, these visible details’ design and the resulting user experience is much more important to the architect than the actual “building blocks” constituting the main physical structure of the building. A good architect differentiates herself from a mediocre by her attention to detail.
Planning and Controlling
The role of an architect is different in construction projects in different countries. In Germany, the architect usually is also the project manager of the building project. In other countries, organisation works differently—the architectural design usually is handed over to a builder who manages the actual construction process.
Common layman’s view of work at a building site
Everybody I talk to about building processes and architecture seems to think that most people working at a construction sites are craftsmen—experienced specialists sufficiently equipped with skills and tools to work autonomously on the part of construction they are responsible for. I see this to be the case in software projects (or complex systems development, like cars, airplane, medical device development, for that matter), which seems to support the metaphor of an architect.
Quite long ago, this has in fact been the case for buildings. You might have read “The Pillars of the Earth”, where Tom Builder creates a cathedral with a team of experienced craftsmen. But:
- This has been in the middle ages (12th century)… And
- There hasn’t been an architect. That role developed (much) later.
How things are
Today, big construction projects are carried out by construction companies that bring in lots of “assemblymen”—basically untrained people who have the ability to carry out exact instructions to assemble pre-built parts into a greater whole. They are not expected to (and mostly can’t) make any decisions, not even small ones (they might even have instructions in which order to turn the screws).
A common architect’s saying goes, “when the workers begin to think, things start going wrong”…
Most, if not all, parts of the buildings constructed nowadays are industrially produced. There are no carpenters on site anymore who craft doors and frames, all parts are ordered from catalog and delivered on site to be assembled. That basically makes late changes to the detailed design impossible (or at least quite expensive), as small changes lead to parts that don’t fit anymore.
How the architect interacts with workers
This situation enforces the need for detailed designs and prescriptions and leads to the architect’s responsibility for detailed design up front. She needs to control every contribution and constantly check if everything is going according to plan and design… Command and control at its best, frequent shouting generously included.
I must admit this role description, as sketchy as it is, fits even less into my view of software development than I had thought. I’ll address the comparison of these findings in a later post. Until then, I’d like to know:
- Do you know of duties of an architect or details of her work that would complete this description?
- What do you think about the usage of the architect metaphor in software?
- What other metaphor would you recommend to use instead?