Main image of article Why Develop on Linux?
Everyone has a favorite development platform. With Windows becoming less popular, is Linux getting the breakthrough it needs? The answer, on the surface, is “Yes.” If you haven’t yet experimented with the operating system yourself, now’s the time to give it a try. According to the Stack Overflow 2016 survey, desktop developers now constitute just 6.9 percent of all developers (and that also includes Mac Desktops). Over half of programming jobs are now for Web developers, and that has opened up development on alternative platforms such as Linux and Mac. That’s why, after 20 years of focusing on building Windows applications, I decided to learn Linux, specifically Ubuntu. If your career has been Windows-centric to this point, you should consider doing the same. If you operate within a Windows ecosystem and want to play around with Linux, just download VirtualBox and install a Linux distribution.

So Why Switch?

Here’s why you might prefer Linux to Mac or Windows.
  • It offers greater breadth and depth of open-source software.
  • It’s less fiddly running open-source software on Linux.
  • It runs on anything, especially an old Windows PC.
  • Once you've learned the terminal commands, you can be extremely efficient and productive.
  • Rebuilding a Windows Development PC after a major crash can take hours or days to reinstall everything. Linux, by contrast, is a lot quicker and also easier to containerize.
  • The development environment is similar to production. It’s also likely to stay stable longer, as there’s less commercial pressure to release new OS versions.
  • In the world of servers, it reigns supreme. It’s also a major player in mobile, thanks to Android.
Let’s look at a couple of these points:

Terminal Commands

Linux at heart is a command-line operating system with many commands for controlling and configuring the system, running applications, and so on. You can control everything from the command line. This might be a bit of a controversial statement, but I’ve not seen any Linux GUIs that are quite as good as Windows. To be fair to those GUis, they are far more user-friendly than a terminal, and let you run multiple terminals at once; you can also browse around the file system far more easily than issuing commands in a terminal. (To be a Linux developer, you should feel at home with terminal commands, particularly for installing and updating software.) Irrespective of the GUI used, if you are familiar with the terminal commands and one of the shells, you can find your way around any Linux deployment. There are many popular shells, though everyone knows Bash (a.k.a. Bourne-again Shell); they differ in features such as history, saving commands as scripts, command line completion and the like. Shell scripts are not unlike Windows batch files for controlling the system, but a lot more powerful. They constitute a “mini-programming language,” albeit with many more commands, and include constants, string and integer variables; if, case, for, while and until loops; as well as job control, shell functions and aliases (and lots more).

Rebuilding After a Major Crash

If you’ve been developing on Windows for a couple of years, you’ve likely experienced a catastrophic failure at some point, or had to move all your dev tools to a new version of Windows. Windows 10 is perhaps better at handling crashes than previous versions, but I’ve had to reload my entire development package on Windows 95, 2000, XP and 7. None of these were total disk crashes, and I had backups, but each wasted a day or two before I could get back to my pre-crash state. There are probably less than 20 pieces of development software that I need on a PC, but that still means a lot of time spent reacquiring and reinstalling. You can have the same issues with Linux, except most Linux upgrades don’t require application reinstalls (and I’ve never experienced a catastrophic crash while working with Linux). In the event of a total implosion, much of the software can be reinstalled with batch files made up of multiple sudo apt install statements. It’s just far quicker.

Aside: What about Macs?

I have a love/hate relationship with Macs, but I’m not a web designer. I need one for mobile development, and as it’s based on Unix, the terminal is as useful as on Linux. But Macs aren’t cheap or as easy to upgrade, and while OS X is ok, I prefer Windows and Linux (the Mac Finder program, for example, is a very poor alternative to Windows File Explorer). Also, the Mac is less open than Linux and Windows. Don't use sudo to install software tools on Mac OS X; instead, use Homebrew for an install in areas that don't need root access.

Conclusion

There's no single thing that makes one platform better than others for developers, though Visual Studio comes close, and the best commercial development and graphics tools are only available on Windows/Mac OS X. Web developers who write JavaScript would most likely prefer Linux, as the whole JavaScript development ecosystem—including package managers and so on—is more Linux-oriented. Web designers probably prefer anything to Linux, but for everyone else, the operating system is worth a try at the very least.