Top 5 programming languages for DevOps

We round up five of the top programming languages for DevOps and a few handy learning resources for each.
909 readers like this.
Javascript code close-up with neon graphic overlay

Photo by Jen Wike Huger

I've been focused on infrastructure for the majority of my career, and the specific technical skills required have shifted over time. In this article, I'll lay out five of the top programming languages for DevOps, and the resources that have been most helpful for me as I've been adding those development skills to my infrastructure toolset.

Knowing how to rack and stack servers isn't an in-demand skill at this stage. Most businesses aren't building physical datacenters. Rather, we're designing and building service capabilities that are hosted in public cloud environments. The infrastructure is configured, deployed, and managed through code. This is the heart of the DevOps movement—when an organization can define their infrastructure in lines of code, automating most (if not all) tasks in the datacenter becomes possible.

Advanced levels of automation enable Continuous Integration/Continuous Delivery (CI/CD) practices that weren't possible in the past. CI/CD workflows make application delivery frictionless—a developer can push his or her code to a source repository, and infrastructure is automatically deployed to support test processes that can push an application all the way to production without human intervention. The work of a technologist crawling under the tiles of a raised floor to plug in new network cables is no longer in the critical path for production application deployment.

Infrastructure teams are now shifting their capabilities away from racking and stacking servers to supporting this CI/CD pipelines, which means learning code. Templates files built in YAML, infrastructure deployment scripts in Python, and applications in JavaScript deployed through pipelines defined in Groovy. The application code itself is getting closer to the infrastructure. Now application developers can build routines in their applications for scaling and handling failovers through infrastructure APIs. This is why I've started to invest a non-trivial amount of time in learning to code.

I decided to focus on learning the development languages involved in DevOps, and settled on five that are most relevant: Python, Ruby, JavaScript, Go, and C. At this point, I am by no means a full time developer, and I'm not even sure I could call myself a hobbyist. But thanks to the resources I present in this article, I have moved beyond the point of basic knowledge.

Python

Python has become an all-purpose language in infrastructure. It has been used to build cloud infrastructures projects such as OpenStack, and even supports web applications through frameworks such as Django. Python is an approachable language with a wide range of uses.

Codecademy: I started learning Python at Codecademy. The Codecademy Python program provides a great introduction.

Safari Books Online training: From there, I moved on to Jessica McKellar's excellent Introduction to Python course on Safari Books Online. The Safari service is expensive, but there are often membership sales that can give you as much as 50% off. SafariBooks also has O'Reilly conference videos, including talks and labs. The talks provide an opportunity to find interesting niches in each language.

Online conference videos: Search online and you'll find interesting talks at various developer conferences about how to use languages in ways you may not have otherwise considered. PyCon conference videos, for example, are available on YouTube.

Ruby

Ruby is used in a number of infrastructure projects. ManageIQ, for example, is a Ruby on Rails app. At my job at Red Hat, I often joke with customers that with ManageIQ (and CloudForms), users are only 10 lines of Ruby code away from doing anything.

Codecademy: As with Python, I picked up my Ruby knowledge primarily from Codecademy.

Documentation: The other resource that helped me understand Ruby in more practical terms (i.e., for my job) is Peter McCowan's book Mastering CloudForms Automation (available as a free PDF). Working with CloudForms building state machines and advanced automation workflows helped shape my understanding of the constructs inside Ruby.

Podcasts: I also listen to the Ruby on Rails Podcast, and Ruby Rogues.

JavaScript

The ecosystem of JavaScript frameworks and projects continues to grow at an astounding pace. From client-side JavaScript to server-side frameworks, huge swathes of the Internet run on JavaScript.

FreeCodeCamp: JavaScript is a language I am continuing to learn, mainly through FreeCodeCamp. FreeCodeCamp has an excellent free program that provides real-world examples and pushes students beyond the typical type-these-words-and-run-wheeeeee experience. As you progress through the program, you receive less prescriptive guidance and instead are given tasks to complete. The lessons I've learned the most completely in my journey have been from this "start in the deep end" style of teaching. I can't recommend it highly enough.

Podcasts: I also listen to JavaScript-focused podcasts, such as JavaScript Jabber and FiveJS.

Go

