I want to code! What OS should I use?

A comprehensive guide to choosing your platform if you want to be a web developer

“I want to be a programmer, what OS should I use?” is a question I get asked a lot. Recently, I’ve asked it myself as I needed to buy a new machine and struggled for weeks taking all the pros and cons of each option into account. I think choosing an ecosystem is important and should not be neglected in the beginning of one’s journey in the software development world. So if you really want to have the best suit with your OS, feel free to follow this guide.

Main options

There are 3 most popular OS families that programmers choose from: Windows, macOS (formerly OS X) and Linux, with the latter two belonging to a UNIX superset. Each revolves around a bit different tasks, but each can be used to do anything you want. The goal is to find the one that will allow you to perform those tasks most easily. You can go long distances on roller skates or visit your neighbor next door by car after all, but doing the other way around makes much more sense, doesn’t it?

I know Windows, maybe I’ll start with that?

Being the most known and common OS, Windows may seem to be a tempting option for web development. It has a wide community and a lot of applications written for it. When you want to go mobile on the cheap, there are a lot of battery life optimizations made by hardware manufacturers allowing you to last longer and longer when working off the grid. Furthermore, there is a ton of modern docking stations compatible with this operating system, allowing easy, one cable connection with all your peripherals and additional displays. I hope it’s needless to say that almost all devices work with Windows, and even if it isn’t plug and play, one install should do the trick with most of them.
Windows’ interface is well known to many and you are most likely to be familiar with it, but that’s a matter of personal preference. However, I find it more intuitive to kill a program that stopped responding in Windows than in most Linux environments, when thinking about out-of-the-box solutions.
Bonus points go to Windows when it comes to gaming. If you are choosing your OS only for work, it won’t matter that much, but it’s nice to have when you want your PC to serve both personal and professional use.

It’s all fun and games, until it’s not

Unfortunately, Redmond based solution has its dark side, too. While trying to have the most user-friendly interface, it also works hard to gather as much info as possible via telemetry services to improve the UX even more. What’s so bad about it? Sometimes it tries too hard, clogging up your whole system with unnecessary operations and makes it unresponsive. Also, looking from power user’s perspective, to set everything up to get each tool working through command line is cumbersome and can discourage beginning devs and this is important as you will probably use CMD quite often. You can, of course, install linux-derived shell, Cygwin being a great example, to work on your projects, but then again, why not use linux when your IDE of choice will probably be compatible with both platforms? While it doesn’t happen on every machine, it’s worth noting that running some npm tasks (like running Angular 2+ project) may take a lot more time than in the UNIX environment.

I’m not sure I want to use Windows, what were those UNIX things?

The most popular OS among developers is Linux, so we’ll start with that. It comes in many flavors and can be configured nearly any way imaginable. The configuration of UNIX systems is also more intuitive as you need to edit files associated with a specified feature and not to fiddle around with the Windows’ registry, which is a crucial and fragile part of the OS (and it’s messy, too). It has a lot of power when accessed through a terminal, has plethora of accessible visual environments, is fast and reliable, doesn’t require you to restart the whole thing after changing settings in contrary to Redmond’s giant’s alternative, but that’s common with UNIX-based systems (macOS included). You can choose a distro that will fit your needs perfectly out of the box and can be tweaked easily. Moreover, the community is a great reason to choose linux ecosystem, as you can find an answer to almost any linux-related question on the web. The most important point, however, is versatility. A PC with linux on board can be a great day to day internet browsing machine, workstation, and server for some services, handling all the tasks with ease. And it’s free to use, so no purchases are needed.

Take off the pink glasses

 

Now, take off the pink glasses

While there are many visual environments available for Linux, I haven’t found one that would be as intuitive and user-friendly as Windows Explorer or Apple’s proprietary Cocoa environment available on macOS. Also, when going Linux, bear in mind there may be some things that require a bit of experience in typing commands into a black window with a flashing caret. What’s more, if you plan to use some extra devices, like graphics tablet or proprietary nVidia video card, driver support is rather poor so to speak. You can make things work, but it will require a lot of tinkering around and you can run into compatibility issues.

What about the mac? How is it different from Linux?

MacOS (formerly OS X) derives from the UNIX family, just like Linux, making it a powerful tool with a lot of possibilities hidden under the hood. However, it has the world-famous Cocoa environment, being known for its ease of use and clean looks, which can be found more user-friendly than most of Linux VEs. The most important difference, though, is how optimized this ecosystem is, as it’s meant to play on Apple computers only, and not designed to run on literally anything, as it happens to be in the world created by mr. Torvalds. This leads to great performance even on older macs. Also, since macOS is unified, hardware manufacturers are more willing to provide drivers for proprietary devices, so you could expect fewer compatibility issues than with other UNIX alternatives.

Okay, so what’s wrong with macOS then?

You are most likely to know that mac only runs on Apple’s hardware unless you don’t want to get all geeky and build a hackintosh. Macs are also pricey and don’t get cheap fast even when used. You will also need to get used to the new interface and keyboard layout being different from a standard PC layout, as the control key will be replaced in use by Command and shortcuts can be overwhelming when you’re learning how to use them. The way it maximizes windows to full screen, the way to switch between them and the lack of native window snapping to certain parts of screen may require changing your habits obtained from using other platforms and will be bothering until you learn to use it or change it to fit your needs.

Ok, enough is enough, I want a simple answer, what do I choose?

The TL;DR version for those who want to make a good choice.
If you still aren’t confident with making the choice, or you just want to have a simple generic answer, you can assume that:

  • If you want to game on your machine and just want to learn the basics of web development, Windows is for you.
  • If you’re up for trying something new and want to be a super hacker kind of guy or just want to get serious with development and have more control over your machine, UNIX family will be your weapon of choice.
  • If you want a cheap workstation and use all the potential your machine has, Linux will be your best pal
  • If you have funds and want to try something new while being sure it will last longer, you should consider getting a mac.

Anything else?

If there are any questions you’d like to ask, or should you need more info or some kind of reviews on each of the aforementioned options, feel free to ask in the comments or contact me. I hope this simple guideline will help you choose the best operating system for you.

Articles chosen for you:

Share the article with your friends!

Written by:

Jakub Wasak

Young web dev fascinated with fresh solutions and technologies, always looking for best fit when choosing tools and frameworks. His motto is that "You can't call a day wasted if you helped somebody".