Showing posts with label Analysis. Show all posts
Showing posts with label Analysis. Show all posts

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

Tuesday, March 7, 2023

The importance of onboarding for tech employees

Not much about onboarding is discussed in the tech industry. As a critical component to any organization, here is what you should know as an employee and as an employer


Photo by charlesdeluvio on Unsplash

By far one of the most ignored things in tech is onboarding. Everyone talks about interviews, training, coaching, salaries and (recently) layoffs, but very little on the topic is mentioned.

Could it be because the topic is boring and won't get many clicks? Maybe.
Could it be because onboarding is for the HR only? For sure.
Could it be because tech people only is about tech stuff? Definitely.

Well, unfortunately that's all wrong. A lot.

As a critical piece for the human engine of any organization, onboarding should be carefully considered as it is critical for the long-term relationship between employers and employees, and directly impacts the profitability and growth of an organization.

High turnover

Recent studies show that the experience new hires have during the first weeks is crucial for the retention of the person. In fact, recent data outlines that "almost 20 per cent of turnover occurs within the first 45 days of a new employee’s start date".

If you add on top of that loss of projects due to shortage of skills, a very tight labour market, and the average cost to replace an employee taking up to $20,000.00/person, it's easy to see how much money is being lost by organizations doing a poor onboarding, especially on a tight job market / full-employment mode, as we're seeing in early 2023.

So how to make the overall experience better?

Improving the onboarding experience

First, start with proper training. Studies show that it can take between 3 and 9 months for the new hire to be fully productive in a company.

So forget that 1-week onboarding. Seriously.

In my experience, I've seen both extremes: people joining and kept on trainings for months, while others dumped in red-hot projects after mere weeks (or days). Obviously both examples are extreme and should sound like alerts for both employees and organizations as they signify either lack of projects or an understaffed organization.

However if we consider 3 month to be the ideal, then we can infer that organizations get a 40% discount should they onboard (and retain) a new employee within 3 months. Those are productivity gains that no organization should ignore.

Best-practices

So let's review how to address this critical issue. Here are some of my favourite onboarding practices for tech employees that leaders should consider:

  • Onboarding is not a one and done activity: it has to continue throughout the first year and potentially further on as is key to employee satisfaction.
  • Keep the employee engaged during the onboarding phase: offer different activities, have them meet different people and different teams. 
  • Make it fun: forget those long recording 
  • Foster interactions: introduce the new hires to other employees and teams they'll be interacting with.
  • Mix content: make sure your onboarding experience includes a mix of online led and self-directed sessions  
  • Avoid full-day back-to-back sessions: onboarding is exhausting. Don't make it painful.
  • Diversify: approach different topics and even allow them to explore different content.

How to make onboarding even more exciting

Additionally, if you want (and can) make onboarding even more exciting, here are 4 additional tips:

  • Provide a hands-on experience: Allow new tech employees to get hands-on experience with the technology they’ll be working with. If possible, provide a lab environment where they can play with the technology and get to know it better.
  • Assign a mentor: Assign each new tech employee an onboarding buddy. The onboarding buddy can serve as a mentor and help the new employee feel more comfortable in their new role.
  • Mix technology, medium and format: Use technology like video conferencing and interactive presentations to make the onboarding process more engaging. This will make the onboarding process more interactive and give the new employee a better understanding of the technology they’ll be working with.
  • Offer training: Provide online courses and hands-on training sessions to help new tech employees learn more about the technology they’ll be working with. This will provide them with the knowledge and skills they need to be successful in their new role.
  • Gamify: Use gamification techniques like rewards and leaderboards to make the onboarding process more interesting. This will help motivate new tech employees to learn more and keep them engaged throughout the onboarding process.

Next Steps

So what can you do to promptly address your own onboarding?

Well, the first thing is to take this conversation back to your manager and start the conversation. Additionally, interview recent hires and see what went good/bad/ugly in their first 6 months in the organization (don't mention onboarding).

Finally, engage the whole team and work together to make this experience great. Onboarding isn't only the responsibility of your leader.

Final Thoughts

Since the average cost to replace an employee getting up to $20,000.00, a very tight job marketplace and a high correlation between onboarding experience and employee retentions, companies of all sizes should re-consider the onboarding experience.

For the tech sector, in addition to that, consider making your onboarding experience more exciting by mixing sync and async sessions, training and gamification.

Further Reading

About the Author

Bruno Hildenbrand