The Pathway to DevOps

Mohamed Abukar
17 min readOct 6, 2021

How to get started in DevOps? Resources, advice and a pathway you can follow to get you started and find your foot as a DevOps Engineer, Platform Engineer, Cloud Engineer or Infrastructure Engineer.

Latest update (30th November 2021)

I wrote this article as many often ask about my career path and how to break into this field which is currently booming. This article was written while considering those with zero to minimal IT experience or background.

As always, I would like to thank God first and foremost, for providing me the opportunity to share my knowledge and experiences so others can benefit. As someone who came from a mechanical engineering background with no work experience, to becoming 5x AWS Certified, 3x Azure Certified and 3x Kubernetes Certified in under a year to previously working with a Big 4 firm in consulting, and now working as a Platform SRE Engineer working with multiple cutting edge technologies — these are my recommendations and advice to help you get started and do well in this fast-paced industry. A nice quote that rings in my head quite often is:

“It’s said that a wise person learns from his mistakes. A wiser one learns from others’ mistakes. But the wisest person of all learns from others’ successes.”

John C. Maxwell

For the average person considering to get into this field, it may seem daunting with the amount of learning. Trust me on this, if you set your mind and focus for around 6 months, you will be able to land a solid role as a DevOps/Cloud/Infrastructure Engineer.

A lot of people in the pandemic were affected; job opportunities were rare, and competition rate increased as holding degrees became common these days, and this doesn’t really make you stand out from the crowd. Discovering this field and the potential it offers was really eye-opening. Many look for a better livelihood and as a result when they see salaries in this field, it motivates them even more. I don’t need to mention any figures but you can do the research for yourself. Not everyone is motivated by this, some are motivated by job stability and long-term career progression. Whatever the case, there will be a something that motivates you to keep going.

Firstly, what is DevOps and what does it mean?

You can google this word for days and try to understand the meaning of this commonly used buzzword, but I will save you the research time (but by all means feel free to read up on it) :

DevOps is a method to deliver your application while splitting the responsibility and workload.

What does this mean?

For example, let’s say someone who writes code (a developer), their job is to create as many features as possible in the shortest time.

And then you have someone who deals with operations/infrastructure, they want the least amount of features as they have to implement each feature and this is considered a change. This change can be risky.

Both of these teams have different motivations and goals; which are not aligned. This is where DevOps came into play.

DevOps aims to meld development and operation — Dev + Ops = DevOps.

However, some will argue and say that “DevOps Engineer” is not really a thing and say that “DevOps is a way of working”. Technically, they are correct but the term has developed and is now often used freely by many large organisations.

Other role titles related to what a DevOps does are: Platform Engineer, Infrastructure Engineer, Cloud Engineer and Systems Engineer. Regardless of all this, the opportunities in this field are abundant, with recruiters bombarding your inboxes everyday.

Enough explanation, let’s get straight in and show you a roadmap!

This map, in my opinion, displays what a DevOps Engineer can do. Of course, there are other methods for such a roadmap, but here is how I went about it.

As always, we must strengthen the fundamentals before we do anything fancy. Doesn’t matter how boring, this will keep you rooted for years to come.

To begin with, the 4 fundamentals I recommend to anyone looking to start learning are: (Links to course are provided towards the end of this article)

  • The fundamentals of Linux and being able to navigate the linux CLI (command line interface ).Yep, this is where a lot of the magic happens; you may have come across Command prompt CMD/Powershell for windows users and the Terminal for mac users. Just like Windows and MacOS, Linux is also an operating system — In fact, one of the most popular on the planet. Android is powered by the Linux OS. A lot of the DevOps tools that you will come across like Docker and Kubernetes, require you to have a grounding in Linux.
  • Git (version control) — this is important as you will learn how to keep track of your code and allow others to make changes
  • Python — as much as you may dislike coding, you will need to learn the fundamentals. Python can get so deep but as a DevOps/Platform Engineer, the fundamentals, automation and being able to read the code of others will suffice for the beginning. Python is also one of the easiest programming languages to pick up.
  • Learn 1 cloud technology — it is easy to get carried away and jump between learning cloud providers, but the best option is to learn one cloud provider and learn it WELL!. For someone completely new to IT, I recommend you to start with Amazon Web Services (AWS). For others who have worked in IT before as a 1st/2nd/3rd line Engineer, Helpdesk Support Engineer or General Engineer who is familiar with the Microsoft suite (Active directory and the likes), I would say to begin with Microsoft Azure.

