Being a modern day Solution/Software Architect is much more complicated than
you might think. On this article let's review the nuances of the role(s) and in which understand domains one should excel to
be a successful modern day architect.
Solution Architects and Software Architects are not the same role. But because the guidelines listed on this article serve perfectly for both, for the purposes of this
article, allow me to refer to both as simply, the Architect.
Apparently, there's a lot of confusion and ambiguity with regards to the Architecture role. Differently of most people think, an Architect is not an upscaled tech-lead or a principal engineer. In fact, the goals of each roles are so different that together, the Architect and a their technical counterparts make a great team.
With that said, allow me to introduce you to the Architect role.
Who is the Architect?
Architects are a
hybrid of technical and executive. Which means that in order to be successful at their jobs they should have strong technical, communication, executive and interpersonal
skills.
Architects are not expected to know every detail of a software
component or every possible argument to Your-Favourite-CLI. But they should know enough to be able to evaluate the tradeoffs of each alternative, choose and detail how a particular technology is used, and most importantly why.
For that to happen, it is recommended that Architects prioritize to go wide and not deep (sorry, you can't do both). Wide in diversity of technology, frameworks, patterns and practices is preferred to deeply knowing how one technology works (which's what the Engineer is supposed to do). So having experience with a diversified portfolio of technologies is strongly recommended.
Additionally, the Architect should not act as a sales representative of a particular technology/cloud service provider. Their choices should always favour business decisions first and foremost.
The modern day Architect
With a lot of competition, AI, a plethora of technologies and faster than ever changes in the business marketplace, how can one keep up to date with so much? This is where the modern day Architect comes in.
Modern day architects must be strong in technical and non-technical domains.
But because the modern day Architect being required to know so much and master many different domains, the first thing they should learn is how to prioritize what they'll work on. Make your goals SMART so they are prioritized, specific, measured and acted upon.
But remember that the fallacy that an Architect is purely technical has to be deconstructed. The modern day Architect should be technically strong while also possessing sufficient interpersonal skills to be able to lead teams, handle difficult conversations and interact with a diverse audience ranging from business executives, boards, RFPs to technical teams.
So let's review both domains.
Technical Skills
Software Design and Architecture
The modern software architect needs to be intimately familiar with software design principles and patterns, and be able to create efficient architectures that scale and can be easily maintained.
There is just so much here that the best way to address this is on another
post. For now, let's summarize it to design + architecture + enterprise
patterns, along with excellent
Development
Being able to program in a range of programming languages is essential for the modern Architect. Architects should be familiar with the syntax and features of the languages they work with, as well as the programming frameworks associated with them.
This should be a trivial one if you come from a development background.
However, I'd like to add two things. First, beyond excellent programming
skills, software architecture and design is crucial for the
Architect role. Next, scripting (ex. Bash, Python or PowerShell) is also
important as it's also needed by the DevSecOps area of expertise (see next).
Cloud Computing
Cloud computing includes a broad set of technologies that modern software architectures rely on, and a critical domain that the modern day Architect should be be well-versed in.
With the omnipresence of the cloud,
make sure you have your cloud fundamentals right. On top of that, add the
different facets of cloud (private, hybrid, multi) and complement all of that
with architecture skills.
Sound complicated? Indeed. In fact, being a successful Architect that
understands well the cloud (in all of its flavours) is much more than one may
think. Especially because no certification can measure so much.
DevSecOps
Next, DevSecOps. Yes, DevOps + Security shifted left. The modern-day Architect
should have strong fundamentals in everything from basic CI/CD pipelines to
Kubernetes, as they'll need to engage frequently with engineers and business
to make sure their solutions are modelled and work as expected.
Understanding of DevOps and Continuous Delivery are important for modern software architectures, and the modern software architect must be able to design and implement systems that use these technologies.
Data
Modern architects should have a deep understanding on data and related technologies. That includes data design, storage, analytics, security and governance.
Infrastructure
Modern architects should know enough infrastructure to help they clients wherever they are in their journey. That includes a solid understanding of virtualization, networking, containerization, monitoring, logging and infrastructure automation.
Security
Security is a moving target and a very difficult domain to master. Modern architects should know enough security to be able to understand, adopt security and communicate security to different stakeholders.
Governance and Compliance
Lastly, the modern architect should know enough on Governance, Privacy and Compliance. That includes standards, legislations and regulations as they have a profound impact on the business and on the final solution.
Interpersonal Skills
For an Architect, interpersonal skills are as important as the technical ones. Let's see the main ones.
Communication
Being able to effectively communicate with others is essential for the Architect. This includes ability to actively listen, clear communication, constructive feedback and be able to handle difficult conversations.
Communication is a critical skill for Architects as much of what their work - communicate their ideas and designs to other stakeholders - requires clear communication and must be done effectively.
Presentation and Public Speaking
Architects should be have strong presentation and public speaking skills, as they'll have to communicate to different audiences, both technical and executive.
Leadership
An Architect must have the ability to lead a team and guide them
to achieve the project's goals. Part of the expectations include setting expectations, giving directions,
and motivating peers.
Problem Solving
As part of their role, Architects must be able to analyze complex situations
and come up with creative solutions. In this area, skills such as assessing the pros/cons of each alternative, balancing tradeoffs have to be counterbalanced with technical and business-specific requirements.
Negotiation
Negotiation is a critical skill for Architects as they have to negotiate all the time with vendors, customers,
and other stakeholders to successfully achieve the project's goals.
Adaptability
Projects change all the time. Architects must be able to adjust to changing conditions and
respond quickly to new challenges.
Emotional Intelligence
Executives must have the ability to read and
understand the emotions of others and respond appropriately.
Networking
Architects must be able to connect to different stakeholders to build relationships with different types of professionals that help them make their projects successful.
Final Thoughts
Despite not being exactly the same, this article covered the general
characteristics Solution/Software Architects should have to be successful in
their hole.
As you may have realized, being a modern Solution/Software Architect is much more complex that one might think and involves being a hybrid tech-executive that takes a lot of time to master.
Hopefully this summary serves as a roadmap so you can guide your career
to the level expected by the market when it comes to software/solution architecture.
Good luck!
See Also