How to become a DevOps Engineer
The ultimate roadmap to becoming a DevOps Engineer, with links to relevant courses.
DevOps is really hot at the moment and most of my friends, colleagues, and senior developers I know are working hard to become a DevOps engineer and project themselves as DevOps champion in their organization.
While I truly acknowledge the benefits of DevOps, which is directly linked to improved software development and deployment, from my limited experience I can say that it’s not an easy job. It’s very difficult to choose the right path in the middle of so many tools and practices.
I often hear many people asking questions like how to become a DevOps engineer, which tools should I learn? which practices should I follow? Is learning Maven and Jenkins a must for a DevOps guy? how about Docker and Kubernetes? What is the infrastructure automation part of DevOps? Should I learn Chef, Puppet, or Ansible? I am going to share with you an awesome resource which will help you become the DevOps Engineer you always wanted to be — the 2019 DevOps RoadMap. This roadmap does not only highlight what is the role of a DevOps engineer but also tells which tools and technologies you need to learn to cover that area.
Though the roadmap is good in the sense that it tells you what to learn but it doesn’t tell you how to learn and where to learn. In order to complete the roadmap, I have shared some useful online courses, both free and paid, so that you can learn and improve the tools or area you want.
The 2019 DevOps RoadMap for Developers
Let’s go through the RoadMap and find out how you can learn the essential skills required to become a DevOps guru in 2019.
1. Learn a Programming Language
If you didn’t, don’t worry you can take a look at below courses to learn your choice of language, though I strongly suggest you to learn at least one of these three major general purpose programming language.
If you want to learn Java then The Complete Java MasterClass is a great course, which is also recently updated for Java 10.
If you want to learn Python, then The Complete Python BootCamp is my favorite resource, which will teach you Python 3, the most popular version of Python.
2. Understand different OS concepts
This is where the Ops part comes in. Previously it was only support guys / sysadmin people who were responsible for knowing about OS and hardware. With DevOps, developers need to know OS-level concepts.
You need to know about Process Management, Threads and Concurrency, Sockets, I/O Management, Virtualization, Memory storage and File systems as suggested in the roadmap. Since most of us work in Linux, I suggest you go through the Linux Administration BootCamp course on Udemy to learn and understand Linux OS better.
If you need more choices and you don’t mind learning from freely available resources then you can also take a look at this list of free Linux courses.
3. Learn to Live in terminal
For a DevOps guy, it’s important to have a good command in command line, particularly if he is working in Linux. Knowing some Linux shell like Bash, or Ksh and tools like find, grep, awk, sed, lsof, and networking commands like nslookup and netstat is necessary.
If you feel you need to refresh these commands and tools then you should join the Linux Command Line Interface (CLI) Fundamentals course on Pluralsight.
It’s a good refresher for both beginner and experienced Linux users. You will need a Pluralsight membership to access the course which cost around $29 per month or $299 per year but it’s totally worth it.
Pluralsight a developer’s Netflix. It has more than 6000 high-quality courses on latest technology which means you can learn anything and anywhere. I mostly learn while traveling and commuting.
Btw, If you need more choices and want to become master on shell scripting, you can also take a look at this list of best courses to learn shell scripting.
4. Networking and Security
Gone are the days of isolation, in today’s world, everything is connected to everything which makes networking and security very important.
In order to become a good DevOps engineer, you must know about basic networking and security concepts like DNS, OSI Model, HTTP, HTTPS, FTP, SSL, TLS etc.
In order to refresh this concept, you can take a look at TCP/IP and Networking Fundamentals for IT Pros By Ed Liberman course on Pluralsight.
If you need more choices, you can also check out these Udemy courses like for Networking, The Complete Networking Fundamentals is a nice course and for Security, you can also check The Complete Cyber Security Course: Network Security.
5. What is and how to setup
As a DevOps champion, you should know what is set up in your machine and how you can set that up, only that you can think about automating it.
He should also know about Caching Server, Load balancer, Reverse Proxy, and Firewall etc. If you are new to web development, I suggest you check out The Web Developer Bootcamp by Colt Steele.
6. Learn Infrastructure as code
This is probably the most important thing for a DevOps engineer to learn and it is a vast area of knowledge. As a DevOps engineer, you should know about containerization like Docker and Kubernetes, Configuration management tools like Ansible, Chef, Salt, and Puppet, Infrastructure Provisioning like Terraform and Cloud formation. Here are some of my recommended courses to learn these tools. If you want to learn Docker then the Docker Mastery: The Complete Toolset. From a Docker Captain course on Udemy is the best course to start with. It provides comprehensive coverage of all the tools a DevOps engineer will need.
If you want to learn Kubernetes then I suggest you join the Learn DevOps: The Complete Kubernetes course. This will teach you how to build, deploy, and manage Kubernetes.
And, if you want to learn Chef then there is no better course then Chef Fundamentals: A Recipe for Automating Infrastructure on Udemy. Probably the best course to learn Chef at this moment. If you need more choices on Docker, you can explore this list of 10 essential courses for DevOps Engineer.
For more on containerization, you can checkout my article on Kubernetes essentials.
7. Learn some Continuous Integration and Delivery (CI/CD) tools
This is another very important topic for DevOps gurus and champions — setting up a pipeline for continuous integration and delivery. There are a lot of tools in the CI/CD area e.g. Jenkins, TeamCity, Drone etc. But, I strongly recommend learning at least Jenkins, as it’s most widely used and probably the most mature CI/CD tool in the market. If you don’t know Jenkins then this course is best to start with. If you want to learn Jenkins, then there is no better course than the classic Learn DevOps: CI/CD with Jenkins using Pipelines and Docker on Udemy. It’s one of the best courses out there and I learned most of my Jenkins skills from this course.
If you need more choices and don’t mind learning from free resources then you can also check this list of 6 free Jenkins and Maven courses for Java developers.
8. Learn to monitor software and infrastructure
Apart from setup and deployment, monitoring is another important aspect of DevOps and that’s why it’s important for a DevOps engineer to learn about Infrastructure and application monitoring.
There are a lot of tools in this space e.g. Nagios, Icing, Datadog, Zabbix, Monit, AppDynanic, New Relic etc.
You can choose some of them depending on which one is used in your company like AppDynamic and Nagios.
9. Learn about Cloud Provides
Cloud is the next big thing and sooner or later you have to move your application to the cloud, hence it’s important for a DevOps engineer to at least know about some of the popular Cloud Providers and their basics.
While AWS is clearly the leader in the cloud it’s not alone, Google Cloud and Azure are slowly catching up and then we have some other players like Heroku, Cloud Foundry, and Digital Ocean.
To start with I strongly suggest to join the classic AWS Serverless APIs & Apps — A Complete Introduction course in Udemy, which is simply the best.
If you need more choices and don’t mind learning from free resources then you can also check my list of free AWS courses for developers and DevOps engineers.
Other Programming Articles you may like
You might be thinking that there is a lot to learn and it can easily become overwhelming. There are many courses worthy of joining, but you don’t need to worry.
There is a good chance that you may already know most of the stuff, and there are also a lot of useful free resources which you can use which I also linked here and there along with best resources, while not free, certainly worth the price. I am a particular fan of Udemy courses as they are very affordable and provide a lot of value.
At the end of the day, you should have enough knowledge and experience about the things mentioned here. Good luck with your DevOps journey! It’s certainly not going to be easy, but by following this roadmap and guide, you are one step closer to becoming the DevOps engineer you are hoping to become.
If you like this article then please consider following me on medium (@jkalash). if you’d like to be notified for every new post and don’t forget to follow @jkalash on Twitter!
P.S. — If you just want to start with one course to learn DevOps, the Learn DevOps: CI/CD with Jenkins using Pipelines and Docker is the best one to start with.