Every once in a while, my colleagues ask me “How to become a DevOps Engineer” or “I am a developer and would like to develop as a DevOps Engineer”. Unfortunately, the answer to this question depends entirely on where you come from and where you want to go in DevOps. This article is addressed to junior software developers and SysOps administrator.
First, let’s take a look at what DevOps is without looking at all the abstract definitions on the internet. Over the last few years, I helped numerous organizations and teams with their journey of adapting DevOps as well as answering their question “What is DevOps for us”. From my experience, DevOps consists of three parts. And each of them is an integral part of the overall concept of DevOps, that doesn’t mean you have to follow each part for yourself and your career.
- The fusion of development, operations (and security)
- Speed up and improve software development cycles Proper tooling
- In the following, I would like to explain these in a little more detail. It is important for you to decide on which area you want to focus to get the most of your own DevOps journey.
In the following, I would like to explain these in a little more detail. It is important for you to decide on which area you want to focus to get the most of your own DevOps journey.
1 What is DevOps #
1 The fusion of development and operations #
This is of the major points of companies that are striving for cultural transformation. The idea of DevOps is to create a new way of working in respect to how different teams work together. No more blame-game, like “the operator has rolled out the wrong release” or “the developers’ new version is broken” or when it comes to DevSecOps: “the security guy is annoying us again with his attack vectors and lists of CVEs”. A mindset shift has to take place such that these sentences cease to exist. The members of the team have to realize that they are in the same boat and that each member is an integral and valuable part of the team. Statements like those written before have to be banished our of the minds of the team members and, in the best case, out of IT in general. All team members are responsible for the software they develop, operate and protect.
In summary, there are four key points regarding the fusion of development and operations:
- Forming cross-functional teams
- Uniting the expertise of experts
- Promoting and sharing knowledge
- Adopting a new mindset: “United we stand, divided we fall - We are one team!
2 Speed up and improve software development cycles #
Another very popular DevOps goal is to speed up the development process. The process starts with the code change by a commit to the code repository and ends with the delivery of this change in production to the end-user or the customers, respectively. Key to speed up the process is automation. It is necessary to automate all unnecessary manual steps to quickly create feedback loops. Exactly these feedback loops are of tremendous importance to accelerate the whole cycle. The goal is to give the developer quick feedback on his change. Such feedback includes but is not limited to: have the tests passed successfully, does the change pass static or dynamic code analysis, and can it be deployed successfully? The most important tool to obtain these feedback loops as well as to visualize them is the implementation of Continuous Integration/Continuous Delivery CI/CI) pipelines.
Concerning tools, this second DevOps category is heavily dependent on a good CI/CD implementation to achieve the goal of a fast software development cycle.
3 Proper tooling #
Many CNCF tools are seen as equivalent to DevOps. Is that the wrong perspective? Of course, most of these tools can be used in a DevOps environment, but using CNCF tools synonymous to DevOps is a rather simplistic view. Although, it can always be argued, that these tools speed up the development process, they are not necessarily part of the DevOps concept. Therefore, the argument is too weak.
Take Kubernetes as an example. Is Kubernetes DevOps? Definitely not, but looking at the job advertisements for DevOps, this is precisely the skill that is being asked for.
The point is, many confuse DevOps with new tools and technologies like Service-Mesh, API-Gateways, Kubernetes, Cloud-Native and so one. Check out the popular CNCF Cloud Native Interactive Landscape for.
There is nothing inherently bad about many of these tools and technologies and they can make the life of a DevOps engineer easier - but ultimately, they are just tools.
The most powerful tool we have as DevOps engineer is our mindset to become more perfect every iteration.
2 Choose your path #
Which of these three paths should you pursue? The decision depends solely on your personal goal as well as your strengths. Would you like to speed up the software development/release cycles? Would you like to transform or create world-class cross-functional, i.e. DevOps teams? Or do you want to master all the new technologies and tools?
In the following, I would like to propose a learning path for each of the three categories.
The DevOps Team Creator #
When should you choose this path: If you are good with people and a strong communicator. To determine if you have this character trait, be honest with yourself and rely on the feedback of other people, not just your own assessment.
Learning path 1 #
- Learn Git basics. Your team will use Git and you have to understand the Git-Flow, branching Modules.
- Learn GitOps. The concept should be a main foundation of your work.
- Learn collaboration platforms like GitHub, GitLab
- Learn communication processes in the workplace
- Learn communication skills
- Learn Value Stream Mapping (VSM)
- Learn technical basics from all your teams members. For example: If your team is made up of AWS Cloud experts, then learn the AWS Cloud Services.
- Master Agile - Learn agility approaches and methods. You can do DevOps without again but it will help you to structure and condition your team. For example, sprint retrospective meeting are perfect to to consolidate your team.
- Read: The Three Ways: The Principles Underpinning DevOps
- Read: A beginner’s guide to building DevOps pipelines with open source tools
- Read: Trust is the foundation of DevOps by SAP
- Book: he DevOps Handbook, Second Edition: How to Create World-Class Agility, Reliability, & Security in Technology Organizations
- Book: The Phoenix Project (A Novel About IT, DevOps, and Helping Your Business Win)
Learning path 2 #
For the things we have to learn before we can do them, we learn by doing them.
-– Aristotle, The Nicomachean Ethics
The DevOps - CI/CD - Engineer #
When should you choose this path: If you are a good team player. You like to solve problems and always improve something. You are interested in technology and want to learn more every day.
Learning path #
-
Master Git
- Learn to work smoothly with git(1).
- Pull-Request Workflow
- Github Flow
- GitLab Flow
-
Master Markdown
-
Master CI/CD solutions
- The good old boy: Jenkins
- Cloud-Native CI/CD: Tekton, ArgoCD
- GitHub Actions
- GitLab CI/CD
-
Master JSON/YAML. Know the difference between imperative and declarative
-
Lern your target language. If you are responsible for Java applications, dig into the JAVA universe.
-
Lern GNU/Linux tools
- sed(1), awk(1), tr(1), cat(1) and so one…
-
Lern a POSIX compatible SHell
- BASH or ZSH or both
- POSIX it might be older then you.
-
Master Build and package manager: YUM/DNF and RPM, NPM, Maven, CMake
-
Lern OCI Containers. I would prefer Podman instead Docker
- What Are Namespaces and cgroups, and How Do They Work?
- namespaces(7)
- cgroups(7)
- What Are Namespaces and cgroups, and How Do They Work?
-
Master ISO/OSI Model. You should always know which layer you are on and on which layer you are discussing a technical problem.
-
Learn Networking basics
- IPC interprocess communication
- The Interprocess Communication (IPC) Overview
- HTTP(S) - HTTP, HTTP2, HTTP3
- Representational State Transfer (REST)
- gRPC
- GraphQL
- IPC interprocess communication
-
Learn Security basics
- RBAC (Role-based access control)
- 2FA, FIDO U2F and FIDO2, WebAuthn
- Encryption and Decryption
- How HTTP/TLS works
- How does SSH work
-
Learn Strategies for Application Deployment
The DevOps Tools Specialist #
When should you choose this path: If you are a good technology generalist You would like to work as a Lead DevOps engineer and be involved in strategy development.
You could list the entire DevSecOps CNCF Cloud Native Tool Zoo here. I try to include the most important, fundamental topics.
Learning path #
- Master GNU/Linux tools
- sed(1), awk(1), tr(1), cat(1) and so on…
- Master a POSIX Shell
- BASH or ZSH or both
- POSIX it might be older then you.
- Master UNIX Shell
- Master Build and package manager: YUM/DNF and RPM, NPM, Maven, CMake
- Master OCI Containers. I would prefer Podman instead Docker
- Master ISO/OSI Model. You should always know which layer you are on and on which layer you are discussing a technical problem.
- Learn Networking basics
- *IPC interprocess communication
- The Interprocess Communication (IPC) Overview
- HTTP(S) - HTTP, HTTP2, HTTP3
- Representational State Transfer (REST)
- gRPC
- GraphQL
- *IPC interprocess communication
- Learn Security basics
- RBAC (Role-based access control)
- 2FA, FIDO U2F and FIDO2, WebAuthn
- Encryption and Decryption
- How does SSH work
- Master Kubernetes and another Kubernetes Distribution: RedHat OpenShift, SUSE Rancher Kubernetes Cluster Management Platform, VMware Tanzu.
- Master Serverless. Choose one that you like. They often differ in certain goals and features. My recommendation: Istio
- Master Sreaming & Messaging. Choose one that you like. They often differ in certain goals and features. My recommendation: Kafka
- Master a horizontal scaling Database. My recommendation: Vitess, CockroachDB
- Master the ELK Stack. ELK Stack It is advisable to know how to use Kibana.
…and do not stop and master more and more technologies.
DevOps Engineer Certification Path #
This is just a small side note. I find these helpful for each level:
- Linux Professional Institute
- Cloud-Stack
- Kubernetes
- RedHat
Another really helpful certification path can be found at:
3 Conclusion #
Sometimes it is difficult to fit straight into a specific category. Especially if you are new to DevOps, it is virtually impossible. In that case, the first step is to reflect on what your core strengths are and in what areas you excel. It is advisable to develop your own strengths and expand target roles. For example, you are excellent at motivating people and bringing them together, as well as have a basic understanding of software development. Start with the DevOps Team Creator path and develop your knowledge as a DevOps - CI/CD - engineer.
However, these categories are meant to serve as guidelines. The most important thing is to start and get your hands dirty.