These fundamental tools are the pillars that will carry you throughout. To be honest with you, you will always come back to the foundational layer, as you will need to solidify it. Linux and Python CAN both get complex and may take an individual many years to master. The cloud and its services (AWS, Azure, GCP) are always evolving, and there are constantly new services being released every year.

Something I haven’t mentioned and goes without saying, your networking skills need to be strong. You will be working with VPCs/VNs (Virtual Networks), Load Balancers, subnets, etc. quite often and you may need to configure these some days. Of course, when learning cloud technologies, you will learn this but it’s a topic where many who are new to the field struggle in. To patch this up, go through a Networking fundamentals course if at any point you feel like you have missed out on things.

Once you have built your pillars and they are en route to becoming firm, feel free to broaden your knowledge and go for the more “advanced tools” and softwares.

Make sure to complete the courses for Python, Linux, and Git. For AWS, there will be a fundamentals exam known as the AWS Cloud Practitioner (CCP). This is a multiple-choice exam that gives you a foundational understanding of cloud concepts, shared responsibility models, security & compliance concepts, some of the services within AWS, and billing & pricing. Make sure to understand this well and don’t skip anything, thinking it’s too easy.

If you feel confident or you have passed the AWS CCP (Foundational exam), you may push a level and go for the AWS Solutions Architect Associate exam (AWS SAA). It can be a tough exam but with enough study and determination, it is definitely achievable.

How to study for these cloud certifications and pass the exams?

