How to Become a DevOps Engineer from Scratch || Fully step by step roadmap

How to Become a DevOps Engineer from Scratch

Source

The DevOps ecosystem is growing fast since the last 5 years but I’ve always seen the same question that is somehow hard to answer in some lines: How to become a DevOps engineer? Let me break it down the same for you in this post.

TLDR; If you’re short on time and tired of reading, here’s a video that can help,

1. Start By Learning About The Culture

DevOps is a movement and a culture before being a job this is why cultural aspects are very important.

2. Learn A Programming Language

In my experience, a good DevOps engineer is someone who has skills in development and operations.

Python, Go, Nodejs .. you have a large choice! You don’t necessarily need to learn the same main language that your company use but programming skills are really nice to have.

3. Learn How To Manage Servers

One of the principal tasks that a DevOps professional do, is managing servers. Knowing how servers work is a must-know and to do this, some good knowledge about the hardware (CPU, architecture, memory ..) is needed. The other thing to learn is operating systems and especially Linux. You can start by choosing a distribution like Ubuntu.

If you are really a beginner with Linux, you can try it first on your laptop/desktop and start playing with it in order to learn.

4. Learn Networking & Security Basics

You may probably say that these are skills for network and security engineers. No! Knowing how HTTP, DNS, FTP, and other protocols work, securing your deployed software, anticipating security flaws in the code, and configuring your infrastructure network are things that you should know.

5. Learn Scripting

Even with the growing number of tools that could be an alternative to creating your own scripts, scripting is a must-know and you will need it for sure. In my experience, Bash is one of the most used scripting languages. Python is also a good scripting language that could be used to go fast while writing less code.


6. Learn How to Install & Configure Middlewares

Apache and Nginx are the most used middleware in the DevOps industry and knowing how to install and configure things like virtual hosts, reverse proxies, domain names, and SSL will help you a lot in your daily tasks.

You can start by deploying Nginx as a web server for a WordPress blog and then as a load balancer for two backend servers.

7. Learn How To Deploy Software

Once you know how to deploy and configure Nginx, you need to know how to deploy applications to a production server. Create hello world applications using Python, Nodejs, and PHP. Deploy these 3 applications. You can use Nginx as a reverse proxy for all of them.

8. Learn GIT

GIT is one of the versioning systems being used in the IT industry. You don’t need to be a GIT expert but this is a technology that will follow you through all of your DevOps experiences.

GIT basics are well explained in the official documentation.

9. Learn How To Build Software

Building software is generally about running a procedure of creating a software release that could run on a production server. A DevOps professional needs to know about this important part of the software lifecycle.

Create an application in the language of your choice and check the different ways to install its dependencies and build your code.

10. Learn How To Automate Your Software Factory

DevOps is not about automation, but automation is one of the pillars of the DevOps business transformation. Once you learned how to build software, you can use tools like Jenkins to automate builds and connect your code to the code repository.

If you are not familiar with all of this, read about Continuous Integration and Continuous Delivery.

11. Learn Configuration Management

Once things become more complex and once you will need to manage multiple environments and configurations, learning a configuration management tool will make your life easier.

There are a lot of CM tools like Saltstack, Ansible, Chef, Puppet ..etc and you can find an online resource that compares these tools. In the function of what you need, choose a CM tool and start learning it.

12. Learn Infrastructure As Code

IaC is absolutely important to automate your infrastructure and provision your environments with simple scripts or alternative tools. DevOps is about reducing the time to market while keeping a good software quality and IaC will help you on this.

Choose a cloud provider (AWS, GCP ..etc) and you will find a lot of free online resources to start your infrastructure. You can also learn how to use “cloud managers” technologies, some CM tools like Saltstack could help you provision infrastructure on AWS or GCP, otherwise, if you need more go for technologies like Terraform.

13. Learn How To Monitor Software & Infrastructure

Software deployed in production and the infrastructure hosting it should be monitored. Monitoring and alerting is one of the important skills you need to know.

Zabbix, Icinga, Sensu, Prometheus .. there are a lot of tools you can learn but start by comparing these tools and choose the one that fits your requirements. You can also consider learning how to deploy and use an ELK stack.

14. Learn About Containers & Orchestration

Containers like Docker are becoming a must-know skill! You need to have good skills in creating, building, deploying, and managing containers in development and production environments.

15. Learn How To Deploy & Manage Serverless Applications

Serverless is one of the most buzzing technologies of 2017 and sooner it will become a requirement in many job descriptions. AWS Lambda, Azure Functions, Google Cloud Functions, IBM OpenWhisk, or Auth0 WebTask, you have the choice to start learning one of them.

16. Learn & Share

Learning is a continuous process and sharing your knowledge could help you learn more! Join Faun, a community of DevOps passionate and professionals where you can learn and share awesome stuff.

Lastly, you can also refer to the following learning path for DevOps,

Buy me a coffee

Back to top