Life as a systems engineer is a process of continuous improvement. In the past few years, as software-defined-everything has started to overhaul how we work in the same way virtualization did, knowing how to write and debug software has been a critical skill for systems engineers. Whether you are automating a small, repetitive, manual task, writing daily reporting tools, or debugging a production outage, it is vital to choose the right tool for the job. Below, are a few programming languages that I think all systems engineers will find useful, and also some guidance for picking your next language to learn.

Bash

The old standby, Bash (and, to a certain extent, POSIX sh) is the go-to for many systems engineers. The quick access to system primitives makes it ideal for ad-hoc data transformations. Slap together curl and jq with some conditionals, and you've got everything from a basic health check to an automated daily reporting tool. However, once you get a few levels of iteration deep, or you're making multiple calls to jq, you probably want to pull out a more fully-featured programming language.

Python

Python's easy onboarding, wide range of libraries, and large community make it ideal for more demanding sysadmin tasks. Daily reports might start as a few hundred lines of Bash that are run first thing in the morning. Once this gets large enough, however, it makes sense to move this to Python. A quick import json for simple JSON object interaction, and import jinja2 for quickly templating out a daily HTML-formatted email.

The languages your tools are built in

One of the powers of open source is, of course, access to the source! However, it is hard to realize this value if you don't have an understanding of the languages these tools are built in. An understanding of Go makes digging into the Datadog or Kubernetes codebases much easier. Being familiar with the development and debugging tools for C and Perl allow you to quickly dig down into aberrant behavior.

The new hotness

Even if you don't have Go or Rust in your environment today, there's a good chance you'll start seeing these languages more often. Maybe your application developers are migrating over to Elixir. Keeping up with the evolution of our industry can frequently feel like a treadmill, but this can be mitigated somewhat by getting ahead of changes inside of your organization. Keep an ear to the ground and start learning languages before you need them, so you're always prepared.

[ Download now: A sysadmin's guide to Bash scripting. ]


关于作者

Jonathan Roemer is a senior DevOps engineer at Drizly with an interest in security, automation, and the human side of IT. He can usually be found hiking or reading a book on his porch.

UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Virtualization icon

虚拟化

适用于您的本地或跨云工作负载的企业虚拟化的未来