Is it recommended to first be a system admin in a user support role before becoming Cloud engineer in Azure/AWS GCP?

Is it recommended to first be a system admin in a user support role before becoming Cloud engineer in Azure/AWS GCP?

ยท

10 min read

This question was not directly asked but Parveen found it on Reddit, and I thought it was a good opportunity to clarify the common cloud roles.

Background: 1st Line/2nd Line IT guy for O365 and Windows 10 etc. for the past 3 years looking to grow career over the coming years. Interested in Azure/Cloud/Powershell/Automation etc.

Supporting users in a traditional IT role with on-prem servers or Intune is something which doesn't pay as much and isnt as cool or sexy (at least to me) as being a Cloud Engineer in Azure/AWS setting up servers and apps in servers, DevOps stuff etc. Actually, the pay is probably 2 times the pay for traditional IT here in the UK

Is it recommended to first be a system admin in a user support role before becoming Cloud engineer in Azure/AWS GCP?

Defining the cloud role

When I start to hear PowerShell, Automation, setting up servers and apps, the role sounds like a DevOps Engineer though the original poster (OP) is talking about a Cloud Engineer role.

I want to spend a bit of time clarifying these different roles.

To help, I created this ven-diagram:

  • the outside labels being traditional roles,
  • and the interior labels being cloud roles.

Screen Shot 2021-08-04 at 2.59.51 PM.png

There is no perfect ven-diagram for cloud roles, so take this with a grain of salt. It's totally possible to see DevOps and Solutions Architect flipped in position depending on how you characterize the underlying skill requirements.

Traditional Roles

Let's start by describing the traditional roles, so we can align our existing interests and skillset to find the right cloud role for us.

Developer

A developer builds web, mobile or desktop applications. A developer is going to have deep knowledge of programming languages and frameworks. A developer may also know how to deploy their application to servers but they will have more strength in feature development, debugging and bug-fixing or fine-tuning the performance of their application. A developer could lack traditional Computer Science background in algorithms and systems design and rely on being a good practitioner of programing by sourcing existing solutions or third-party libraries to achieve an end result.

Screen Shot 2021-08-05 at 10.13.13 AM.png

Administrator

An administrator configures, troubleshoots and maintains existing software, hardware or systems. Administrators belong to the sphere of Information Technology (IT), like computer networking, computer repair, support desk, maintaining workstations, or Windows or Unix servers. A very common route for Administrators into the cloud industry is via Microsft Azure because IT is heavily entrenched in Microsoft Windows Servers, Exchange Servers (Email), and Windows Workstations. Many organizations are looking to offload their traditional infrastructure to cloud services, and Microsoft's migration path is much easier than say AWS or GCP which have been more focused on modern application development. An Administrator does not tend to have deep programming knowledge with more of a focus on scripting languages to configure and automate programs eg. Bash or PowerShell. An Administrator is used to dealing with layers of legacy systems, with incomplete documentation and appears to discover or manufacture solutions from thin air. They aren't bothered by not fully knowing why a solution works, because the underlying information or reason is not known.

Screen Shot 2021-08-05 at 10.18.04 AM.png

Systems Engineer

A systems engineer, designs, integrates and manages complex systems. Engineers come from an academic background in ComputerScience (CompSci) with a deep understanding of Mathematics, Algorithms and Systems Design. An Engineer may not have deep knowledge in a specific programming language or framework, but use their foundational knowledge as an all-purpose tool to tackle any kind of technical challenge. Putting design to paper before implementation is common. When dealing with technical uncertainty a systems engineer will form a hypothesis and create iterative prototypes to arrive at a conclusion. They want to know why in multiple variations and edge cases whether their technical solution works, where an Administrator or Developer may accept a "good enough" solution to meet the business use-case or time-constraint.

Screen Shot 2021-08-05 at 10.23.48 AM.png

Which traditional role?

So it sounds like the OP has been operating as an Administrator of sorts.

Cloud Roles

Now, let's take a look at different cloud roles and see which one best reflects the OP interests.

Cloud Developer

A Cloud Developer builds web or mobile applications while offloading as much of the functionality to cloud services. There are three approaches that a Cloud Developer has over a traditional developer.

Bolting Approach

A Cloud Developer can take an existing monolithic web application like a Ruby on Rails app and bolt-on cloud services such as background jobs, assets management and transactional emails. This is known as the move-and-improve migration by Google Cloud. For deployment, they can utilize a Platform as Service (PaaS) such as AWS Elastic Beanstalk, Azure App Services or Google App Engine so they can focus on their code and not worry about the underlying infrastructure. An exceptional cloud developer may be able to setup or at least debug a CI/CD pipeline such as AWS CodePipeline, AWS Codebuild and AWS CodeDeploy but often this is the responsibility of a Cloud Engineer or DevOps Engineer.

Cloud-Native Framework and Platform Approach

A Cloud Developer could also leverage a modern application architecture that is highly opinionated such as AWS Amplify, Google Cloud's Firebase or Supabase. For Amplify and Firebase, these frameworks leverage serverless cloud services and in some regards completely abstract away the Infrastructure as a Service (IaaS) offering so you can write code that will be highly scalable, secure, durable and globally available with a built-in CI/CD pipeline. Supabase is a cloud-native CSP agnostic framework so you trade portability for convenience.

Serverless Approach

A Cloud Developer can build their web application entirely using serverless services to have the maximum amount of control with the least amount of responsibility at the greatest cost-saving but with the steepest learning path. Rolling your own serverless at the time of writing this article is a rare skill.

I didn't forget containers and microservice architecture. I just felt that is more in the realm of a Cloud Engineer and DevOps Engineer.

Screen Shot 2021-08-05 at 11.31.48 AM.png

Cloud Engineer

A cloud engineer is the most important support role because they can help everyone.

