Learning DevOps: How to learn DevOps as a beginner.
Tags: devops, learning
Published: 2022-08-25 05:58:13

---
title: Learning DevOps: How to learn DevOps as a beginner.
published: true
date: 2022-08-17 11:57:38 UTC
tags: devops, learning
canonical_url: 
---

One of the most common questions people ask me when I attend a conference is, "How do I learn DevOps." I have tried to answer this many times, so I thought I should put this together as a piece. In this article, I'll explain how I would learn DevOps if I started my career as a DevOps engineer again. Before I move on, let's define what DevOps is and how the term came about.

According to AWS,

DevOps combines cultural philosophies, practices, and tools that increase an organization's ability to deliver applications and services at high velocity, evolving and improving products faster than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.

{% embed https://aws.amazon.com/devops/what-is-devops/ %}

Below, I'll go over what you should know when starting as a devops engineer and some personal recommendations. This list was created based on previous interviews and my day-to-day activities as a DevOps Consultant.

1. **Learn DevOps Culture** : As you have learned above, DevOps is a culture that promotes cross-team collaboration and continuous improvement in the software delivery process. So before you begin to learn any DevOps tool, I will suggest you understand the problem DevOps is trying to solve and how it's solving it. The book [The Phoenix Project](https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592) is one of the first books to explore DevOps culture through the lens of a fictional company on the verge of failure. 

2. **Learn Linux** : Most of the work you will do will be based on an operating system based on Linux, so you must learn about Linux. You need to know how to set up a Linux server, run it, and fix problems when they happen. Starting from [Linux Journey](https://linuxjourney.com/) is a perfect one. They make learning Linux fun and easy. Optional: You can join a 20-day Linux [here](https://linuxupskillchallenge.com/) to practice what you learn. 

3. **Learn Networking** : Understanding TCP/IP, packets, routers, NICs, switches, standard TCP & UDP ports, proxies, firewalls, IPv4 vs IPv6, and DNS will help you throughout your career. They are fundamental building blocks for anything networking in anything in the cloud or on-premise. Here is a [collections](https://github.com/nikasakandelidze/Single-Source-Of-Truth/blob/master/networking/networking_resources.md) of courses or other video resources on computer networking.

4. **Learn Version Control with Git** : Git tracks changes in the source code, enabling multiple developers to work together on non-linear development. Since you will primarily be working with developers, this revolves around your daily activities. Github has an excellent lab for learning git here [GitHub Git Lab](https://lab.github.com/)

5. **Learn automation with bash script** : Many DevOps operations, such as automatic installations and configuration management, are carried out using bash scripts. DevOps developers, for instance, utilize Bash to write deployment scripts that carry out the labour-intensive tasks associated with releasing new apps.

6. **Learn CI/CD** : Continuous integration, delivery, and deployment (CI/CD) is a DevOps practice. CI/CD relies on automation in many moving parts when pushing new code or releases into production, allowing teams to release reliable software more quickly. Jenkins is the gold standard in the world of CI; therefore, I recommend starting here. Cloudbees have a free course on Jenkins you can take [here](https://university.cloudbees.com/series/exam-preparation-certified-jenkins-engineer-cje). Given the growing popularity of GitHub Actions, it is worthwhile to learn it too. 

7. **Learn One Programming Language** : As you will be responsible for other people's code, learning a programming language will be pretty beneficial. It will also make working with engineers easier. This will also be useful before using a new tool. For your first language, I suggest Python, JavaScript/Node.js, or Go.

8. **Learn at least one cloud provider** : There are many factors to picking a cloud provider to learn, but if we have to choose based on market share and my personal recommendation, I would say you go for AWS. Learn about VPC, S3, EC2

9. **Learn System Design** : System Design is the art of designing large systems. Most companies no longer build infrastructure on a single monolithic application; today's infrastructure relies on dozens of components by using Networking to let them function together. It's crucial to understand how these components work together and how to design them.

10. **Learn Containers and Orchestrations** : Containerization is the packaging of software code with all of its necessary dependencies, including libraries, frameworks, and other dependencies, into a single "container." Container orchestration automates much of the operational effort required to run containerized workloads and services. Having the skills to create, build, deploy, and manage containers in development and production environments is a good one, as you will mostly be dealing with containers on the job.

11. **Learn Infrastructure as Code (IaC)** : Infrastructure as Code uses a descriptive way to manage infrastructure. Rather than clicking around the console to make changes manually or using one-time scripts to make infrastructure adjustments, the operations infrastructure codifies the infrastructure, revises it, controls it, tests it, and creates repeatable automated workflows.

And that's all for today! I hope that you will find these resources to be useful. Don't forget to share, react, and engage with me in the comment section.