8 min read
Is linux a must for developers?

Introduction

Whenever I speak low of Windows in favor of Linux, one of my friends always reminds me that my shift to Linux was not spiked but preference, but rather by circumstance. It’s true, my initial reason to move to Linux was because my laptop was performing slower than I wanted, and was not in a position to buy another one at the moment. So, when one of my lecturers introduced me to the Unix based operating systems and highlighted their main advantages of Windows, I had to give it a try. I then grew to appreciate the operating system and its main benefits to programming, to the extent that when I eventually upgraded my PC, the first thing I did was to replace Windows with Ubuntu. But one might wonder, is it a matter of need or that of preference?

I have tried a number of distributions, including Debian, Fedora, Pop!OS, Kali Linux, and Ubuntu, but my the latter has been my primary OS and preferred distro all the time.

What are some of the advantages

Over the course of the 2 years that I’ve used Ubuntu, I have noted quite a number of advantages ranging from performance to UI, but this post is specifically about software development, and thus I would be limited to that.

1. Package Management

Ubuntu makes it so easy to install, update, and manage development tools and libraries. Instead of downloading dependencies from a web browser and installing them, you can save time by just installing everything with simple commands. While Windows has made improvements with tools like Windows Package Manager (winget), the package management experience is not as streamlined as Ubuntu’s APT. For example, to get started with ReactJS development on Windows, you will need to manually download nodejs and npm via the browser and then install them before you can use the npx create-react-app command. On my old laptop, it took me about 20 minutes to fully set up and get the starter react app running. On Ubuntu, being a novice and not familiar with advanced options to install packages faster, it was way quicker. apt install nodejs npm did the job in less than 5 minutes.

I am not saying that’s the average performance difference between the two OS. With a better PC, the difference is not that big, but for someone who has a low end gadget, or just one who is conscious about their time and productivity, it makes a very big difference.

2. Development Environment: Git, SSH

Ubuntu offers a powerful command-line interface, which is essential for many development tasks. Developers can work efficiently using tools like Bash, SSH, and Git directly within the terminal. Windows was just not built for some things I suppose, take SSH for example. To successfully connect to a remote server on Windows, you’ll need to install a third-party software, the most popular of which is the PuTTY suite. I am not going to go into the specifics of how to use it, the word “suite” must have told you something. But on Ubuntu, the process is as simple as just typing ssh <private-key> <username>@<hostname> and that’s it! For Git, you will need something like Gitbash to get a third-party application that allows you to write git commands. On Linux, it’s just the terminal. In fact, for development, you may need just the terminal for something that might require an upwards of 5 apps on Windows. Now, for people who are not ready for the command line interface, that’s great. But for some of us, no thank you.

Fun fact: Working on the terminal is significantly more efficient than working with GUI apps. I found this discussion on Hacker News quite interesting.

3. Development Tools

Finally, Ubuntu supports a wide range of programming languages and development tools, including Python, Java, Ruby, and more. You can easily set up your preferred development environment without the bloatware that sometimes comes with Windows. I remember the other time we were working on a C project with my roommate. While it was very simple for me to just write my C files and compile them on Ubuntu out-of-the-box, my companion was facing quite a challenge. Understanding that he was not ready to move to Ubuntu, I was eager to help him surf through the web looking for some solution. It turned out it was possible, yes, but him having worked with Ubuntu via a sandboxed environment before, he realized the hassle was just too much. Eventually, he settled on installing the Windows Subsystem for Linux, and has been faring well.

The Windows Subsystem for Linux (WSL) is a feature of Windows that allows you to run a Linux environment directly on Windows, without the need for a virtual machine or dual booting. In other words, WSL lets you use Linux command-line tools and applications on Windows, without having to leave your Windows desktop.

Of course, there’s a downside

While there are a lot of advantages to using Ubuntu, or any Linux distro for that matter, it’s not always rosy. For someone who plays games, Linux is just not made for games. Or if you use the Adobe suite, or even Microsoft’s Office, you might struggle to find the perfect alternative. But even for someone like me, who could afford to work without those, I still had some things to miss, the biggest of which was OneDrive.

OneDrive

While there are many cloud storage options available for any platform, I have not found one that works as well as Microsoft’s OneDrive, particularly for folder backup. My organization has a license for Microsoft 365, which gives me a full terabyte of cloud storage. I can still access OneDrive from a web browser on Ubuntu, but the experience is different. My entire PC was backed up to OneDrive on Windows, so any changes to files were synced with the cloud immediately. This luxury is not available on Ubuntu, since Microsoft does not officially support OneDrive on Linux. You can use tools like RClone to back up your OneDrive files on Ubuntu, but the experience is different from the official OneDrive experience.

Rclone is a command-line tool for managing files on cloud storage, including Microsoft OneDrive, Amazon S3, Google Drive, Dropbox, Backblaze B2, DigitalOcean Spaces, Wasabi, Ceph, OpenStack Swift, FTP, SFTP, WebDAV, and many more. It can be used to sync, copy, move, and backup files between different cloud storage providers, as well as between cloud storage and local storage.

Need or Preference?

Whether or not Ubuntu is a need for software development depends on your individual needs and preferences. If you are happy with your current development environment on Windows, then there is no need to switch to Ubuntu. With the advent of WSL, you might be better of enjoying the benefits that come with using Ubuntu without having to switch your desktop for everyday tasks. Traditionally, your options to enjoy both systems would be a dual boot or a virtual machine, but those have their drawbacks, which I am not going to cover in this article.

This article is intended for people who might not be sure whether or not to switch to Linux. If you have been using Linux for a while and now want to go fully Linux, you might want to take a look at this article by Make Use Of. Also, take note that MacOS was not part of this comparison, for the simple reason that I have never really worked on it.

What’s Next?

If you have made it this far, I bet you had a good time reading this. If you are considering installing Ubuntu and are wondering how to get started, I recommend the official Ubuntu tutorial on getting started. You might as well have some feedback for me. Feel free to do that on LinkedIn.