The Roadmap to Becoming a DevOps Professional — From Server to Serverless
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?
I recently created Jobs For DevOps: A dedicated job board for the DevOps community and I am taking this opportunity to share a learning roadmap that could answer the same question.
If you want to stay in touch and receive future articles, use the link(s) at the end of the story and subscribe to one or more of our newsletters.
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.
Check my article The 15-point DevOps Check List to know more about this.
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 beginning with Linux, you can try it first in your laptop/desktop and start playing with in order to learn.
You can also use DigitalOcean, Amazon Lightsail or Linode to start a cheap server and start learning Linux.
GNU/Linux is a must!
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.
Using Kali Linux could be a good way to learn about networking and security. You can also learn by reading good books like Kali Linux Revealed: Mastering the Penetration Testing Distribution.
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.
Start by writing basic scripts and check online resources like Awesome Bash.
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.
Start by deploying Nginx as a web server for a WordPress blog then, like 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 a “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.
Pro Git is the book you really need to read if you want to learn GIT.
9 — Learn How To Build Software
Building comes before running. Building software is generally about running a procedure of creating a software release that could run in a production server. A DevOps professional need 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 its 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 function of what you need, choose a CM tool and start learning it.
I wrote a book about Saltstack (Saltstack For DevOps), so if you are interested in this technology you can get it here.
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 good software quality and IaC will help you with 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
A 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 creating, building, deploying and managing containers in development and production environments. Learning Docker + Kubernetes would be a great idea!
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.
You can also join my newsletter Shipped: An Independent Newsletter Focused On Containers & Orchestration.
16 — Learn & Share
Learning is a continuous process and sharing your knowledge could help you learn more!
17 — Submit Your CV To Job boards & Test Yourself
One of the best ways to test if we have the required level to be accepted in a DevOps job is being interviewed and passing technical tests with recruiters and companies. If you fail an interview, try again and again and again, successful people failed on their way to Success.
I recently started Jobs For DevOps, a job board specialized in the DevOps ecosystem.
You can create a candidate or a company profile here.
If you resonated with this article, please subscribe to our newsletters:
DevOpsLinks : An Online Community Of Thousands Of IT Experts & DevOps Enthusiast From All Over The World.
Shipped: An Independent Newsletter Focused On Serverless, Containers, FaaS & Other Interesting Stuff
Kaptain: A Kubernetes Community Hub, Hand Curated Newsletter, Team Chat, Training & More.