Which Operating System Should I Use As a Beginning Programmer?

Like many things, the answer depends on your goals and tastes.

Many people advocate Mac OS X as the best development environment, but I believe that it’s not as simple as that. Mac OS X is a good guess, given an average person’s needs and personality, but if you look more closely, there may be a different answer. Let’s take a quick look at some types of people that Mac OS may not be a good fit for.

For power users and purists, Mac OS X will feel limiting and cramped. For them, Linux is the best bet. There’s nothing like the power of the open source ecosystem that it grants access to, and the sheer productivity gained from tweaking the desktop environment to suit one’s tastes is unmatched.

For game developers, most enterprise developers, and people who are hesitant to try a new OS, Windows is king. Plus, Microsoft offers a peerless IDE in the form of Visual Studio.

In short, Mac OS X sits as something of a “happy medium” between the hardcore choice of Linux and the familiar environment of Windows. Mac OS gives you access to a true UNIX system, a very reasonable selection of commercial software, and iOS development.

As much as it pains me to admit this, if I had to take one laptop with me on a year-long trip around the world, it’d be a Mac. Mac OS doesn’t support as much software as Windows and I don’t have access to all of my productivity tweaks and developer tools like I do in Linux, but it has enough of both to be a reasonable choice. However, since I’m a professional mobile app developer, I can’t be away too long from a machine that supports iOS development.

Let’s take a closer look at the three different operating systems to see what we are gaining and losing by going with each one.

Pros and Cons

Windows

Pros:

  • Familiar to most users
  • Pre-installed on most machines
  • Excellent for game development
  • Very popular in the enterprise
  • Visual Studio
  • Supports Windows development

Cons:

  • Not UNIX
  • Dissimilar to most server environments
  • Poor compatibility with many open source tools
  • Less vibrant open source community

Summary:

For most of us, Windows feels like home. Depending on what you’re learning, it’s a fine place to get started.

I’d argue that if you’re going to learn open source back-end server technologies, Windows is not the place to be. The biggest disadvantage is that you won’t have access to a proper UNIX shell and thus won’t be able to properly drive most open source technologies. Many of them have been ported over, yes, but I think you’ll find the experience to be a bit underwhelming and clunky.

However, if you’re doing Android development, game development, or development for any Windows platform (Xbox, Windows Phone, Windows), Windows is a great choice. Microsoft Visual Studio is regarded by many to be the best IDE in the world.

My rule of thumb for Windows development is that as long as you’re in an IDE, you’ll be OK. But the reality is that the IDE is not always the best tool for the job and that you are missing out on the full power of other tools, such as Vim and Emacs.

Mac OS X

Pros:

  • A true UNIX environment
  • Very simple and robust
  • Good selection of commercial software
  • Supports iOS development

Cons:

  • UNIX environment is clunky compared to Linux or BSD
  • OS is not very keyboard-friendly
  • Locked in to Apple hardware (unless you are especially adventurous)
  • Not as good support for commercial software as Windows

Summary:

Pressed for time and want a computer that will take care of itself but still let you play with open source technologies?

Determined to write an iPhone app?

Look no further.

Seriously, OS X offers a great ease-of-use while still allowing you to play with most of the key toys. If you’re undecided, then this is a good bet.

Linux

Pros:

  • Best-in-class open source software
  • Incredibly similar to server environment
  • Highly customizable / comes in many flavors
  • Entirely Free and Open Source
  • Runs on any hardware

Cons:

  • Not as intuitive / friendly as Mac or Windows
  • Poor compatibility with commercial desktop software
  • Fewer Linux users means fewer friends to ask for help

Summary:

If you’re just learning Linux, it may feel a bit strange at first, but I assure you that it’s worth the investment. Plus, things are getting better all the time. Thanks to Ubuntu and Linux Mint, getting Linux installed and running smoothly is way easier than it used to be. But I will admit that it’s still not quite as smooth sailing as Mac OS X.

One thing you can’t discount is the extremely gratifying feeling that Linux has been developed primarily for an audience of computer programmers. The terminal emulators are world-class, the package managers are WAY better than Homebrew, and all-around the development experience is incredibly pleasurable. There’s no better all-around dev environment, but it comes at the cost of learning something new and dealing with some user unfriendliness.

Conclusion

One day, we might be able to use our Android and iOS devices as convincing development machines, but that day is not here just yet. For now, we’ve got to stick with conventional laptops and desktops. So take a look at the above list and see whether you’re a Linux neckbeard, a Windows diehard, or a Mac aficionado. Just make sure to make the decision based on your own values and not what you see your peers doing. They’re not always right.

Written on November 10, 2015

David Kay has realized that The Matrix was indeed a documentary. Let's awaken together. If you found this article helpful, join his newsletter.