What Programming Skills Do You Need for DevOps
When transitioning to DevOps, those from an "ops" background often struggle with the new skills. Thus, former developers usually have an easier time. That doesn't mean it's impossible for a sysadmin, it just takes a little more preparation.
If you're in IT, picking up new skills shouldn't be anything new. Plenty of "ops" pros have made the transition to DevOps, so you shouldn't let fear of coding scare you.
Here, we'll explore some of the popular programming languages related to DevOps and provide tips to help you get started. Because scripting is so common in DevOps, we've split the post up into scripting languages and other DevOps programming languages. If you can only pick up one language now, start with a scripting language and build from there (cough *Python* cough).
But They Say DevOps Isn't a Job Title…
Before we go any further, it's worth mentioning the idea of DevOps Engineer as a job title is somewhat disputed (just ask Reddit: 1, 2, & 3). Many in the industry will tell you that DevOps isn't a job title at all, it's a philosophy. We get that argument, and aren't looking to take a side here.
Whether you call them automation engineers, syadmins, or DevOps engineers, there are IT roles that require a new set of skills. Generally speaking, these skills require more programming and automation than "ops" roles of years gone by. Our goal here is to help you gain those skills. We'll put semantics aside here and focus on the skills.
4 Primary DevOps Scripting Languages
You don’t need to learn all of these languages. In fact, just one will do (for starters). If you’re going to focus your efforts on programming for DevOps, there are the usual suspects.
Python: Your First Language
We've said it before and we'll say it again: Python is the first programming language you should learn. While cases can be made for other languages, Python is generally a great starting point. This holds true for DevOps as well. Python is used extensively for backend code and scripting.
There are three main reasons Python is such a popular "starter" language for DevOps:
Python is easy to learn. Any programming language being easy is of course relative. You're not going to become an expert overnight. However, Python is relatively easier to get started with than many other languages. You can build something productive without learning the intricacies of Object-Oriented Programming. Additionally, the syntax of Python is much more "human readable" than lower-level languages.
Python is great at enabling automation. DevOps is all about automating things. The more you can eliminate manual processes, the better. To give a few examples, Python can help implement CI/CD (Continuous Integration/Continuous Delivery) or configuration management efforts with Jenkins, Chef, and Ansible.
Python has a large community of users. Network effects are real and they benefit Python programmers. As of this writing, Python is No. 3 on the TIOBE Index and its popularity continues to grow. The result: there is a large community that can help if you get stuck. There's also plenty of example code, integrations, modules, and tutorials to make life easier.
Interested in an entry-level Python course? Try Ben Finkel's Python Programming training.
Ruby: A Flexible Language
Ruby is a scripting language that offers a lot of versatility. Similar to Python it's a great place to start. Although a language that's commonly used for web development, it's also great for infrastructure management.
Also, because of the active community behind Ruby, you're likely to find several modules already produced by the community. This means you can add these modules to your application without having to write something completely new.
The flexibility Ruby provides makes this a great skill to add for a DevOps infrastructure. Giving you a little more freedom when it comes to writing code. Ruby provides a great option for developers to build off with great amounts of flexibility.
Perl: Cross-Platform Functionality
Perl is a great skill to have for DevOps. Perl can be used at all sorts of applications — going from low-level tasks to high-level projects. Perl can be applied to just about anything because of its cross-platform functionality.
Originally developed for text manipulation, Perl is used for a large range of tasks from GUI development to system administration.
3 Alternate DevOps Programming Languages
The programming languages here a little overkill for most DevOps environments, but can use just about any language to build DevOps pipelines, including mature frameworks with high-performance code like these.
C/C++: A Powerful Language
If you're looking to create optimized, high-performance code, C/C++ makes a lot of sense. However, there are a number of challenges implementing C/C++ in DevOps environments. Many of these stem from the fact that the compiled codebases are often large and not very portable.
Not all is lost, though. IT pros who can bring the promise of DevOps to C/C++ projects can add a ton of value. There are also tools like Conan which aim to help make DevOps for C/C++ projects easier.
Go: A Portable Language
While we're on the topic of C programming, there's Go. Go was built off of C and has been around since DevOps processes were starting to become a thing. This makes Go a pretty new language overall. Unlike C, Go is very portable and offers a type of flexibility that is ideal for a DevOps environment.
What ends up hurting Go is really its newness and lack of track record. Not many are familiar with this language. However, that doesn't mean it isn't worth picking up — it has proven to be a useful language in DevOps because of its flexibility.
Java: The Most Popular Language
Java has been around for a long time and is still widely used. Due to its ability to run anywhere once written, it's easy to see why it would be so popular. So many versatile platforms are based on Java, it's hard to imagine not adding Java to your skill set.
With so many established organizations already utilizing Java, it's a language you should consider using. Plus, Java is a very common language that is great for beginners to learn. If you're getting into programming and taking courses, you're likely going to be introduced to Java. It's often taught in introductory courses due to ease of use and how widely used it is by organizations.
DevOps is becoming more and more popular. So, adding the right programming skills can be a boon for your career. You don't have to learn all the languages mentioned here, but having a modern skill set is important.
If you're a current "ops" pro looking to make a shift, simply picking up Python is a great starting point. The same could be said for Perl or Ruby. From there, it might make sense to refine your skills a bit before picking your next language. In any case, remember the key is to never stop learning.