The discussion around the role of a software architect or a software engineer has been around for a while. Not surprisingly, even older is the discussion on where to draw the line between the architect and the civil engineer (yes, I’ve some of those amongst my family and friends).
I get this question a lot, and I have a well-defined view of where I stand as an architect, what is architecture and what is the role of the engineer and the architect in the architecture of a project.
The Pictionary metaphor
Imagine a group of friends playing Pictionary. One of the teams kicks off. John is drawing in the paper, Anna and Bob are reading the paper and trying to guess and say the right word.
The feedback provided by Anna and Bob is imperative for John to make a better drawing, so Anna and Bob are actively contributing to the drawing in some way. They are all playing with limited resources. Everyone is limited in time, the resources they can use to communicate, the resources they can use to make it happen.
If you know this game, you also know they are playing as a team. It’s all about communication. If they can’t communicate, the team will not say the correct word, and they will lose the match. No matter if John is convinced of his excellent drawing skills, no matter if Anna and Bob are convinced of their ability to guess the word and make a sound out of it. The key takeaway here is that everyone will work together over the paper in some way to come to the right conclusion.
In this metaphor, the word is the architecture, the drawing is a form of communication, John is the architect, Anna and Bob are the engineers. The better the communication and the better they know each other, the better results the team will get. John will never be allowed to tell “this is the word you must say”, Anna and Bob will never be allowed to ask “please tell me the word I must say”. If this was possible, what would be the fun, or the challenge, of it?
Let’s start with why!
Architects and Engineers pretty much look alike in their knowledge base. In the software industry, I mean this literally. Both are usually smart people, capable of playing on the other’s playground, both are trained to do so, but it seems that we do a certain thing better if we are focusing on it.
That’s the purpose of having both roles: quality!
If we let architects do engineers work or if we let engineers do architects work, they will certainly do it good, but they will not do it great, unless they change their area of expertise.
How do we do it?
Both the Architect and the Engineer play a fundamental role in defining the architecture of a project, but it only works if there’s communication in place.
Architects do not own the architecture neither they are obligated to define all of it because that would never scale. Same apply to engineers. People on both roles are thinkers by nature, meaning they are pretty much allowed by the laws of nature to have an opinion and to decide, but the famous sentence states that “with great power, comes great accountability” (or something like that).
For everyone who tells me “The architecture is owned by the architects”, I promptly will always answer “Is it?”.
In the software industry, we may think about adopting a new database technology, as an engineer, all fine with that. We will need to document our choice, performing a cost/benefit analysis, architects are not there to block us, they are there to help with things like:
- Understanding and managing stakeholder expectations
- Making sure the choice is aligned with the strategic vision of the company
- Understanding the available budget
- Double checking everything is being done inside the available budget
- Understanding how easy it is to hire people for such technology. Important: not only developing but also administrating it!
What do we do?
Both the Architect and the Engineer do similar jobs: Planning and Designing structures. Both contribute to the architecture. Both are pretty much aware of how two buildings connect with each other through a fancy bridge on the second floor. Both are capable of explaining this to anyone using a paper and a pen.
Then, where’s the difference? TL;DR: In the scope!
While the architect focuses on the spatial functionality and defining the materials and the strategic plan for the future within the budget, the engineer is more focused on making sure the buildings will have the correct design to make sure they stand under normal or extreme conditions, taking into consideration the budget and the strategic vision for the city. Both work with a limited budget, it’s imperative that everyone is well aware of how much money they got for the project, otherwise, it may end up oversized.
Architects and Engineers have some overlapping in their roles, but they have really different and well-defined responsibilities over the architecture. It doesn’t mean that one is a better job than the other. As anything else, you must chase the things you like to do, and make sure you are doing what you do the way it should be done.
subscribe via RSS