DevOps Roadmap - become a DevOps engineer in 2022
Tags: devops, beginners
Published: 2021-01-02 09:44:16

**What is DevOps (In my words)**:
- A cross-functional mindset that makes your team more agile
- The practice/culture to remove the barrier between developers (who develop apps, write code, are responsible for implementing feature requests, bug fixing, etc.) and operators (who deploy those apps, manage IT infrastructure/servers,  and are responsible for uptime, security, stability, scalability, etc.)
- Collaboration between operators, system administrators, DB administrators, developers, testers, etc. 
- A movement that essentially prevents people from saying "but it works on my localhost"

#### DevOps Focus Areas:
**🎯 Reduce Organization Silos**
Collaborate, communicate, educate and share.

**🚀 Push Gradual Changes**
Roll out small changes so that if something goes wrong you can easily roll back to a previously (acceptable) state.

**🐞Embrace Failure**
Wherever a human element is involved, failure is inevitable. A good DevOps strategy is one that considers failure as a normal thing.

**📊Monitor Everything**
Monitor everything, generate meaningful data, analyze it and reduce toil over a period of time.

**🤖Tooling & Automation**
Leverage tools to implement IaC and CI/CD

----

**How to become a DevOps guy - a roadmap? (from a technical standpoint)**:
_ℹ️ I have compiled the list in an order that I would follow if I am just starting_

- Computer Programming (any language will do - primarily, you should be able to write scripts)
- Version control (git is a de facto standard)
- Linux/Unix/Posix Compliant OS (get comfortable with it)
- Basics of Computer Networking
- Containerization (Docker, Podman, CRI-o, etc. - try to go for [OCI compliant one](https://opencontainers.org/))
- Container Orchestration (Docker Swarm, Kubernetes, Mesos, .etc)
- Cloud Platform (AWS, Azure, GCP, etc. - one important point here is that these cloud providers have so many products and it is assumed that you should be good in the ones that are needed in your workflow. For example, it is good to know how AWS Lex works, but it's not needed to become a DevOps engineer 🤷🏽‍♂️)
- Continuous Integration/Continous Deployment/Continous Delivery - CI/CD (CircleCI, Github Actions, Bitbucket Pipelines, Gitlab CI/CD, Jenkins, Bamboo, Chef, AWS Code Build, AWS Code Pipeline, GCP Cloud Build, .etc)
- Automation/Infrastructure as a Code or IaC (Terraform, Pulumi, Ansible, Puppet, Saltstack, .etc)
- Logging and Monitoring (Grafana & Prometheus, etc.)

----

**Notes**:
You don't necessarily need to learn all of the available tools/services in a given category. For example, in the Cloud Platform section, the three big cloud providers out there have the following managed services for Kubernetes:

[AWS-> (Elastic Kubernetes Service) EKS](https://aws.amazon.com/eks/)
[GCP-> (Google Kubernetes Engine) GKE](https://cloud.google.com/kubernetes-engine)
[Azure-> (Azure Kubernetes Service) AKS](https://cloud.google.com/kubernetes-engine)

Knowing more than one is desirable but not a requirement. I believe if you can deploy on one platform you should be able to deploy on the other as well. 

Similarly in IaC, I would suggest you pick the ones that you generally enjoy working with or your potential employer/client is using. 

----

**What's Next?**:
Once you are done with the list your basics are completed and you are ready to take on DevOps engineer role. You will also discover new tools as well along the way, like:
Helm (Kubernetes manager), Containerd (container runtime just like Docker, CRI-o), Packer (machine image builder for multiple platforms), Vagrant (headless virtualization), Prometheus (monitoring), Grafana (data visualization like Tableau, AWS Quicksight, .etc), Envoy (proxy like HA, Nginx, etc.), meshes (AWS Mesh, Istio, .etc) ....and many more 🤯 (so just don't be afraid, once your basics are strong you can give any and every tool a try and see if you enjoy it and if it's improving your workflow or it's just hype)