Tuesday, April 4, 2023

The modern Solution/Software Architect

Understand what's required from modern Solution/Software Architects and learn why being one is much more complicated than you think 


Photo by Rodeo Project Management Software on Unsplash

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

About the Author

Bruno Hildenbrand      
Principal Architect, HildenCo Solutions.