The Go language was introduced in 2009, and has made quite a splash in the market since its introduction. The designers of the language were focused on making a statically typed language that is human readable, but that also performs well at scale.

golang.org: I've only started my time with Go, beginning with the tour at golang.org.

Google Developers channel on YouTube: I've also started watching videos on the Google Developers channel, including Go for Pythonistas, Get Started with Go, and Go Programming.

Safari Books Online training: I'm focusing more on Go in 2017, as it underpins a number of important web technologies, such as Docker, Kubernetes, and etcd. The learning path at Safari Books Online is another great resource, including Master Google's Go.

C

C is a language I have tried to learn several times. Each time I approached C, I didn't have any particular goal in mind. I wanted to learn the language because so much of the code in the world is written in C, and many of the constructs in the language are reused in other languages. When I joined Red Hat, however, I quickly learned an adage that's been in the FOSS community for a very long time: The best documentation is the code. As I have sought to understand projects such as KVM, libvirt, and QEMU, I realized that I need to learn C to understand what's happening at a fundamental level.

Learn C the Hard Way: To learn C, I've picked up Learn C the Hard Way, which has proven to be a unique approach to the language. I like the author's writing style and the no-nonsense approach to coding exercises. You can read the book online for free, or buy book to also get the code examples and movie files.

My current job is focused on talking to customers about cloud solutions, but I've been invested in the IT community for a long time and I feel obligated to give back. One of the things I'm focused on in 2017 is helping to educate current IT staff on the trends in the market, and how to participate in the new world of IT that is starting to come into focus. I hope you are able to take some of the resources provided in this article and transform the bullet point on your resume that says "building servers" to "building code."

Which programming languages are you focused on learning now? Let us know the about the resources that have been most helpful to you in your programming journey.

Black and white portrait of Chris Saunders
I'm a Hybrid Cloud Sales Specialist at Red Hat Canada. I've been working in technology for my entire career, but mainly as a consumer of enterprise technologies. Since my move to the vendor side of the IT community, I've been focused on helping my customers understand products in the context of their business.

15 Comments

Sorry to be blunt but this article is totally misleading.
You seem to lack real-life experience as DevOp since you forgot to mention the two most important languages that are most widely used by DevOps, which are Shell scripting (mostly Bash) and Perl.
'C' on the other hand is hardly used.

I totally agree with mike's comment.This article is totally misleading.I am working as a devops engineer from last 4 years and I have mostly ysed shell and perl.

In reply to by Mike568 (not verified)

Perl? Are you kidding? It's not 2003 anymore...

In reply to by Mike568 (not verified)

The article is only the top 5, and so not everything can be included... I agree with Perl not being included. It is so 1990s it doesn't belong on the list (probably top 20, maybe top 10, but that is debatable). Decades ago perhaps perl did in the past. That said, shell scripting (bash/ksh/ash/zsh/etc...) is still one of the Top 5 languages for DevOps.

In reply to by Mike568 (not verified)

The most requested languages in the U. S. are Java, Python, C/C++. Don't know where the others fall - can't cover them all.

Dave,

Here are some resources you didn't mention:

w3schools.com - THE place to go for HTML/CSS, javascript, SQL, PHP, ASP

LinuxAcademy.com - costs a little per month, but a very good learning resource. They have a whole DevOps track.

python.org - another great resource thats free

I also recommend the Python Crash Course book from OReilly

What do you think about Rust?
I've heard a lot of positive things about this language, but haven't tried it myself yet

I spent a little bit of time with Rust. The language certainly has it's fans, but I had a hard time finding good resources to help me get deep into the language.

In reply to by Yurii (not verified)

If the list were ranked, who would be winning? I'd have to assume Go. I'd have to consider java out there, if only for its massive saturation. Maybe in place of Ruby, which is in decline?

I also love the first comment calling for shell and Perl. Like a time machine! :)

There are other very strong and popular programming languages out there like PHP, I can not see where such language have been mentioned. Probably even this site is powered by php.

Great article Chris, thanks for sharing. I'm bookmarking this for future use!

If you're interested in Ruby, you definitely need to check out Why's Poignant Guide - it's legendary in the Ruby community.

Hi Chris,
Great article, Actually I m a developer and trying to switch into DevOps but I don't know how to do it? So it will be great if you could guide me. Looking forward.

Creative Commons LicenseThis work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.