Supporting Cloud Developers

A Cloud Engineer would be capable of building web applications (and most likely modern application architecture) a Cloud Engineer would free up a Cloud Developer time to focus on their application code while a Cloud Engineer can focus on application integration to various cloud services.

Supporting Solutions Architects

A Cloud Engineer would implement prototypes or production cloud workloads architected by a Solutions Architect. This would free up a Solutions Architect to spend more time on communication, vision, research and architectural design.

Supporting DevOps Engineers

A Cloud Engineer could be responsible for building the first version of a deployment pipeline but is not focused on the automation or the long-term refinement of said pipeline. Once that pipeline is proven the responsibility of automation and refinement can be passed on to a DevOps Engineer.

The-All-Hats or Solo Role

A Cloud Engineer can also perform well on their own or taking on any role which is yet to have a dedicated resource. In larger teams a Cloud Engineer can be seen as Solutions Architect Jr, carrying out implementations and little to no input to the overall architecture.

Screen Shot 2021-08-05 at 11.36.10 AM.png

DevOps Engineer

A DevOps Engineer is focused on the Software/System Development Lifecycle (SDLC). They automate cloud services by writing Infrastructure as Code (IaC) with AWS CloudFormation, AWS CDK, Hashicorp Terraform, Pulumi, AWS CDK, Google Cloud Deployment Manager, Azure ARM Templates or Azure Blueprints. They have good skills working with scripting languages, and they will need to have enough programing knowledge in common languages eg (Javascript, Python), to work with SDKs.

A DevOps Engineer has deep knowledge of virtualization and all levels of compute eg: Virtual Machines, Bare Metal, Containers, Serverless Containers, Functions as a Service, Kubernetes (K8).

A DevOps Engineer has a strong understanding of Cloud Networking.

The difference between a DevOps Engineer and a Systems Administrator (aka DevOps Jr) is that a DevOps Engineer is a proactive role implementing an automated system that can auto-remediate and prevent issues before they arise, whereas a Systems Administrator is reactive, where they are the ones responding to emerging incidents, or they are dealing with non-automated infrastructure.

A Cloud Security Engineer is a sub-class of a DevOps Engineer, where they incorporate Security in all aspects when building out automated cloud workloads as well as working with specialized security cloud services.

Screen Shot 2021-08-05 at 11.47.23 AM.png

Solutions Architect

A Solutions Architect focuses more on researching emerging cloud services, eliminating technical uncertainty for future projects, communicating and directing their technical vision during a project with multiple team members, and designing cloud workloads rapidly with confidence in pre-sales activities to acquire or retain customers.

A Solutions Architect should be capable of doing everything a Cloud Engineer can do, but they have to watch out for spending too much time away from implementation otherwise their designs will look good on paper but in practice due to lacking the experience of the various caveats and configurations of cloud services. This is what we would call in the industry a "Paper Architect".

The Solutions Architect is the most sought-after cloud role but unfortunately is not accessible to most because really a senior role. I think this is the fault of the AWS Solutions Architect Associate certification being popular, easy, broad, and one of the first cloud certifications. Really I think what most people want is to be a Cloud Engineer.

Screen Shot 2021-08-05 at 11.51.09 AM.png

Which cloud role?

After a tour of the cloud roles, I think the OP is looking to be a DevOps Engineer, but they'll have to decide based on my provided descriptions.

WTF is a Cloud Architect?

There is one cloud role you might come across called a "Cloud Architect" in various educational articles from ACloudGuru, Cloud Academy and Study.

Sometimes a Cloud Architect is described as a Cloud Engineer or a Solutions Architect or neither.

However, when you search job boards, interact with bootcamp, private schools career services or directly with tech companies, you'll be hard press to find this role.

cloud-architect.jpg

I think Cloud Architect is lazy marketing teams possibly just copying each other marketing materials, trying to upsell to their educational services.

Neither I nor the cloud industry has room for another cloud role title.

Honestly, I think if we give it a bit of time and someone is going to invent "Cloud Administrator"

The OPs Question

To answer the OPs question:

Is it recommended to first be a system admin in a user support role before becoming Cloud engineer in Azure, AWS or GCP?

You don't need to be a Systems Administrator before becoming a Cloud Engineer. You would just straight off be a Cloud Engineer as it's commonly the catch-all junior role and the main entry for most people as their first cloud proper role

Modifying the OPs question to be more inline with what I think they're asking:

Is it recommended to first be a system admin in a user support role before becoming DevOps engineer in Azure, AWS or GCP?

Systems Administrator is generally a DevOps Jr role and it's very common to start off as a Systems Administrator first before getting a DevOps role but you can also be a Cloud Engineer and transition to DevOps Engineer.

If you're being pigeon hold as a Systems Administrator then you may actually be a Cloud Support Engineer which by the OP description was they don't want to be.

You need to change teams or companies until you find one with upward mobility to a DevOps role, or self-study enough for a DevOps position while being a Systems Administrator or Cloud Engineer.

Another variant I think that should be asked:

Do you need a background in Computer Science to be a Cloud Engineer?

No, it will help to have good knowledge of systems design, but you can become a practitioner in systems design just by studying cloud certifications. Of course the larger the company the more they tend to prefer Computer Science degrees.

Parting Thoughts

I think the center of the ven-diagram is up for debate. It could have been either Solutions Architect, DevOps Engineer or Cloud Engineer. Even as I write this I would rather put Cloud Engineer in the middle due to it being a supporting role but I put Solutions Architect at the center for it being one of the most senior roles that test your depth of knowledge in cloud services.

This article wasn't a definitive list of all Cloud roles. A very common entry role is Cloud Support Engineer.

If anyone has their own opinions about my role definitions, my diagram or whether Cloud Architect is a real role, feel free to share your comments.