A review of the Beginner DevOps Roadmap
Use this roadmap to build your DevOps skills or hire the right devops people for your experience
Ask any DevOps engineer how they got into DevOps, and the answer will begin with a story of how they fell into it. The truth is, most DevOps engineers "accidently" got into their first role and then learn the ropes.
These days I frequently get asked (and see questions posted online) on "How do I get started in DevOps?/How do I find DevOps people?" This question is asked for a whole host of reasons:
New CS (computer science) graduates often ask as they see the demand and how lucrative it can be
Mid-senior developers ask for a challenge in their fields
Infrastructure engineers ask as a career shift
Managers and executives ask to see what kind of skills they need to bring in.
What makes answering this question is there is no real "formalized" schooling for DevOps. DevOps Engineers come in countless varieties, each bringing unique skill sets shaped by their individual backgrounds. Some specialize in specific cloud platforms like Azure or AWS, others transition from development backgrounds, and some discover through their infrastructure roles that they're already practicing DevOps, often with gaps in their knowledge.
Good DevOps engineers require a significant amount of technical knowledge, a solid understanding of people, process and technology and have experience applying across teams in organizations.
But where do we begin?
The best resource that I have found to answer this question is a roadmap for beginners called DevOps Roadmap (https://roadmap.sh/devops?r=devops-beginner). This roadmap does a wonderful job of highlighting from a technical perspective the skills and experience required. Its best used in the following two ways:
Technical resources (junior to senior) should use it as a way to see what areas they need to skill up on in conjunction with their job/role/industry.
For example, DevOps Engineers should learn a programing language but this could be: Python, Go, Ruby, Rust etc. so pick based on the one that is being used at your job or in the jobs you are targeting
Once you learn one language, learning a second one is easier. If it's a compiled language try scripting or vice-versa.
Managers and executives can use this as a template to build hiring/training strategies for DevOps. If someone wants to grow in their role, this is an excellent starting point to build a foundation.
From a hiring perspective, it highlights the types of technical skills you're looking for.
That said, I've compiled my thoughts on what is missing and how to fill those gaps:
Where to begin - As much as we would like to follow a roadmap linearly, DevOps skills are a puzzle that needs to be pieced together. I usually recommend starting to learn skills that are on the opposite side of the spectrum of what you do daily.
Example: If your focus is on development then operations might be a great place to start; Infrastructure as Code such as Terraform will be easier to learn and adopt; but learning the underlying principles for infrastructure are key before diving into the deep end.
Architecture - Jumping in to learn the details is what we generally do in IT, but having a big picture view of how systems are designed is key to being a good DevOps engineer (or when looking to hire one). If your experience today is with software systems and architectures, it needs to be augmented learning around infrastructure architecture and vice-versa. It's important to understand how these different types of architectures impact each other and limitations they produce.
Example: Monolithic software architectures will have limitations when the infrastructure architecture is focusing on resiliency and scalability.
Security - There is an entire sub-culture within DevOps that focuses around security (DevSecOps and AppSec). I would argue that security is fundamental to DevOps and needs to be incorporated early in the DevOps learning journey.
Begin by learning best practices, maturity of DevSecOps and AppSec can come later. A great place to start is by looking at Open Web Application Security Project (OWASP) Application Security Verification Standard (ASVS).
DevOps tooling - Understanding how DevOps tools work and what they are solving. It isn't enough just to learn how to use a tool.
Example: When you begin incorporating code quality checkers into your pipeline, the frustration from false positives (items flagged as issues but aren't) will be high. Knowing how those tools work and being able to refine the It's a passage of sorts and worth learning integrating these into pipelines.
Example 2: Adopting package management to have approved feeds for projects, or software composition analysis to understand potential conflicts of open source licenses.
Process - This roadmap focuses entirely on technologies and I would argue processes are just as important if not more.
Example: Learning a programming language is incomplete if you don't understand sprints and the pressures development teams face.
Example 2: Docker is great to understand but what you want to augment with that is container management. This way when you look at Kubernetes it will easier to understand the lifecycle of pods and how docker containers fit into it.
In case you're wondering how containerization fits into Kubernetes and the architecture I have a course on LinkedIn Learning that goes into details (Link Here).
The key to remember is that you don't need to learn it once (or that every skill is needed for a successful candidate). A good attitude for learning is key to be successful in DevOps. Taking one area and learning a skill, then refining it over time along with complementing work experience (getting involved with guilds is also a good way to get experience if its out of your scope of work) will make it a manageable experience.
What are the key skills you think you (or DevOps engineers) are missing? Comment below.
Remember, maturity takes time, and that is a topic for a different day.
Great read! I think you explained the process of learning in general really well. DevOps has a lot of moving components and different skill sets involved. Learning one skill at a time is truly the ultimate way to master something. Diving too deep too fast into Kubernetes, for instance, sounds like a complete nightmare!
This is a great write up for someone trying to step into Devops world or newbie trying to understand the Devops landscape, thanks for sharing Gurinder.