Linux has a reputation for being the operating system for hackers and coders. But is there really any advantage for programmers to learn Linux and use it over Windows or Mac?
The major pros of learning Linux for programmers are that it’s the leading OS for servers packed with tons of development tools that gives root access to your system and is highly secure and stable. However, it lacks support for much proprietary software and newly released hardware.
In this article, I’ll share with you a detailed look at the pros and cons of learning Linux for programmers. This guide should help you decide whether it’s worth investing your time learning the OS. Also, if you are interested, I’ve shared some resources that’ll help you learn Linux.
Linux for Programming: Comparison of Benefits and Drawbacks
Here’s a table covering the advantages and disadvantages of learning Linux for programmers. This should give you a basic overview of whether the operating system is right for you.
|Pros of Learning Linux||Cons of Learning Linux|
|Linux is developer-centric with support for most popular programming languages, package managers, access to the Unix terminal, and much more.||Might Not Work With Your Hardware|
|Linux is the OS of choice on most web servers. As such, if you intend on working with servers or as a web developer, knowing Linux will prove highly beneficial.||Much popular and proprietary software is not natively supported on Linux. Examples include Adobe apps, Microsoft Office, etc.|
|Linux gives you complete control over your system down to the kernel’s source code. What’s more, you are free to tinker around, making it the perfect platform to run your experiments.||Almost everything is DIY with very few plug-and-play solutions. It will take a lot of time & work to configure the system in a way you like.|
|Linux is very secure, and you don’t need to worry about viruses or malware when downloading/installing packages on your system.|
Here’s a more in-depth look at each of these pros and cons to give you a better idea.
4 Pros of Learning Linux for a Programmer
First, let’s quickly go over the various benefits of learning and using Linux as a programmer.
Linux Is Developer-Centric
Linux is a developer-centric operating system, and it’s packed with tons of tools and features that’ll make your life as a developer much more manageable.
For starters, Linux natively supports almost all the popular programming languages starting with C, C++, and Java to Python, Ruby, and the list goes on. In fact, you can also run .NET languages like Visual Basic, C#, and ASP.NET on Linux.
Next comes package managers. As a programmer, you’ll constantly need to download various tools and software on your system to get your program to work. Well, with Linux, you have built-in package managers that’ll help you quickly fetch the tools you need from secure repositories– all with a single command.
And if that’s not all, with Linux, you get access to the Bash shell – an interactive command language as well as a scripting language that you can use to navigate your system, automate tasks, and much more.
Should you be using Mac or a PC? Get the answer in this article.
Linux Is the Most Widely Used OS for Servers
Over 95% of the top 1 million web servers in the world run on Linux, not to mention 90% of all cloud-based infrastructures. That’s a vast & dominating market share.
As such, if you’re a programmer looking for a web development job, knowing Linux will undoubtedly give you an edge. It will make you more desirable from a hiring perspective and help you become more comfortable with the server environment.
Knowing Linux will help you SSH into remote servers, easily navigate the filesystems, quickly copy & move files straight from the terminal, efficiently access GIT repos, etc.
Also, with more knowledge and expertise in this area, you can transit to DevOps– in case that’s the career path you’re aiming at.
You Have Absolute Control Over Your Operating System
Linux is open-source and falls under the GNU General Public License (GPL). That means you can view and tweak 100% of the source code that builds Linux.
As a programmer, you get to view and understand how the system works, giving you complete control over the OS.
Furthermore, with Linux, you gain root-level access to your system. That means you can directly make changes to the kernel. Doing so isn’t recommended for regular users, but programmers can take advantage of this freedom much more efficiently and productively.
What’s more, you’re free to remove any software & components from your system and replace them with other tools. That allows you to build the perfect environment for testing and debugging the program you’re making.
Linux Offers Superior Security & Stability
Programmers often need to download tons of tools, software, and packages while developing a particular app. As such, they need to be extra careful not to download any viruses & malware accidentally, or they can end up in great trouble.
Luckily, Linux is much more secure than Windows and macOS, and you don’t need to worry about malware that much.
With Linux, you primarily download tools and packages from the official repositories maintained by the Linux community. These packages are generally safe from bad actors. Also, Linux is built differently with almost zero backdoors and security flaws that hackers and viruses can exploit, thereby making it safer.
Another excellent feature with Linux is that you can install software & packages and start using them without rebooting the system. You can even do complete system updates and BIOS updates without restarting your system.
As such, you get an interruption-free coding experience, which you won’t be able to live without once you experience it.
3 Cons of Learning Linux for a Programmer
Linux offers many benefits to programmers, but it still has a few drawbacks that keep it from mass adoption. Here’s a look at the main cons of Linux that you should know as a programmer.
Linux Might Not Work With Your Hardware
Linux suffers from a smaller market share than Windows or macOS in consumer electronics. Some manufacturers don’t create drivers for Linux, which means their hardware won’t work on Linux.
Now, if you happen to use any such hardware and you decide to switch to Linux, you’ll find that they either don’t function like they’re supposed to or completely stop working.
The most common hardware compatibility issue is with printers. However, the problem also extends to non-functional RGB effects on specific gaming peripherals, video card compatibility – specifically Nvidia cards, and, worst of all, laptop WiFi cards.
Lack of Proprietary Software
Linux lacks support for many popular and proprietary software. For example, Microsoft Office and Adobe Creative Suite programs don’t natively run on Linux.
That said, you can use compatibility layers to run these software files, but it generally leads to degraded performance and sub-optimal user experience.
Now granted, this isn’t the fault of Linux. These programs don’t work because their developers (Microsoft and Adobe) haven’t ported them to Linux.
But still, if you need any of these in your workflow, using Linux can become a headache.
For example, as a front-end web developer, you might need to use PhotoShop or Adobe XD occasionally. However, if you’re on Linux, that won’t be possible, and you’ll need to resort to other alternatives like GIMP or Akira.
Mostly Everything Is Do-It-Yourself (DIY)
With Linux, almost everything is DIY, which can get frustrating after a certain point.
Let’s say you’re the type of person who wants a pre-made system that works out of the box and wants to start coding on it right away. Well, on Linux, technically, you can, but it’s not as consumer-ready as Windows or Mac.
You’ll have to jump through some extra hoops to get things up and running at first.
Eventually, you’ll come across a setting – that you always took for granted – absent from your system. Now, you have to read manuals and online blogs to figure out how to activate it.
It WILL help you better learn your system in the big picture, but it can get annoying sometimes.
Should Programmers Learn Linux?
By now, you should have a solid understanding of the benefits and drawbacks of learning Linux. But if you’re still confused on whether or not it’s worth learning, then let me give you a more direct answer – it depends (sorry)!
Programmers should learn Linux if they can use it. When deciding if Linux is right for you, you’ll need to consider what type of apps and programs you want to create and whether Linux can support your vision and your favorite programs.
For example, let’s say you want to be a backend web developer or create server software. In that case, knowing Linux will give you a significant edge because Linux powers most servers.
Other than this, Linux is a popular choice with embedded platforms like IoT devices, network routers & switches, Raspberry Pi, etc. It’s also heavily used in artificial intelligence & machine learning, not to mention on most supercomputers.
So, if you want to develop software for any of these devices or platforms, then knowing Linux can help with your work.
On the flip side, do you want to be an iOS developer or write apps for Mac? In that case, learning Linux might help (because both Linux and Mac are Unix-like), but it won’t be as helpful as investing time in learning Mac or iOS directly.
The Best Way To Learn Linux
The best way to learn Linux is by installing it on a system and using it daily. If you don’t have a spare system or don’t want to dual-boot, you can install Linux on a virtual machine.
Now, when downloading/installing Linux, you’ll notice that it has hundreds of flavors, a.k.a distros (short for distributions). The most popular Linux distro is Ubuntu, but there are better options for programmers like Fedora, Kali Linux, OpenSUSE, and many more.
If you’re serious about learning Linux, I’d recommend that you start with ArcoLinux.
It’s an excellent Linux distro with all the bells and whistles you’ll need right out of the box. Here’s a fantastic 25-min YouTube video from the folks over at TechHut reviewing ArcoLinux if you want to learn more:
Now, the ArcoLinux project is geared towards a hands-on approach to teaching Linux following an 8 phase learning journey.
While you’re using ArcoLinux, I’d also suggest viewing this resource – Linux Journey. It’s a great website with text-based learning material divided into chapters that’ll make you a master of Linux-fu in no time.
A programmer should learn Linux because it offers a developer-centric environment with better security, stability, and complete control over the operating system.
It’s also the most used OS on web servers and supercomputers, which makes it a great skill to have if you want to develop software for these platforms.
Still, Linux suffers from occasional hardware incompatibility issues and a lack of proprietary software like the Adobe suite, making it a difficult transition for many users.
Also, learning Linux won’t be too useful if you want to develop apps for unrelated platforms like macOS or iOS.