The most important skills of an architect
Depth and width of technical experience
Devs grow by increasing a depth of technical experience. For example becoming an expert in frontend development or expert Java developer.
An architect grows by increasing a width of technical experience.
To produce solutions that really work the architect needs to have good depth of technical experience. But the depth in 1 or 2 fields, it’s hard to keep up to date the depth in many fields (e.g. SDLC, DevOps, Project Management).
So the architect can have an expertise in backend development (depth) and wide knowledge in all related fields (width).
An architect with an expertise in frontend development can successfully design backend systems. She will utilize Devs expertise in backend if required.
Communication
Inputs for architecture work comes from business stakeholders. They talk different languages and they have controversial needs.
For example both marketing and legal departments can be interested in a product but both needs different things (sometimes even opposite ones) and don’t understand each other.
An architect should master communication to extract all business needs, to find common ground and win-win solutions.
Decision making
An architecture is a set of important technical decisions.
Nonimportant decisions should be delegated.
An architecture is a technical thing, there should be only technical stuff involved.
An architect should be decisive. It should not be a set of options with vague guidance.
Architectural thinking
Best practises, patterns and standards are good for Devs but they are quite harmful for an architect. What is the best practise today, can be the worst practise tomorrow.
He should identify the root cause and consider pros and cons of each solution keeping in mind what is really important. Take care of requirements while being pragmatic.
Automate check of architectural thinking while hiring software architects.
Whiteboarding
Important decisions are visualized to give a clear vision of the architecture.
Ability to quickly visualize an architecture given constraints is very important skill.
The one should not know all existing visualization approaches, techniques and tools. But it’s important to be confident in a minimal set of tooling and approaches required to visualize an architecture.
Knowing UML, BPMN and C4 is enough to cover all aspects of software architecture. Usually the one uses their simplified versions since stakeholders don’t know them anyway.