The Changing Face of Software Engineering: Embracing Core Fundamentals Amidst the Rise of Solution Engineers

Koshy
4 min readAug 30, 2023
Photo by Scott Blake on Unsplash

Introduction

Over the past 20 years, the rise of solution engineering has marked a significant change in the software engineering landscape. This has led to a need for defining and differentiating the roles of Software Engineers and Solution Engineers based on their unique skill sets and assigned responsibilities.

Software Engineering

Software engineers are typically tasked with designing and implementing software components efficiently. They achieve this by utilizing algorithms and design patterns to optimize software performance. Additionally, code reviews are conducted to assess the overall software design and how it handles different scenarios. During these reviews, What-If scenarios are debated and reviewed, as there are often multiple approaches to solving them.

The scope could include one or many software components and extend to distributed services hosted across network zones. The focus here is more on applying computer science and its foundations.

Solution Engineering

Solution engineering is a concept that emerged from the integration of various technologies. In the past, it mainly relied on ETL tools and offline jobs or runners that were integrated through a service broker or native TCP. Later, it evolved to include ESB or SOA, which were considered the default approaches for On-premises / Private Cloud strategies.

The process of wiring components requires the expertise of a software engineer who is capable of configuring the consensus/database system and has knowledge of latency and consistency states. In the event of any component’s failure over the network, the engineer must have a deep understanding of each component’s internal design to make the necessary tweaks and design adjustments.

Technological advancements and the shift towards cloud-based solutions have accelerated the rise of solution engineering. With various cloud providers like Azure, GCP, OCP, and AWS having matured, the challenges have been reduced/changed to a level where integrating out-of-the-box solutions using cloud services and APIs is the primary focus.

Our new role of interest is that of a solution engineer. They require problem-solving skills, expertise in cloud computing, and a comprehensive understanding of system integration. Additionally, it is desired that they possess one or more cloud vendor certifications. Solution engineers are mainly concerned with the consumption of cloud services, as opposed to the technical details of software design, which distinguishes them from software engineers. Similarly, Solution Architects have a broader understanding of the offerings from one or more cloud vendors and possess the knowledge to integrate them to address existing problems and constraints, including costs, non-functional requirements, and cross-cutting concerns.

Qualities of a Strong Software Engineer

A successful Software Engineer possesses a strong grasp of various computer science topics, including algorithms/patterns, coding practices, and software design. They are dependable in creating tools, services, and libraries that fellow engineers utilize. Typically, these individuals have completed computer science education at the graduate or master’s level.

Essentials of a Competent Solution Engineer

Solution Engineers should possess essential skills and qualities such as expertise in cloud computing, API integration, and problem-solving abilities. They do not necessarily need to have a background in computer science, but they should have a strong understanding of the different offerings from various cloud vendors and the necessary skills to choose and apply appropriate cloud solution patterns and can design/follow the solution architecture.

What is required from organizations?

To ensure the smooth functioning of organizations, it is crucial to have a clear understanding of the roles and responsibilities of solution engineers and software engineers. In addition to this, it is imperative to determine the required number of engineers for a given task. Engineering leaders should prioritize identifying the level of software engineering expertise and the scope of solution engineering for optimal results. From a foundational level, the question to ask would be whether the engineer would develop core/critical components/libraries/services that can be consumed by others (a software engineer), or would they look at the wider scope of integrating them (solution engineer)?

To ensure success, it’s crucial to strike a balance between meeting the requirements at hand and taking into account the capabilities of both software engineers and solution engineers. As both roles play a critical role, leaders must prioritize recognizing and valuing the strengths of both teams while making sure communication channels are efficient and highly connected.

The hiring interviews and the onboarding tracks should be treated differently. To ensure optimal outcomes, it’s important to clearly define career growth opportunities for both tracks and place professionals in roles that align with their strengths. When these roles work together, they can provide well-rounded solutions that effectively meet business needs.

As both roles are critical, their combined efforts can lead to well-rounded solutions that effectively meet business needs. Yes, we could merge both roles into the same role for small teams, but for large teams, distinguishing them is very much required.

Conclusion

In today’s diverse technology landscape, the roles of software engineers and solution engineers have evolved to a critical level where it is essential for enterprises to distinguish between them and build teams around their strengths. It is necessary to balance the solution engineering and software engineering roles. Organizations must appreciate the nuances of these roles and build teams that leverage the strengths of each.

Though the article touched upon a conceptual perspective of software engineering vs. solution engineering at the ground level, it could be expanded to other roles too :

Software Architect vs. Solution Architect
Software Engineering Manager vs. Solution Engineering Manager
Software Engineering Director vs. Solution Engineering Director, etc.

--

--

Koshy

A versatile software engineer, he has a range of interests beyond coding. Earlier posts are here : https://devwaves.blogspot.com/