Stop me if you’ve heard this one: “Programmers only use Linux. PCs and Macs are for noobs!”
Linux is a tool. Windows is a tool. MacOS is also a tool. Each is an operating system (OS) that you need in order to make a computer useful, and each has its advantages and disadvantages. The problem is that, just like many other tools, these popular OSs have tribes. If Windows is DC Comics and macOS is Marvel, then Linux is Dark Horse.
Uh, What Is Linux, Anyway?
Let’s start at the beginning. (It’s one of my favorite places to start.) If you’re asking whether you should learn Linux, you could probably use a quick introduction to what Linux is. While Windows and macOS are individual operating systems that Microsoft and Apple sell and support, what Linux is (and isn’t) is a little more complicated.
Way back in 1991, a programmer named Linus Torvalds released a new kernel that he named Linux. A kernel is, roughly speaking, a computer program that sits at the middle of an operating system and controls interactions between hardware and the software. He based it on Unix and another Unix-like operating system called Minix. As you can see, monikers that rhyme with Unix were already a thing, so Torvald’s kernel pretty much named itself.
The kernel quickly gained popularity, and more programmers contributed to his project. Soon a new operating system, also called Linux, grew around the kernel.
But open source gotta open source, and there isn’t—and there never will be—only one version of Linux. Linux is a family of operating systems, usually referred to as distributions or distros. A distribution includes the Linux kernel and the rest of the software needed to make a computer usable. The website DistroWatch lists 100 distributions, but it only stops there because 100 is a nice round number.
Some of the most popular distributions are Debian, Red Hat, Ubuntu, and Fedora. Ubuntu is actually based on Debian, and Fedora is based on Red Hat. And, of course, there’s CentOS, which is also based on Red Hat, and Mint, which is based on Ubuntu. … As you can see, it’s complicated. The battle over which distro is the best generates as much heat as and less light than the battles over OSs or comic books.
So, let’s get back to the original question. When you ask “Should programmers learn Linux?” one of the possible answers is “Which one?”
But that’s not really a helpful answer, is it?
So, Should I Learn Linux?
Well, it depends. What are your goals?
That’s a question you should always keep in mind you come across a tool or a recommendation to start using one. What do you need to learn, and will spending time on this help you get there?
Linux is the most widely used OS for servers. Almost all of the websites you visit each day are running Linux, as are the servers that sit behind them for running “back-end” applications like databases. For example, banks make heavy use of Linux for managing financial transactions. Most database servers run Linux, too.
Linux is very popular on embedded platforms. Raspbian is a popular distribution for Raspberry Pi. Google’s Android OS is a Linux derivative, and many network routers and switches use it also.
So, if your goal is to write server software, internet of things (IoT) code, or software for embedded systems, getting comfortable with Linux will go a long way toward making your life easier.
If your dream is to write apps for the iPhone or beautiful web pages, learning Linux might not be the best way to spend your time right now.
What Should I Learn About Linux?
The next question is: What does “learning Linux” mean?
Well, it depends. (Sorry, couldn’t resist.)
If you’re going to be writing server software that runs on Linux, it needs to be deployed onto systems that run it. Depending on where you’re working, this may mean handing your code to a DevOps organization, or it might mean doing it yourself. Either way, you can make your life, not to mention the life of your coworkers, a lot more pleasant if you can get comfortable with the command line and how files are organized on a Linux system.
These skills are transferable regardless of which distribution you learn on and which one your future employer uses. While there are some (often annoying) differences between them, developing an understanding of any major distribution gives you a significant set of skills that you can map over to any one of them. It will also give you a competitive edge over developers that are only comfortable inside the sheltered world of their favorite IDE.
If you’re interested in developing software for robotics or embedded systems, then you need to get intimate with Linux at the kernel level. For you, “learning Linux” means learning the Linux kernel.
Here, again, the distribution you choose is less important than simply getting your feet wet. While not all distributions update kernel versions at the same time (and some are comically slow), the Linux kernel is the Linux kernel. Pick a distro and start playing.
How Do I Do That?
If you’re interested in robotics or IoT, you might as well just get a Raspberry Pi and get right to it. You’ll want to make sure you have a USB mouse and a monitor to connect it to. The rest is pretty straightforward.
If you’re interested in server software, pick a distribution and install it.
Which distribution is really a matter of choice. Some consider Ubuntu the most newbie-friendly. Others consider Linux Mint to be a bit better. The good news is that they’re free, so you could try them all!
The least expensive option for installing Linux and kicking the doors and slamming the tires is to install virtual machine software on the computer you already have. VirtualBox is free and runs on Windows and macOS. It will even guide you on installing Linux after you set it up.
Once you have Linux installed, start playing! The beauty of playing with Raspberry Pi or a virtual machine is that you can always start from scratch if you blow anything up. You’ll see that it’s pretty hard to break a Linux system.
So, Should Programmers Learn Linux?
There’s a good chance that you’ll encounter Linux somewhere in your career as a programmer. Getting comfortable with it in advance can give you a competitive edge over other developers that don’t. Grab yourself a copy and start playing with it now.
This post was written by Eric Goebelbecker. Eric has worked in the financial markets in New York City for 25 years, developing infrastructure for market data and financial information exchange (FIX) protocol networks. He loves to talk about what makes teams effective (or not so effective!)