I have been working as an architect on the current opportunity for more than one year. I am still in the process of learning. I learned one thing from the experience. That is: a job as an architect is indeed difficult because its decision-making process depends on a specific context.
Decision Made in a Context
Let’s imagine a situation like this. You are the project member of the new web service. You are responsible for technical choice and architecture design. We are planning the promotion with famous influencers. Hence we expect a sudden spike of access when she makes a post on her SNS. On the other hand, normal traffic is expected to be quite low. We need flexible infrastructure to scale out instantly. The business logic is quite simple. We do not expect much profit from the service, so we need to be cost-efficient.
Based on technical/business requirements, you might choose golang as it can scale-out instantly while requires very little server resource. That’s not a bad choice in the current perspective.
But the story is not that easy. Your organization operates another large-scale web service. The web service is running on top of Java. Your organization contains a good amount of technical knowledge to operate a Java-based system. You also might have series of tools that make operation efficient. You cannot get that organizational support if you choose golang. From this organizational perspective, Java might be a better choice even that is not the best technology choice.
Here you change your perspective to another: talent development. You have regular one-on-one meetings with several engineers. Most of the mid engineers look for new technical challenges. “I would like to try something new”. You remembered that multiple engineers told like this. Choosing Java might be a less risky choice to run the system. But some of the engineers might submit a paper in exchange for the running system. If you choose golang, the mid engineers might get motivated by their technical curiosity, and keep working hard to develop new service.
As I described above, we have several contexts behind the scene other than technical rationality. Depends on the context, the best choice can be even the worst choice. This is why the job of an architect is so difficult. You need to find the best answer identifying the appropriate context including organization, business situations, not just technology.
Importance of Story Telling
It’s important to share the context behind architectural decision-making. What happens if you miss this?
“I don’t understand what he said. He said Java the last time. Now he said golang. He is inconsistent”
I actually heard a complaint like this. I think this is because he did not convey the context of the decision.
We see conflicts many times while discussing the architecture with engineers. Architecture discussion is so difficult because both opinions are correct in many cases. Depending on the context, the different decisions can be both rational. Hence, it’s quite important the ability to identify the context and convey that to others. You need to verbalize the context into a vivid story so that others can understand the context and why the decision makes sense.
An architect needs to be a good engineer but also a good storyteller.