DevOps Engineer Skills – Most Demanding DevOps Skills You Should Learn in 2021
Basically DevOps is not a tool or a job role but a culture where the engineers practice the best methods and use combination of tools to achieve speed and quality for delivering applications and services. After all the entire IT infrastructure is for serving some applications and it is a combined effort from different teams like developers, QA engineers, Systems Administrators, Network Engineers, Database Administrators, Storage Administrators and many more unsung heroes. With the introduction of so many tools – most of them are opensource ! – and methodologies, organizations started adopting DevOps culture in a rapid manner. And the demand for skilled engineers also increased.
Note: This is a living article and I may update anytime when I find something new or outdated.
How can I become a DevOps Engineer ?
Again, there is no such fixed skill set or syllabus for a DevOps engineer in reality. Some of the DevOps roles are more inclined to Developer skills like programming, automation etc. But some other DevOps roles need knowledge in System engineering, Network operations, Security and so on. So, as I mentioned in the first place, DevOps is a combination of skill-sets and culture. But there are some important skills you need to achieve to start your career as a DevOps Engineer.
Pro Tip : How to find the skills needed for a DevOps Engineer ?
Very simple, find DevOps engineer job listing, check the job description (JD) and required skills from multiple job postings; you will find the very common items and target those items. Other non-common items consider specialization or the area of expertise.
Anyway, here is a list you can refer to as a starter and add whatever we missed in the comment box; fine ?
1. Learn Linux Operating System and Basic Usage
As you know, most of the latest tools are widely available for Linux platforms (compared to Windows), Linux became the favourite choice for organizations and you should know how to handle a Linux Operating System. It can be any flavour – based on organization’s policy and choice – but understand the Operating System Core Concepts. Okay, I am not telling that, no one is using Windows for their DevOps tasks; but the tools are mostly running on Linux and some are only available for Linux ! (Like Ansible etc)
- Understand How Operating System works
- How to Access the Linux machines (SSH and other methods)
- Learn to use Text editors in Linux (vim, nano)
- Learn basic Operating System operations (deploy, configure services, user and group management, file management)
- Learn package deployment and updates.
Pro Tip: If you are using a Windows workstation (or laptop), then install and switch to a Linux operating system (Ubuntu, Fedora, Centos, you choose it) for your day to day tasks. You will automatically learn how to manage the OS operations including file management, package management and the editing of files.
2. Understand Networking Concepts
What should I do with Networking as a DevOps Engineer ? Well, one of the important concepts of DevOps is to give the freedom for engineers to manage their applications – end to end. You don’t need to wait for a Network Engineer to configure the connection or route for you; you should be able to understand and use the platform to deploy your application including the network part.
- Learn networking protocols
- Learn how DHCP and DNS things are working
- Learn the basics of Switching, Routing, Subnet and others.
3. Learn Virtualization & Cloud
This is the era of virtualization and containerization; and as a DevOps engineer or as a DevOps practitioner, you should know the basics and usage of Virtualization software’s. Most of the time, we need a PoC or test environment to learn or test some new tools or features; something like you want to try a new version of the Operating System or new version of an application. And the easiest way is to use a Virtual Machine which is immutable and you can create or delete anytime. Tools like VirtualBox made our life so easy by providing the FREE virtualization software’s which we can run on our workstation or laptops. And also thanks to Public Cloud providers as most of them offer FREE or TRIAL versions by which you can access the public cloud for FREE and start practicing.
- Understand the basics of virtualization
- Learn VirtualBox and vagrant
- Learn core concepts of cloud computing and public cloud.
- Learn about Cloud Instances, Virtual Private Networking, Identity and access management (IAM) etc
- Practice at least one Public Cloud and get certified.
- Try AWS, Google Cloud Platform, Microsoft Azure with FREE credits.
4. Learn Source Code Management and Version Control Systems
Since the application source code and configurations are handled by multiple engineers, there will be multiple copies of configurations and files. And it is important to keep track of these changes so that at any point of time, we should be able to switch to an older version; hence the Version Control systems were introduced. Organizations are using different tools for SCM and VCS and it is important for you to learn the concepts and operations.
- Understand git and usage
- Understand different git providers and local options (GitHub, GitLab, BitBucket etc)
- Learn to install local git servers of your choice (use virtual machines or containers)
Tip : Learn How to Build Your Own Git Server using Gogs
5. Learn How Applications Works
Wait, I am not a programmer ! doesn’t really matter, you need to understand the concept of Software Development and the best practices; skip this point if you are already a programmer.
- Learn any language if possible (python, go, java etc) and also OS Scripting (bash, powershell)
- Learn how web servers work (apache, nginx) – Install, configure and play with different configurations.
- Learn basic of database (install and configure for basic usage)
- Learn about Automated testing and QA methods in Software Development.
- Python Entry Level Programmer (PCEP) Certification Course – KodeKloud
- Complete Python Bootcamp From Zero to Hero in Python – Jose Portilla / Udemy
- Get into Python – jobtensor
6. Learn Basics of IT Security
Okay, I don’t need to explain about the importance of Security in IT and application infrastructure. Because of the increasing amount of Cyber attacks and threats around, Security plays the key role in an application and entire IT infrastructure.
- Understand the basics of Application Security
- Learn about Firewalls, Web Application Firewalls (WAF), Load Balancers, CDN.
- Understand in-transit and in-rest security options
- Learn Encryption and SSL options
7. Learn Containers and Kubernetes
Containers are the default platform for applications now because of easiness, portability and wider support. You need to learn how containers are working and how you can containerize an application. Install docker or other tools on your workstation and start practicing today.
- Learn docker/podman/skopeo/buildah ( TOP 5 FREE Resources to Learn Docker)
- Learn Kubernetes and take certification – Read CKA/CKAD/CKS Learning Path and Certification Tips
- Deploy Kubernetes and Practice on it – Learn How to Deploy a Kubernetes Cluster
- Learn OpenShift
8. Learn Automation & Infrastructure as Code
Automations is the key for DevOps methodologies; you need to automate whatever possible tasks which you are doing now manually. It can be provisioning of Infrastructure, creating a VPC or subnet, creating a cluster or container, installing packages, deploying applications, doing QA testing and more. And when you integrate the automation with other tools the entire DevOps workflow will be completed.
- Lean how configuration management works.
- Learn Ansible, Ansible Tower/Ansible AWX (or Puppet, Chef)
- Learn Infrastructure as Code aka IaC using Terraform and get Certified.
9. Learn Continuous Integration and Continuous Delivery (CI/CD) concepts
Developers push the code to a repository and you get the latest version of the application on production ! It is not a dream anymore; with CI/CD and automation tools organizations are publishing multiple versions of applications in a single day with almost all automated. (Again, automation will not destroy your job, organizations still need engineers to automate things !).
- Learn the difference between waterfall and Agile methods
- Learn how pipelines are working – Pushing the code, packing an application, building container images, running multiple tests, pushing to production etc.
- Learn CI/CD Tools (Jenkins, GitLab Pipelines, GitHub Actions, Bamboo)
- Install and test basic CI/CD tools and pipelines.
- Learn JIRA/Trello/GitHub project boards (Free version will be enough to learn) for Agile methodologies.
10. Not mandatory but good to have
Okay, now you have your infrastructure and application ready and users are using it. What if something goes wrong ? Yes, we need to learn how to monitor our application and infrastructure and this task may assign to you as a DevOps engineer !
- Learn monitoring and log collection concepts
- Setup and learn about Elastic (ELK/EFK), Prometheus, Fluentd, Grafana, InfluxData
- Learn servicemesh
Wait, this is not the complete list and also you don’t need to learn all these technologies. Plan your learning path based on your current skill set. Eg if you are a developer, try to learn more on infrastructure and operations, if you are a system engineer then learn about the application workflow and how to deploy applications.
Questions ? Please ask in the comment box.
All the best.