In the first article in this series focusing on the top 5 languages for systems admins, I wrote about not being too fond of programming. To recap, it’s not because I don’t see the value behind it, because I whole-heartedly do. I mean, creating your own apps to manage client devices and make them do exactly what you want them to do is incredible as far as I’m concerned. My hesitation stems partly from frustration as it’s not a natural talent for me and can—at times—take me some time to develop the solution I need.
SEE: Top 5 programming languages for network admins to learn (free PDF) (TechRepublic)
But it’s very cool when you get that script refined, tested, and put into production to handle redundant tasks that might otherwise saddle your workload. Now more than ever, I’ve personally been leaning much more heavily on automation since I find myself wearing more than one hat while working remotely and supporting any number of departments, users, and stakeholders in new and varied ways.
It’s with this spirit I present this article with the focus on network administrators and engineers. The tasks and projects that net admins encounter will benefit from any of these programming languages below. But if you’re looking to transition into another role, these languages will also serve you well, perhaps even presenting opportunities you weren’t aware of moving forward.
SEE: Programming languages: Which was most popular each year? (free PDF) (TechRepublic)
The Perl programming language has been around for more than 30 years, and it has continued to be in development, finding itself at home and fully capable of managing systems, networks, and web servers concisely and effortlessly. As a matter of fact, Common Gateway Interface (CGI) scripting led to its rise in popularity as more services found their way to the internet, with Perl’s ability to execute programs on web servers to dynamically generate web sites.
SEE: Report: Perl developers command 54% more money globally (TechRepublic)
But there’s a lot more to Perl, such as how the language naturally lends itself to network administration and systems management through open source support coupled with system-agnostic design. Perl is colloquially referred to as, “the duct tape of the Internet,” due to its flexible nature when handling data (particularly large data sets) and allowing programmers to quickly develop fixes to problems. Adding to its robust nature, the development of Perl applications is often faster than other, more popular languages. But that creates an issue as the variety of syntax sometimes makes resolving Perl-related coding issues arduous for the inexperienced.
Roles best suited for Perl users are Unix and Linux administrators, database administrators, web administrators, and developers.
The native shell of Unix-based systems, including Linux and macOS, is the command-line interface (CLI) that allows admins to execute commands using highly intricate syntax to create scripts to automate system processes, whether they be commonly performed tasks, maintenance cycles such as upgrades and automating system setup tasks to ensure systems are all configured and managed in the same fashion.
SEE: The best programming languages to learn in 2020 (TechRepublic)
For networking equipment, a number of products run on some form of Linux-based OS, which allows for a great deal of flexibility to manage devices in a structured, secure manner. Furthermore, by learning to leverage terminal commands to automate processes, net admins can also use the very same commands to run tests on the network itself to determine connectivity and data routes in addition to log creation for monitoring devices and their connections.
Roles best suited for Bash (Bourne Again SHell) programmers include Linux and macOS-based systems administrators, and automation and application development.
Pronounced ‘tickle,’ Tool Command Language (TCL) is among the more mature of the programming languages and was born out of frustration, according to its creator, John Ousterhout, due to practices by developers embedding their own languages into applications. Having gained worldwide acceptance, Tcl is nothing to laugh at with its aim of being a general-purpose language that is as powerful as it is simple. What makes it great are its native extensibility with C/C++, Java, and Python, its speed and power to create anything from scripted applications to GUIs, and embedding its code into C-based apps. In terms of flexibility, extension packages can provide additional functionality, such as hooking into libraries that control an OS’s theme, User Datagram Protocol sockets support, and OpenSSL for securing connections, just to name a few.
That said, you might be asking yourself why you may not have heard of Tcl before. Well, it is estimated that Tcl has about a 0.1% usage rate across all the websites worldwide. With such limited implementation, why pick this language over a competitor that’s more popular? There’s an answer for that, too: Cisco, that’s why. As a network administrator, you’ve no doubt at least heard of Cisco and chances are that you worked on their equipment, or they may be partners with your organization, providing networking equipment. Cisco’s IOS (Internetwork Operating System), or the OS used on many of Cisco’s switches and routers, has Tcl baked into it and uses it to program and automate changes to its equipment en masse. Cisco provides extensive configuration guides that document the process of managing their wares through Tcl.
Roles best suited for Tcl use are software engineer, developer, automation developer, systems integration, and prototype/hardware architect.
SEE: How to install the Go language on Linux (TechRepublic)
With Go, the learning curve is lower than, say C, for example, and the language is more forgiving, given its lightweight, usability-focused approach to coding. Better still, it was designed with multiprocessing, networking, and for handling high-volume data in mind. This makes it ideal for not only speeding up your network administration tasks but also modernizing it, relying on extensive libraries and community support to create platform-independent applications, similar to Java.
Roles best suited for Go use are systems administration, DevOps, software engineer, data center engineer.
Again, Python finds itself on top as the language’s open-source structure lends itself to being supported by the majority of operating systems. Combined with its relatively low learning curve, robust support community, and interoperability with many facets of information technology, chances are great that learning Python will help just about any admin transition from one role to another without even having to leave the console.
While Python is commonly used for automating system administration tasks, by design, it can be leveraged through the use of plug-ins and scripts to integrate nicely into a variety of workflows, whether they focus on coding, administration, or management. Additionally, Python can utilize existing libraries to further enhance the functionality of scripts you design or to cut development time down significantly.
Roles best suited for Python programmers include penetration testers, security administrators, web developers, DevOps teams, and automation developer.