DevOps is a cross-functional systems engineering culture. Its interdisciplinarity requires engineers to work on the borders of different domains – business, development, QA and testing, operations, architecture and so on. Such an approach necessitates certain qualities and skills to succeed in the field. What this knowledge is and how to learn DevOps skills was the talk that Volodymyr Tsap, co-founder and CTO at SHALB, presented at Chernihiv.IT conference 2022.
SHALB was founded in 2009, and since then Volodymyr has conducted countless interviews. These inspired him to create this small guidance on how to proceed on your way towards becoming a DevOps engineer. This article, which consists of 2 parts, reflects the main points of Volodymyr’s speech.
Part 1. DevOps underlying knowledge and skills
It is a well-known fact that genuine interest makes the best motivation. Are you interested enough to devote your free time to learning even after a hard day’s work? The answer “yes” speaks for itself. Financial motivation, however convincing it may seem, won’t make you a top-class engineer in the long run. It has to be genuine interest and enthusiasm that drive your learning endeavor.
The landscape of DevOps technologies grows faster than any other field. To keep pace with it, you need to constantly expand your horizons and learn about new trends. The eagerness to learn new skills and curiosity to dig into how things work will give you an edge over competitors.
DevOps probably has the highest rate of unsuccessful attempts before a desired result is achieved. Dealing with something new is always a trial-and-error way where you cannot but make mistakes. Don’t be discouraged by unsuccess and try to look at the problem from a different angle. Accept failures and consider them as a step towards success.
DevOps is a cross-departmental discipline that bridges developers, operation engineers, testers, and PMs. Sociable people are more likely to foster effective exchange of information between different departments. Also, having strong communicative skills will help you explain yourself and provide enough arguments to defend your point.
Coming to DevOps with a strong mathematical basis is a perfect start, as mathematics underlies all computer science. Knowing its basics will help you get to the heart of things and understand how they work under the hood. Apart from this, mathematics helps to develop strong analytical skills and cultivates the ability to investigate – the must-have quality of a good engineer.
Good command of English
English is the language of the international DevOps community. Being proficient in spoken and written English gives you access to an unlimited number of self-learning resources and increases your chances to join an international team.
Knowing how to google
Googling skills is a must have for a good engineer. Whenever you start a non-trivial task or deal with a bug that you have never seen before, try to find something similar on the web. Remember – someone before you must have come across the same problem and probably found the solution. Don’t reinvent the wheel.
I would recommend the books by Andrew S. Tanenbaum for a start, such as Modern Operating Systems, Computer Networks, and Distributed Systems. These are fundamentals to understanding how computers work, how networks are designed, and what their inner workings are. Thoroughly studying these books will help you shape patterns necessary to proceed further in computer engineering. And which is no less important, to make up your mind on whether you really have a heart for it.
Linux underlies the products of tech giants such as Google, Amazon, Apple, Red Hat and many more. It is quite literally the cornerstone of almost everything that we come across on the web. What is more, it is the OS of the cloud.
So what are Linux requirements for DevOps engineers? Certainly the degree of your Linux-specific knowledge will depend on the tools that you are using. For example, if you are working primarily on Microsoft Azure stack, you will need little knowledge of Linux. However, I would recommend a basic understanding of Linux as a foundation to build on.
A couple of introductory courses:
- Introduction to Linux by the Linux Foundation – provides a good working knowledge of Linux using both the graphical interface and command line.
- NDG Linux Unhatched Course by Cisco – you will learn basic installation and configuration of Linux software and get introduced to the Linux command line.
- Linux Tutorial by Ryan Chadwick – the beginners guide to the Linux command line (BASH).
Resources for further information:
- NDG Linux Essentials Course by Cisco – builds upon the Introduction Course, provides a deeper dive into Linux.
- The Linux Commands Handbook by Flavio Copes – covers 60 core Bash commands you will need as a developer, with example code and tips for when to use.
- Linux Server Course by freeCodeCamp – you will learn how to configure servers running Linux, including the boot process, kernel modules, network connection parameters, and localization groups.
A very helpful skill that will give you an extra advantage in your DevOps career. Having a programming background will also help you understand developers better – after all, DevOps is all about making developers’ lives easier in terms of releasing new features.
For one thing you should know how to program with shell or Bash, and be a confident user of CLI, as you will write automation scripts and run them on remote servers. To develop these skills, I would suggest the book by Mendel Cooper Advanced Bash Scripting Guide – a detailed tutorial on scripting techniques with exercises and heavily-commented examples.
As for application-oriented programming languages, I’d suggest Python, especially if you start working as a system administrator or DevOps. Python is a scripting language, which makes it easy to learn and work with. Thousands of Python libraries provide standardized solutions for many problems that developers and DevOps come across in their daily tasks. Moreover, Python comes pre-installed in most Linux distributions, so you do not need to install any additional software to start programming on it.
For a start I would recommend the O`reilly book Learning Python by Mark Lutz – a deep and detailed introduction to Python that tops the list of recommended literature for those who want to learn it.
Speaking about programming one cannot but mention Git – a de-facto industry standard in version control systems (VCS). As a DevOps you will work with infrastructure code and repositories, so it is critical that you know how to leverage Git’s power. Everything you need to know about Git you can find in the Pro Git book written by Scott Chacon and Ben Straub – a comprehensive and structured guide on Git.
Databases store almost all of the states in applications and are foundational to the overall success of most systems. At the same time, poor configuration of databases can lead to a number of incidents, including data breaches, slow database queries, locking errors, etc. Get yourself familiarized with entry level DBA stuff, like the principles of database design and operation, security, backup, restore, migration, and upgrade. This will help you understand the mechanics of database inner workings and be more productive in solving database-related problems.
This resource contains concise and to the point explanations of database basics supplemented with helpful visuals.
We have outlined the basic knowledge that will help you make a successful start in DevOps. Mastering the above-mentioned skills will give you a solid background to build on DevOps engineer skills per se. In part 2 we will discuss the expertise and specific knowledge that you will need in your DevOps career.