List of currently available AWS certs — as of October 2021 (https://aws.amazon.com/certification/)

Feel free to adjust your study patterns to suit your needs. Some of these steps I like to follow which have assisted me:

  1. Pick an instructor. There are currently quite a lot out there: Stéphane Maarek (DataCumulus & Udemy instructor), Adrian Cantrill (learn.cantrill.io), and Andrew Brown (from freeCodeCamp & Exam Pro). They are all good instructors for AWS but with different teaching styles. I personally used Stéphane Maarek courses on Udemy to prepare for the exams. If you are looking for an in-depth course, Adrian Cantrill’s course is very good.
  2. Once you’ve picked an instructor, choose the correct course and watch the whole course from beginning to end. Make sure to attempt ALL labs within the course especially the ones you don’t understand and do further reading on those.
  3. Read AWS Docs — https://docs.aws.amazon.com/. This is where all the official AWS information lies. Most, if not all instructors refer to this when teaching.
  4. Extra practical labs are important in order to gain a better understanding of the topic
  5. Attempt mock exams provided by instructors. I recommend Jon Bonso for the AWS Practice Exams — they will prepare you well for the real exams.
  6. Make sure to not attempt the same mock exam more than twice otherwise you will just memorise answers.
  7. Once you are able to score past 70/80% consistently in exams, book the real exams. The pass rate for most of them is in the range of 70–75%.
  8. You can book the exam here: https://aws.amazon.com/certification/certification-prep/testing/

Note: These exams can be done at home. The prices vary based on the hierarchy (the foundational ones being the cheapest and vice-versa). Once you have completed the exam, you will receive a badge and a certificate usually within 24 hours, which you may share on your socials.

DISCLAIMER: The certificates alone will not land you a role. It is a must that you complete extra work like cloud projects, extra self-learning, and practice interviews. Remember, your technical skills are as important as your soft skills. The certificates do, however, open MANY doors and land you interviews!

Once you have completed one or two cloud certs, don’t overdo them and focus on learning other skills which are more important in your situation.

I have completed the fundamentals, what’s next?

Now that you have learnt one cloud provider with a good foundation, possibly attained one cloud certification, you are able to navigate the CLI (command-line interface) with Linux or even PowerShell (another CLI shell), able to write simple Python scripts, able to use Git commands like git add/commit/push/pull, you are set to learn the more “advanced” tools.

The “more advanced tools” to learn

Infrastructure as Code (IaC) — Terraform

Bear in mind, there are many tools for IaC but Terraform is currently the most popular. Other IaCs include AWS CloudFormation, ARM (Azure), and Google Cloud Deployment Manager. Terraform is cloud-agnostic and can be used across multiple providers thus you are free from “vendor lock-in”.

Terraform is a tool that is used for building, changing, versioning your infrastructure (not just cloud but other resources) safely and efficiently. Terraform can manage existing and the common service providers as well custom solutions.

Terraform is an open-source infrastructure as code (IaC) tool that is used for provisioning (to create, destroy and modify) through code.

So in the fundamentals, you have learnt how to provision cloud infrastructure manually on the console. With Terraform, you are able to re-create this infrastructure on code. For example, if I wanted to create 10 EC2/VMs instances, 4 S3 buckets (or azure blobs), 2 EKS/AKS clusters by hand and do this on dev, prod, and test, it would be time-consuming. On Terraform, I would just write this code once and I’m able to apply this multiple times on different environments with just a few Terraform commands.

Note: Also, don’t worry if you didn’t understand the previous example, but the point was to show that creating many resources manually can be time-consuming and IaC saves you this time.

The popularity of it has increased and many engineering roles require this skill. So make sure to learn how to use it. Links are provided towards the end of this article.

terraform.io

Containers (Docker and Kubernetes aka K8s)

Those that know me, know that this is my favourite topic of them all!

Docker:

Containerising applications has become the norm in the IT/DevOps industry, allowing developers to condense their application code and all its dependencies in a lightweight and portable environment so that these applications can be deployed anywhere virtually.

Let’s just say you developed a Python application in the fundamentals stage, the next logical step would be to deploy it; this can be complex as well as time-consuming. This is because a running app requires a myriad of configurations, ranging from the allocation of resources to setting up environmental variables.

Containers efficiently solve the issues by packaging the codebase for the application with all the required dependencies — including tools, libraries, config files, and run-times. This process of containerisation ensures a lightweight and secure package (depending on how it’s done) known as a container image.

docker.com

Kubernetes:

Then came along issues whilst building microservices. Amongst those issues was containerising applications so that they are deployable on any environment, including a Dev’s one. As mentioned before, it was the idea of containers that solved this issue, and then this lead to another issue which was managing these containers. This is where the story of Kubernetes began.

So, Kubernetes is a container orchestration platform or in simple terms, an application management platform.

Fun fact: The name Kubernetes itself stems from an ancient Greek word for “helmsman”, meaning he who steers a ship thus telling the story behind the K8s logo. Another name for Kubernetes (you hear it quite often) is “K8s” — the reason for this name is the 8 letters between the “k” and the “s” in Kubernetes.

Both Docker and Kubernetes have surged in popularity. Many roles (as of 2021) are looking for individuals with such skills. So my advice is to read into this and learn how to use Kubernetes. Links are provided towards the end of this article.

k8s.io

CI/CD — Continuous Integration & Continuous Delivery

  • Continuous Integration: CI allows you to continuously integrate your code into a single shared repository
  • Continuous Delivery: CD allows you to take that stored code in the repository and continuously deliver it to production.

There are many benefits to it and why you should learn them. Here is a link that explains it really well.

As a DevOps/Platform Engineer, you always want to be continuously releasing your latest application to your customers, so it is crucial you understand how this works and you are able to perform it.

There are many CI/CD tools, to name a few: Jenkins, GitLab, CircleCI, TeamCity, Concourse CI, GitHub Actions, and Bamboo. The most common one is Jenkins. My personal favourite is GitLab. CircleCI and GitHub Actions are also good but make sure to learn one and learn it well!

Managed containers (EKS/AKS/GKE)

EKS = Amazon Elastic Kubernetes Service, AKS = Azure Kubernetes Service, GKE = Google Kubernetes Engine

Many organisations are implementing managed containers as opposed to “vanilla” Kubernetes setups. They are time-consuming and a headache to manage. Managed containers, as it says in the name, are managed by the cloud providers so that you don’t need to deal with underlying servers.

Learn how to set these up and work with them. If you wish to do further reading, look into serverless container solutions like AWS Fargate and Fargate with EKS.

In summary, the tools I’ve mentioned are:

Foundational:

  • Linux
  • Python
  • Git
  • AWS/Azure

Advanced:

  • Terraform
  • Docker
  • Kubernetes
  • CI/CD
  • Managed containers (EKS/AKS/GKE)

Some general advice:

I highly recommend you to create a study group if you can, do virtual or physical meetups, and share your goals in order to stay focused. Keep each other accountable of study targets too.

Set yourself a target of about 6–8 months from now till you land your first role. This is a rough time range, you can do it in less or even more (a year), not all people are the same.

If there is a certain topic you are finding difficult to understand, don’t give up, take a break for 5–10 mins and come back. Google and YouTube are amazing companions for any sort of learning. If required, learn from a different instructor. A different teaching style may allow you to understand certain content better.

Now you have learnt all these, what’s next?

A few things I personally would recommend and would help you in the long-term:

  • Complete projects — most of the course links I have provided you with contain project-based work in order to put the theory to use. Feel free to look around the internet and search for more.
  • Preparing your CV — this is crucial as it's the first thing a recruiter or a hiring manager sees. If this is good, most likely, the application process will be smooth.
  • Networking — get active on LinkedIn or Twitter or any other platform you may deem suitable and share your knowledge so others can benefit. Although I recommend the first two, whichever you stick to, there will be plenty of people to learn & benefit from — and each platform has its benefits. Remember, you will always be interacting with humans for your whole life, it is crucial that you develop this skill!
  • Make a personal GitHub account and put all the projects you’ve worked on there. This allows you to keep track of your code and showcase it to future employers.
  • Practice interview questions. There are many you will find. I personally recommend this channel for good practice: https://www.youtube.com/user/CareerVidz
  • Once you are ready, make sure to apply for jobs consistently, aim for at least 5 a day. Don’t be disheartened if you don’t find anything, this is normal and you will need patience and drive to keep going. Your time will come!
  • Reach out to recruiters and don’t be afraid to ask questions!
  • For salary expectations, check Glassdoor, they are quite accurate most of the time. Roles vary depending on seniority. And bear in mind, there are many contracting roles around in this field.
  • Also, avoid creating cover letters in this field of Tech, your GitHub and blogs act as your cover letter and say a lot about you!

Individuals/Teachers/Pages to follow for further insights into the Cloud/DevOps world

Special Project for The Community ♥️

Coming from an engineering background and looking to upskill yourself in a new field can be difficult. So I’ve decided to embark on a project that is dear to my heart. ♥️

To overcome this and make it easier for those entering the field, we’ve decided to start a project (to be on GitHub) that allows individuals and the community to benefit from it. 🌠

Currently working on this project alongside other experts in the Tech industry. It contains a list of *FREE* resources, projects, and hands-on exercises for you to attempt and upskill yourself so that you can find a role in your respective field. This project will be focused on those trying to enter the Tech field (like Software Engineering 👨‍💻, DevOps 🛠, Cloud 🌩, Cyber Security 🛡, Data Science/Engineering 📊, Machine Learning, etc 🤖) 🆓

The project will be maintained by the community FOR the community! 🚀 We currently have experts 😎 in the field who are already contributing to this project.

If you would like to contribute to your certain field or the project in general, please reach out to me on LinkedIn (link at the end of this article) what topic you would like to contribute to and we can add you as a contributor to the project. 🌟

Links to resources:

Note: Most of the paid courses I’ve suggested below are from Udemy, I have used it for a lot of my self-learning. However, there are other sites with amazing cloud/devops courses like:

For those using these sites, they have frequent sales and discounts where course prices may drop to £12 or less sometimes, make good use of these occasions.

FUNDAMENTALS

Linux:

https://www.udemy.com/course/linux-mastery/ (Paid) (RECOMMENDED)

https://www.youtube.com/watch?v=wBp0Rb-ZJak (Free)

Python:

https://www.udemy.com/course/automate/ (Paid) (RECOMMENDED)

https://www.udemy.com/course/complete-python-bootcamp/ (Paid) (SUPPLEMENTARY)

https://www.youtube.com/watch?v=rfscVS0vtbw (FREE) (RECOMMENDED)

https://www.youtube.com/watch?v=t8pPdKYpowI (FREE)

Amazon Web Services (AWS) :

https://portal.tutorialsdojo.com/product-category/aws/aws-digital-courses-2/ — AWS Digital Courses by Jon Bonso (FREE)

https://www.youtube.com/watch?v=3hLmDS179YE — AWS CCP(FREE)

https://www.udemy.com/course/aws-certified-cloud-practitioner-new/ (PAID) (PERSONAL FAVOURITE)

https://www.youtube.com/watch?v=Ia-UEYYR44s — AWS CCP (FREE)

https://learn.cantrill.io/p/aws-certified-solutions-architect-associate-saa-c02 — AWS SAA (Paid)

https://www.youtube.com/watch?v=RrKRN9zRBWs — AWS Developer Associate (FREE)

https://www.udemy.com/course/aws-certified-cloud-practitioner-practice-exams-amazon/ — AWS CCP (Paid) — EXAM PRACTICE

https://www.udemy.com/course/aws-certified-solutions-architect-associate-amazon-practice-exams-saa-c02/ — AWS SAA Associate (Paid) — EXAM PRACTICE

https://www.udemy.com/course/aws-certified-developer-associate-practice-exams-amazon/ — AWS Dev Associate (Paid) — EXAM PRACTICE

Microsoft Azure:

https://www.youtube.com/watch?v=NKEFWyqJ5XA — AZ900 (FREE)

https://www.youtube.com/watch?v=10PbGbTUSAg — AZ104 (FREE)

https://www.whizlabs.com/microsoft-azure-certification-az-900/ — Azure Fundamentals 900 (Paid) — WhizLabs EXAM PRACTICE

https://www.whizlabs.com/microsoft-azure-certification-az-104/ — Azure Admin Associate 104 (Paid) — WhizLabs EXAM PRACTICE

Google Cloud Platform (GCP):

https://training.antonit.com/p/google-cloud-associate-cloud-engineer — GCP ACE course (Paid)

https://www.youtube.com/watch?v=UGRDM86MBIQ — Google Digital Leader course by Andrew Brown (FREE)

https://training.antonit.com/p/google-cloud-professional-cloud-architect — GCP Professional Cloud Architect by Antoni Tzavelas (Paid)

Git (version control):

https://www.youtube.com/watch?v=8JJ101D3knE (FREE)

https://www.youtube.com/watch?v=RGOj5yH7evk (FREE)

https://www.youtube.com/watch?v=ecK3EnyGD8o — Git Advanced (tips and tricks) (FREE)

Networking fundamentals:

https://www.youtube.com/playlist?list=PLDQaRcbiSnqF5U8ffMgZzS7fq1rHUI3Q8 — Networking fundamentals playlist (FREE)

ADVANCED

Terraform:

https://www.youtube.com/watch?v=SLB_c_ayRMo (FREE)

https://www.youtube.com/watch?v=YcJ9IeukJL8 (FREE)

https://www.udemy.com/course/terraform-beginner-to-advanced/ (Paid)

https://www.youtube.com/watch?v=V4waklkBC38 — Terraform Associate (FREE)

https://www.youtube.com/watch?v=Ff0DoAmpv6w&t=6032s (FREE) — Azure DevOps with Terraform

https://www.youtube.com/playlist?list=PLedHPfK7UwDJdS7zTgJv8PWR9UBcPbgUO (FREE) — IaC with Azure

Containers (Docker and Kubernetes aka K8s):

https://www.youtube.com/watch?v=p28piYY_wv8 — Docker (FREE)

https://www.youtube.com/watch?v=3c-iBn73dDE — Docker(FREE)

https://www.youtube.com/watch?v=fqMOX6JJhGo — Docker (FREE)

https://www.youtube.com/watch?v=bhBSlnQcq2k — Docker & K8s (FREE)

https://www.youtube.com/watch?v=X48VuDVv0do — K8s (FREE)

https://www.udemy.com/course/docker-and-kubernetes-the-complete-guide/ (Paid)

https://www.udemy.com/course/learn-kubernetes/?src=sac&kw=kubernetes+for+abs (Paid)

https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/ — CKA certification course (Paid)

https://github.com/walidshaari/Kubernetes-Certified-Administrator — CKA (FREE)

https://github.com/walidshaari/Certified-Kubernetes-Security-Specialist — CKS (FREE)

Continuous Integration, Continuous Development (CI/CD):

https://www.youtube.com/watch?v=R8_veQiYBjI — GitHub Actions (FREE)

https://www.udemy.com/course/gitlab-ci-pipelines-ci-cd-and-devops-for-beginners/ — GitLab (Paid)

https://www.youtube.com/watch?v=FX322RVNGj4 — Jenkins(FREE)

Managed containers (EKS/AKS/GKE):

https://www.udemy.com/course/aws-eks-kubernetes-masterclass-devops-microservices/ — EKS (Paid)

https://www.udemy.com/course/azure-kubernetes-service-with-azure-devops-and-terraform/ — AKS (Paid)

More-open source tools and more things to consider learning:

https://www.youtube.com/watch?v=J4al_SZ6p5g — Free practice exams video by Andrew Brown (FREE)

https://www.youtube.com/playlist?list=PL34sAs7_26wMW4bWKnMIfEd87aPuw75by — ArgoCD (FREE)

https://www.youtube.com/watch?v=7gW5pSM6dlU — Prometheus monitoring tool (FREE)

https://www.youtube.com/watch?v=YS4e4q9oBaU — GoLang Programming Language (FREE)

https://www.youtube.com/playlist?list=PL2_OBreMn7FqZkvMYt6ATmgC0KAGGJNAN — Ansible101 by Jeff Geerling(FREE)

https://www.youtube.com/playlist?list=PL34sAs7_26wPkw9g-5NQPP_rHVzApGpKP — Istio,Service Mesh (FREE)

https://www.youtube.com/watch?v=3GPpm2nZb2s — Helm, package management for K8s (FREE)

https://www.youtube.com/watch?v=UGRDM86MBIQ — Google Digital Leader course (FREE)

To conclude, remember that this Tech field is ever-changing; new technologies are being released every year, so it’s a must that you stay up to date and be open to learning new softwares in order for you to progress.

In case you are coming from a civil/mechanical/electrical engineering like myself, make sure to check out the article of my good friend Adam Osman (Adam’s LinkedIn) & the article of Abdurahman Abukar (Abdurahman’s LinkedIn).

Just having the fundamentals skills solidified will no doubt increase your chances of landing a junior role, so imagine how many doors are opened being grounded in the more advanced tools.

I hope that you may find this article of benefit. If you have or know someone who may learn from this, please do share!

Remember these are based on my personal learning experiences — others may have their own method of going about in learning. Also, note that everyone’s journey is different so focus on your journey and always aim to be the best in whatever you do.

Feel free to drop me a message on LinkedIn if you have any questions or even just to say hello :)

If you have reached this far, then kudos to you!!

Thank you for reading and all the best on your learning journey!

--

--

Mohamed Abukar

AWS Community Builder | Red Hat Accelerator | Platform Engineer @ Trainline