For decades, Linux skills have been an essential resource for virtually every developer. Unless you are exclusively focused on creating desktop applications for Windows, a familiarity with Linux CLI toolsfile system conventions and system administration routines were important for writing applications, since many of these applications would be hosted on Linux servers.
However, Linux skills are arguably less important for today’s coders. They’re still handy to have, but they’re not the essential knowledge base they once were.
Software development and Linux: a brief history
To understand what has changed, let’s start by looking at how things were.
Historically, developers needed Linux skills because, regardless of the systems end users were running, application hosting environments often consisted of servers running Linux (or another Unix-like operating system whose conventions and tools were similar to Linux).
The majority of websites and web applications are hosted on Linux or other Unix-like servers. Android apps run on an operating system more or less a form of Linux. And any application designed to be cross-platform and run locally must run on Linux if it is to be worthy of the “cross-platform” moniker.
For these reasons, developers needed to know how to work with Linux command-line tools, manage files on a Linux system, install Linux packages, and more. whether they should test the software before deployment. Developers even needed to know Linux if they were to play a role in software deployment and post-deployment management.
Why Linux Matters Less to Today’s Programmers
Today, however, knowing Linux has become less crucial, for a number of reasons.
1. PaaS and Serverless Application Deployments
It is first and foremost the rise of platform as a service (PaaS) and serverless computing services. Both types of solutions make it possible to host applications without worrying too much about the underlying host infrastructure or the operating system.
If you’re deploying your application to a PaaS service like Heroku, for example, or running it as serverless functions on AWS Lambda, you won’t have to interact much directly with a Linux environment to test and deploy it. , even if it ends up being hosted on Linux servers. Instead, you can rely primarily on your PaaS or serverless platform tools to provision Linux servers and run the application there.
2. Windows Subsystem for Linux
Another significant change for developers’ relationship with Linux was the advent of Windows Subsystem for Linux (WSL), a framework that allows running Linux applications “natively” on a Windows system.
Admittedly, using WSL requires some level of Linux skill, as the whole point of the subsystem is to emulate a native Linux environment in Windows. But because the environment is built into Windows, the level of Linux expertise it requires from developers is lower. They don’t need full Linux system administration skills or the ability to work with conventional Linux package managers, for example. They mostly just need to know the basic Linux CLI tools.
3. Macs as development boxes
Another way to access major Linux utilities without actually running Linux is to use macOS. Although some of the tools developers will find on a Mac are not identical to those on Linux systems, and macOS lacks binary compatibility with Linux, both systems offer access to the same basic Unix tools. They also manage files and users in the same way.
This has been the case since Apple adopted a Unix-like operating system to power his computers, of course. But what has changed is that macOS’s market share has steadily increased. In the 1990s, few developers used Macs because few people in general used Macs. But now that Apple’s operating system is widespread, it’s a more obvious solution for programmers who want a Unix-like environment to write and test applications but don’t want to use Linux.
Where Linux Skills Still Matter
None of the above is to say that Linux no longer matters to most developers. An understanding of Linux is always beneficial. And it’s absolutely critical for programmers building applications that will be deployed directly to Linux servers, without abstractions or managed services, to reduce the amount of Linux expertise required to test, deploy, and maintain those applications.
But in general, today’s developers don’t need to know as much about Linux as they once did. The typical developer can get away with something like Windows Subsystem for Linux or choose a hosting service that provides access to Linux environments without requiring traditional Linux system administration skills.
About the AuthorChristopher Tozzi is a technology analyst specializing in cloud computing, application development, open source software, virtualization, containers, and more. He also teaches at a major university in the Albany, New York area. His book, “For Fun and Profit: A History of the Free and Open Source Software Revolution”, was published by MIT Press.