11 Programming Languages For DevOps Success
DevOps uses languages for software development and languages for deployment automation. If you want to be successful with either side of DevOps, these languages will help.
![](https://eu-images.contentstack.com/v3/assets/blt69509c9116440be8/blt34378e4a1abdd7ee/64cb573d1da8772dcda10553/DevOps_Gears.jpg?width=700&auto=webp&quality=80&disable=upscale)
DevOps depends on two critical pieces: Software development and operational automation. Each of these requires programming and (follow me, here) programming tends to need a programming language. For those trying to chart a career path in DevOps, the question of what language or languages to learn for each side of the equation is key.
Here, we'll take a look at some key programming languages, as well as the scripting languages that drive the automation of so many DevOps processes -- plus a language or two that might split the difference.
[DevOps and Agile aren't synonyms. It pays to know the difference. Read Agile vs. DevOps: 10 Ways They're Different.]
I'm looking at these languages from the perspective of their intended jobs, not their linguistic structure or operation. There are a couple here that are barely languages at all -- but they're still automation frameworks worth knowing if you want to be part of the DevOps world.
Are you on a DevOps team? Have you led part of a DevOps organization? I'm curious about the tools you or your team have used as part of successful DevOps. I'm equally curious about languages you think are important for people getting into the field in 2016. I'll be hanging out in the comments section below -- once you've reviewed our list, stop by and let me know what you think.
If your application infrastructure includes Microsoft Windows, then your DevOps knowledge needs to include PowerShell. Based on Microsoft's .NET framework, PowerShell uses four different mechanisms to give administrators automation control over the environment.
First, there are PowerShell functions and the ability to run independent programs invoked from PowerShell, rather than the Windows GUI. Next, PowerShell has a powerful scripting language that can be used to create individual scripts or "cmdlets." These are specialized PowerShell commands that are elements in the .NET framework.
While there are limits on the ways PowerShell functions can reach through into GUI applications, PowerShell is the primary way operations teams can automate and control the Windows enterprise infrastructure.
If you want to learn an application deployment automation framework that is available across a wide variety of platforms and used by thousands of companies, it will be hard to beat the appeal of Puppet.
Puppet is an open source configuration management tool that uses its own declarative scripting language to build automation and management scripts.
Puppet provides facilities for code, node, and configuration management, as well as change management, configuration automation, provisioning automation, and access management. The nice thing, from a career perspective, is once you know how to write Puppet scripts, you can build automation scripts that will work on most Linux distributions, on Windows, and on Mac OS X. If you're looking for flexibility, it's hard to beat.
If you know anything about Linux you know Bash. Bash is the most frequently used Unix shell. It provides the command shell and scripting language used to automate processes on tens of thousands of Linux servers around the world. Bash has the heritage (coming out of Richard Stallworth's Free Software Foundation), the history (following the earlier Bourne shell in 1989), and the capability to make it an automation powerhouse in the Linux world.
It's quite possible you have gotten a rudimentary knowledge of Bash while writing code on a Linux system. It's worth taking the time to get to know Bash better for your work on Linux systems -- as well as on Windows and Mac OS X. Yes, it's there, too.
PHP is a scripting language that has become a general-purpose programming language in many organizations. PHP is used for all stages of application development, from rough prototyping to final application creation. It also lives inside a number of application management systems and frameworks.
Like virtually all scripting languages, PHP is interpreted, which means the program is stored in, and remains in, its human-readable form until it is invoked. It is also a quirky language because of the "organic" way in which it evolved. If you're looking for a language to use in a broad variety of situations, PHP should be on your list.
Perl is a language that definitely lands on the application development side of the ledger. Despite some limitations, and a heaping helping of quirkiness, Perl has become commonly used for advanced web applications. A great deal of Perl's popularity is owed to it being very good at manipulating text and text objects stored in databases. It is very good, despite being inelegant and occasionally brutal. Two words frequently used to describe Perl's approach to development are "chainsaw" and "duct tape."
Perl is an interpreted language often used for scripts that hold together bits and pieces of larger applications. Those scripts are sometimes involved in application automation, but are more commonly used as tools to build the apps themselves. It's unlikely anyone is going to be able to make a career out of Perl alone, but it's a language that belongs in every developer's toolkit.
Ruby is the first language we're highlighting here that is not primarily a scripting language. Rather, it is an object-oriented, compiled, full-featured programming language with a syntax that should be familiar to anyone who knows Python or Perl.
Ruby has been used to code frameworks and controllers, most notably Ruby on Rails, which provides structures for web pages, databases, and other complex applications. While Ruby and Ruby on Rails share language, they are not the same and should not be confused with one another. Ruby is the predecessor and, for the purposes of this article, the more useful programming tool.
This is no surprise: Java has been the top business programming language for years. It is, therefore, one of the most important languages any developer -- in a DevOps environment or not -- can learn. Everyone knows Java. It's one of the top languages taught in university computer science programs. It's versatile and powerful, as long as you don't have to reach down to bare metal for your application.
If you need maximum flexibility and the ability to manipulate the hardware in straightforward and profound ways, there are other, better options. But Java now offers the ability to interact directly with most graphics processors. That's going to be enough for the vast majority of enterprise IT programming. For the rest, I'll have your tool in a couple of pages.
By now, everyone knows Java and JavaScript aren't really related. Javascript is one of the foundation languages of the modern web, second only to HTML in its common use. So, in general, JavaScript isn't going to live outside a browser interface, though it is possible to encapsulate the interface in a program that doesn't have to invoke a full browser instance every time it runs.
In either case, JavaScript is a language you're going to use to build applications, rather than automate management or deployment processes. It's definitely on the "dev" side of DevOps, but it's a very important player on that side.
JavaScript is becoming more completely functional as time goes on, with server-side implementations and JavaScript in virtual machines taking it step by step away from the browser. In general, though, it's a scripting language with a web heritage.
C started life as a tool for automating processes inside long-distance switches. It has come, forgive the expression, a long way since then. C has been near the top of the "popular programs" list for three decades, and doesn't show any sign of slowing down, because it is nearly unparalleled at handing power and flexibility to knowledgeable programmers.
C is the next best thing to assembler if you need to cut through all the APIs and SDKs and directly manipulate the hardware itself.
Of course, C is a procedural language, which places it one step above carving code into stone for many developers. If you're not ready to kick it old school, you can get the power of C in an object-oriented wrapper by choosing C++ or C#. But if you want to impress the folks in the mainframe camp of DevOps, try the OG coding skills required for the original K & R C.
In the era of big data and unstructured data lakes you might wonder why I would include something called structured query language (SQL) on this list. The reason is most of the data used in the enterprise is still very much structured and will remain so for a long time to come.
Of course, those who are working on database queries and operations need to know SQL. So, really, does anyone who is working on applications designed to reach back into a database for processing fodder. The ability to drop a line of SQL into an application can save you time. Understanding what SQL is and how it operates can be critical when you're building an application resistant to attacks such as SQL Injection.
SQL isn't a difficult language to learn -- bite the bullet and add it to your toolbox. You'll be glad you did, even if the world does ultimately turn to Hadoop for everything data related.
Tcl is a scripting language that can take you from application deployment automation to industrial Internet of Things (IoT) embedded control. It is widely used, open source, and applicable to a variety of situations. If you're looking for a "secret weapon" to give you a leg up in many situations -- and allow you to write code for everything from testing, to automation, to IoT -- then you owe it to yourself to explore Tcl.
So there they are: 11 languages you need to know if you're serious about building a career in DevOps. Do you agree? Disagree? Have experience that would indicate I've lost my mind? Let's start the discussion in the comments section below.
Tcl is a scripting language that can take you from application deployment automation to industrial Internet of Things (IoT) embedded control. It is widely used, open source, and applicable to a variety of situations. If you're looking for a "secret weapon" to give you a leg up in many situations -- and allow you to write code for everything from testing, to automation, to IoT -- then you owe it to yourself to explore Tcl.
So there they are: 11 languages you need to know if you're serious about building a career in DevOps. Do you agree? Disagree? Have experience that would indicate I've lost my mind? Let's start the discussion in the comments section below.
-
About the Author(s)
You May Also Like