Consider adding these top languages, including Python and Java, to your IT pro skill set.
Programming languages aren't just for programmers. If you're a network engineer, systems administrator, storage manager or other infrastructure professional, knowing a programming language (or two or three) can come in handy.
Software-defined infrastructure is making headway into data centers, and in order to manage that infrastructure, it can be very helpful to know the language that your software-defined networking (SDN) or software-defined storage (SDS) software was written in.
In addition, as more enterprises are adopting DevOps approaches to IT, many shops are seeking to increase their use of automation. While automation tools available can handle some of this work for you, it's always a good idea for administrators to be able to write their own scripts. And in fact, some employers will expect that any good sysadmin or other infrastructure pro will have that ability.
But which programming language or languages should you learn?
This slideshow takes a look at 12 languages that experts frequently recommend for people who are -- or who would like to be -- infrastructure professionals. Obviously, you probably won't be able to learn all 12, but having at least one -- and preferably two or three -- in your skills list can help you become more efficient and more hirable.
Any time you ask experts for advice on which programming languages infrastructure pros should learn, it's a good bet that Python will be one of the first two or three languages they mention. Why?
First of all, Python is really easy to learn. In fact, if you take an introduction to programming class at a college or university, Python is the language you are most likely to learn. In addition, it doesn't have to be compiled, which makes debugging really fast and easy. It's a general-purpose language, so you can use it for almost anything, including writing scripts and stitching together other pieces of code. And Python is also the language used by several popular SDN controllers, including POX and Ryu.
According to the Tiobe Index of Programming Language Popularity, Java is the most popular programming language in the world by a long shot. In the most recent update to the index, Java's rating was nearly double that of C, the No. 2 language on the list.
Why is Java so popular? It runs just about anywhere, including Android and a lot of Internet of Things (IoT) devices. Java is easier to learn than many languages (although not as easy as Python), and because it's been around a long time, lots of help and resources are available. Thanks to features like garbage collection and exceptions, Java can be pretty forgiving of mistakes. In addition, a huge number of programming tools support Java, so writing Java code tends to be fairly easy.
It's worth noting that IT job boards tend to have a lot of listings that require Java knowledge, so if you learn this language, you'll not only have a skill that can help with infrastructure management, it might also help you get another job later in your career.
If you're an infrastructure pro working in a Windows environment, many experts say you should put PowerShell near the top of the list of languages you should consider learning. PowerShell is Microsoft's homegrown scripting language and configuration management framework for working with Windows servers. It's built into Microsoft's server products, and using it can reveal information and do things that you can't find or do with the standard admin tools.
Earlier this year, Microsoft open sourced PowerShell and made it available for MacOS and Linux. That means if you write scripts to automate tasks for Windows servers using PowerShell, you can also now use the same tool for MacOS and Linux servers.
What PowerShell is to Windows, Bash is for Linux. It's the default shell-scripting language for most Linux distributions. As such, it can be incredibly useful for automating sysadmin tasks on UNIX-based systems. In fact, some experts say that Linux admins can't really do their jobs well unless they know Bash. However, others argue that because everything you can do with Bash you also can do with Python, that Bash is no longer necessary. On the other hand, Bash is sometimes the fastest way to write automation scripts, and it is fairly easy to learn.
TCL (pronounced "tickle") has particular benefits for networking professionals because it runs on many Cisco routers and other networking hardware. It's an open source scripting language that can be very useful for automating network management and security tasks. It also integrates well with C.
In addition to embedded applications, TCL is also frequently used to create user interfaces, particularly for Unix systems. It also can run in Windows and Linux, but it isn't as popular as it once was.
Like Java, C is a general-purpose programming language, and like Java, is incredibly popular. For several years, C was actually more popular than Java on the Tiobe Index, although it has recently fallen to a distant second place. It has been around since the 1970s, so it is very easy to find help and resources related to the language.
Many computer scientists say that learning C teaches students how computer programming really works, and some argue that it should be the first language computer science students learn. It's not as easy to learn or maintain as languages like Python and Java, but it gives you a lot of direct control over the system. It provides the foundation for several other programming languages, and several software-defined infrastructure tools are written in C.
In short, if you really want to dig deep into the nitty-gritty aspects of coding, consider learning C. If you're just looking for a fast way to write automation scripts, one of the other choices might be a better option.
As you might guess from the name, C++ is very closely related to C. It also shares many of C's strengths and weaknesses.
On the Tiobe chart, C++ is the third most popular programming language, and as one of the more mature languages, it has a lot of resources available. C++ programs run very fast, but again, like C, the language is complex and difficult to master. Some software-defined infrastructure tools are written in C++, and it can teach you about the fundamentals of programming. It offers good value in terms of your IT career, but experts say it probably shouldn't be your first choice if you just need to write some scripts quickly.
Perl is often mentioned alongside Python as one of the best choices for a scripting language. Many older Linux or Unix systems run Perl scripts, so if you're an infrastructure pro who will be maintaining one of those older systems, it's a good idea to have some experience with the language. Perl is also frequently used for networking and security prototyping, as well as for some older websites.
On the latest Tiobe chart, Perl was ranked ninth, so it's still a tremendously popular programming language, but some people argue that it's on its way out as languages like Python become more popular.
Frequently used for web development, particularly server-side development, PHP is another popular general-purpose scripting language. It runs on all the major operating systems, and is especially good for interacting with SQL-based databases, which is one of the reasons why web developers often use it.
PHP is also very popular -- currently seventh on the Tiobe chart -- so you can find lots of information about it online. However, many web developers are moving away from PHP to Ruby for web development, and Python tends to be more popular for automation scripting. Still, knowing this language would be very helpful if your job involves maintaining web servers.
Ruby is one of the few programming languages that sometimes gets described as "beautiful" and "natural." Its creator, Yukihiro Matsumoto, wanted to create a language that developers would enjoy using, and it has a reputation for being easy to learn and easy to understand. It's currently 13th on the Tiobe popularity chart.
Like PHP, Ruby is most commonly used in web development. It is very frequently used with the Rails web development framework (so much so, that some people mistakenly think the name of the language is Ruby on Rails). However, it can also be used for other scripting purposes. Ruby would be another good choice for infrastructure pros who manage web servers.
The newest language in this slideshow, Frenetic came into being around 2010. Unlike the rest of the languages featured here, it was specifically designed for software-defined networking. It's actually a family of languages that includes Frenetic-OCaml, which is being developed by researchers at Cornell, and Pyretic, which is being developed by researchers at Princeton.
If you are going to be working with OpenFlow-based SDN environments, Frenetic can help you control what's happening in your network. However, because this language is so new, there aren't as many resources available online, and you won't find a lot of job openings that call for Frenetic. On the other hand, as software-defined infrastructure becomes more commonplace, knowledge of Frenetic might be a way that network engineers and administrators can set themselves apart from other job seekers.