Once upon a time, encouraging a system administrator to learn a programming language might have been wonky career advice. Programming languages are for programmers, after all—you know, the people who write code for a living. The sysadmin just keeps everything up and running.
That’s a reasonable but dated thought process. In today’s multi-cloud and hybrid cloud environments, which are increasingly automated and managed with code, strategically learning a language (or several) is often a smart move. This fact doesn’t mean you’re now doing double duty as an application developer, but rather that in modern IT environments some traditional sysadmin duties have become more code-driven. Factor in related trends such as containers, microservices, and orchestration, and you begin to understand why automation has been such a hot topic in IT. We need automation to keep things running smoothly as systems scale in production, all the more so given today’s distributed computing environments.
If you’re a sysadmin, you could learn any programming language just for the heck of it. No one’s stopping you. But some languages make particular sense. Your mileage may vary depending on factors like your infrastructure, applications, codebases, toolchains, and so on. Let’s look at seven languages worth considering for today’s sysadmin.
Bash
The Bash command language (which is short for Bourne Again Shell, a reference to the Bourne Shell that it replaced) has plenty of hardcore IT fans. This language is a particularly good pick for sysadmins to learn, says Rob Hernandez, CTO at Nebulaworks, because it suits some of the fundamental job responsibilities.
"A lot of the situations sysadmins find themselves in requires having to glue processes or existing tools together," Hernandez says. That’s often easier said than done: "Typically the systems have constraints and your ability or access to installing an interpreter or compiler might be limited."
Enter Bash. Hernandez notes that this shell is available on most Linux distributions and UNIX OSes out of the box. (And, he adds, the original Bourne shell (sh) is there—"if you must.") Moreover, the Bash command language is well-suited to the kinds of problem-solving that sysadmins do on a regular basis.
"[Bash] provides the glue necessary to solve countless problems without much [of the] boilerplate that's required from more sophisticated languages," Hernandez says. "This quick ability to prototype and even solve the initial problems is typically the first tool us trusty, experienced sysadmins reach for. And with its inclusion into Windows via WSL, it most certainly isn't going away anytime soon."
Python
Hernandez notes that there comes a time when a shell script approaches its maximum possible complexity. "I measure this by asking a single question: 'Do I need a dictionary?'" Hernandez says. (Dictionaries are a data type in Python; Hernandez points to the Python docs for a good definition.) "If so, I would say it’s time to look into another language."
For Hernandez, that next-level language is Python. Here’s why: "Python provides a good set of advantages over the shell (dictionaries being one), as well as the ability to allow you to properly write unit tests," Hernandez says. "[Python] is available to install on any modern UNIX OS or Linux distribution and the syntax isn't overbearing. I've found it to be an approachable alternative to those familiar with the shell."
Hernandez also offers advice if you’re new to the language: "Start with Python 3.6 since Python 2.x has, for the most part, reached end-of-life. The syntax changes slightly between the two versions but this way you're learning the good habits right off the bat."
All that we've discussed here explains why, as a scripting language, Python has become a popular choice for automating manual and repetitive tasks. There’s even a Udemy course called "Learn Python: The Complete Python Automation Course!" In fact, Python is featured in a number of online courses (including free options) designed for people with little to no coding experience.
"The resurgence in Python over the last few years means even more internet resources for learning are available and up to date," says Jack Bedell-Pearce, managing director and co-founder at 4D Data Centres Ltd in the UK. "Python is a must have for all systems administrators. It’s cross-platform and caters for any complex task."
PowerShell
As we noted above, the right language for you depends on the environments you’re working in. PowerShell is a good example.
"PowerShell is invaluable for Windows system administrators," says Bedell-Pearce. "PowerShell gives access and control to the whole system from the command line. Administration tasks can be fully automated, saving time and minimizing human error. Powershell scripts can be scheduled to automate out of hours of repetitive tasks with ease."
Azure PowerShell
Okay, this next one is not technically a separate language.
Azure Powershell is ostensibly an extension of PowerShell for the public cloud, this language may be a good fit for sysadmins working with Azure, especially in multi-cloud and hybrid cloud settings.
"Azure PowerShell provides a set of cmdlets that use the Azure Resource Manager model for managing your Azure resources," says Jared Sikander, CTO at NetEnrich. "Azure PowerShell uses .NET Standard, making it available for Windows, macOS, and Linux."
Node.js
Sikander also points to Node.js as another good choice in DevOps shops and other environments where automation is a priority. This open source JavaScript runtime is, in the words of the project, "designed to build scalable network applications." It’s also commonly mentioned as a good fit for microservices architecture. Sikander generally recommends languages (like Node.js and others) and tools that are associated with DevOps culture and practices.
Kubernetes
OK, OK, Kubernetes isn’t a language in the traditional sense. But this platform has become one of the top choices for managing containerized applications, and is likely to grow in popularity as more companies deploy containers in production environments. And while we’d typically call Kubernetes a container orchestration or management tool, it does have it’s own native command-line interface, kubectl, which comes with its own particular syntax for managing your Kubernetes clusters.
Speaking of clusters, Kubernetes has its own literal language or lexicon of key concepts and features. The Kubernetes project site includes a glossary, as well as a kubectl cheat sheet for running commands.
Go
And to throw one more actual programming language in the mix here, consider Go (aka Golang), particularly if you’re looking to build your credentials for a role administering containerized applications and their infrastructure. Kubernetes was written in Go, as was Docker and rkt.
저자 소개
Kevin Casey writes about technology and business for a variety of publications. He won an Azbee Award, given by the American Society of Business Publication Editors, for his InformationWeek.com story, "Are You Too Old For IT?"
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
가상화
온프레미스와 클라우드 환경에서 워크로드를 유연하게 운영하기 위한 엔터프라이즈 가상화의 미래