DevOps is a cultural and collaborative mindset that emphasizes communication, collaboration, integration, and automation between development and operations teams to achieve faster and more reliable software delivery.
DevOps is not a specific job title or role, but rather a set of principles and practices that can be applied across a variety of roles in software development and IT operations. Anyone involved in the software development and delivery process can adopt a DevOps mindset and apply DevOps practices in their work, including developers, testers, operations engineers, product managers, and others.
At roadmap.sh, we have a roadmap that can take you from zero to hero in all things DevOps, Here's an overview of the roadmap but feel free to visit roadmap.sh/DevOps for the complete roadmap!
Learn a Programming Language
It's not every day that DevOps Engineers write a significant amount of code, however, they're deploying and working within the ecosystem of multiple languages, which makes being away from the main languages a must. Automating away the day-to-day toil is also something that is achieved via scripting, so Bash and Python are must-haves in the DevOps toolbox.
Operating Systems
In a similar vein to Programming Languages, having a strong knowledge of the main operating systems will allow you to create pipelines and automation for both Windows and Linux. It is my personal opinion that a DevOps Engineer should have a high level of competency in Linux purely due to the fact that most servers and containers are Linux.
Terminal Knowledge
Despite most tools having a Graphical Interface in today's age, the need for terminal knowledge is a must for DevOps Engineers. Being able to rapidly navigate the inner workings of OSs to troubleshoot issues or manually configure them is potentially a daily task.
Version Control Systems
In the age of Configure and Infrastructure as code, Version control is no longer just for application code so having a deep understanding of this topic is important. It can also be a common occurrence that you will self-host your own VCS like GitHub or GitLab, in which case knowing the ins and outs of the system is critical.
Containers
Containers are lightweight and executable packages of software that ship with everything required to execute its purpose, containers are also an integral part of most systems today, if not part of the main infrastructure they're usually present in the form of pipeline workers.
Networking & Protocols
Understanding networking basics as well as the common suite of ports & protocols will help you to set up and troubleshoot infrastructure. Without a good level of knowledge in this area it can be quite difficult to pinpoint issues that occur between different elements of the infrastructure and it is usually the responsibility of the DevOps team to handle this.
Cloud Providers
While AWS reigns as the most popular provider out there, GCP and Azure and still powerful alternatives and depending on what company you go to, you could be using any one of them or a combination.
Serverless
Serverless, especially when talking about serverless functions are a popular way of having functions execute without maintaining a permanent infrastructure behind them, AWS Lambda is a perfect example of this in which you can trigger the service to execute any given functionality, but it is not running on your server.
Provisioning
Provisioning in DevOps refers to the declarative and stateful method of building infrastructure. The times of manually creating servers and maintaining them are gone and the new standard comes in the form of state and version-controlled infrastructure that is deployed by tools such as Terraform and AWS CDK.
Learn More
This article only covers the first half of the DevOps roadmap, so if you want to learn more and achieve mastery of the role, head over to roadmap.sh/devops to get started!
Top comments (0)