For decades, Linux skills were a critical resource for virtually every developer. Unless you focused exclusively on building desktop apps for Windows, a familiarity with Linux CLI tools, file system conventions, and system administration routines was important for writing apps, given that many of those apps would be hosted on Linux servers.
Arguably, however, Linux skills are less important for today's coders. They're still handy to have, but they are not the essential knowledge base that they once were.
Software Development and Linux: A Brief History
To understand what has changed, let's start by looking at the way things used to be.
Historically, developers needed Linux skills because regardless of which systems end users ran, application hosting environments often consisted of servers running Linux (or some other Unix-like operating system whose conventions and tooling were similar to those of Linux).
A majority of websites and web apps are hosted on Linux or other Unix-like servers. Android apps run on an operating system that is more or less a form of Linux. And any app designed to be cross-platform and run locally needs to work on Linux if it wants 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 so on if they were to test software prior to deployment. Developers even needed to know Linux if they were expected to play a role in deploying and managing software post-deployment.
Why Linux Matters Less for Today's Programmers
Today, however, knowing Linux has become less crucial, for a number of reasons.
1. PaaS and serverless app deployments
First and foremost is the rise of platform-as-a-service (PaaS) and serverless computing services. Both types of solutions make it possible to host applications without worrying much about the underlying host infrastructure or operating system.
If you deploy your application on a PaaS service like Heroku, for instance, or you run it as serverless functions on AWS Lambda, you won't have to interact directly with a Linux environment very much to test and deploy it, even if it ends up being hosted on Linux servers. You can instead rely mainly on the tooling of your PaaS or serverless platform to provision Linux servers and run the app on them.
2. Windows Subsystem for Linux
Another important game-changer for developers' relationship to Linux was the advent of Windows Subsystem for Linux (WSL), a framework that makes it possible to run Linux applications "natively" on a Windows system.
Granted, using WSL requires some level of Linux skills because the whole point of the subsystem is to emulate a native Linux environment within Windows. But because the environment is embedded into Windows, the level of Linux expertise that it demands of developers is lower. They don't need full-scale Linux system administration skills or the ability to work with conventional Linux package managers, for example. They mostly just need to know basic Linux CLI tools.
3. Macs as development boxes
Another way to access core Linux utilities without actually running Linux is to use macOS. Although some tools that developers will find on a Mac aren't identical to those of Linux systems and macOS lacks binary compatibility with Linux, both systems offer access to the same core Unix tools. They also manage files and users in the same ways.
This has been the case ever since Apple adopted a Unix-like operating system to power its computers, of course. But what has changed is that the market share of macOS has steadily climbed. 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 for writing and testing applications but who don't want to use Linux.
Where Linux Skills Are Still Important
None of the above is to say that Linux no longer matters at all for most developers. An understanding of Linux is always beneficial. And it's absolutely critical for programmers building applications that will be deployed directly on Linux servers, without any abstractions or managed services to reduce the amount of Linux expertise required for testing, deploying, and managing those apps.
But in general, developers today don't need to know quite as much about Linux as they once did. The typical developer can get away with a solution like Windows Subsystem for Linux or choosing a hosting service that provides access to Linux environments without requiring traditional Linux system administration skills.
About the authorChristopher Tozzi is a technology analyst with subject matter expertise in cloud computing, application development, open source software, virtualization, containers and more. He also lectures 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.