Mac vs Windows for Programming – What Operating System do Programmers prefer?

selective focus photography of man facing computer Photo by hitesh choudhary on Pexels.com

Should you choose macOS or Windows for software development? This question often stirs up heated arguments. And with so many things in life, the answer is: It depends on the kind of work you do.
Are you working on iOS software? Or tools that need to run on Windows? If either is the case, the answer is pretty straightforward for macOS in the former and Windows for the latter.
But what if you are a web developer?

Mac or Windows for Web Development?

For the last ten to fifteen years, web developers used Macs almost exclusively. This is because all major programming languages are available for macOS. In addition, the graphical user interface was more intuitive, and the BSD core system provided compatibility with many Open Source tools popular among Linux users.

On the other hand, Windows was behind for a long time and focused heavily on Visual Studio and .Net. For instance, when git became popular in the late 2000s, it was used almost exclusively on Linux and macOS. Windows builds existed but almost always came with either Cygwin or as MSYSGit. Windows developers only started to adopt git in the 2010s.

Next to git, there were plenty of other examples, like Node.js or Ruby. Both offered Windows builds eventually, but most developers used Macs or Linux machines.

Windows only became more popular among developers in the second half of the 2010s. It started in 2014 when Satya Nadella just took over the helm at Microsoft. As part of this leadership change, the company opened up more to other vendors. Suddenly, Microsoft embraced Linux openly (see WSL) and actively contributed to many open-source projects such as Git, Node.js, and Rust.
Suddenly, developers gave Windows a try.

Let’s look at typical developer setups on both macOS and Windows.

Programming on a Mac

If you ask around in your local developer community, you’ll find out quickly that many developers share the same toolchain:

  • Homebrew – to install packages
  • iTerm as their preferred Terminal emulator
  • zsh as the default Shell
  • git
  • Text Editors
    • VSCode
    • Sublime Text
    • TextMate

Homebrew became the de-facto package manager over time. It offers packages for almost all tools and libraries (such as databases, programming languages, and so forth).

These days, zsh is the default shell on macOS, but even before that was the case, it was the Go-To for many in combination with oh-my-zsh.

Git is the standard version control system for most developers and can be installed either via the XCode Developer tools or Homebrew.

TextMate used to be the most popular text editor (mainly due to the Ruby on Rails community). Now, it seems, on all operating systems, that VSCode is taking the lead.

Programming on a Windows machine or PC

Windows development setups might not seem as uniform at first. The reason for that is that developers might be leveraging WSL to run their code in a Linux environment, while others might develop their code natively on Windows.
Most developers either choose VSCode, Atom, or Sublime Text to edit their code despite the different subsystems.

When it comes to installing packages, WSL developers can leverage Linux package managers such as apt (Ubuntu).
choco helps to install and maintain packages natively on Windows, on the other hand.

Windows developers not using WSL can choose between cmd.exe and PowerShell as their Shell.

Conclusion

Now, if you’re wondering which operating system to choose for your software development projects a few years ago, the answer would have been definitely macOS. It is sophisticated and mature, offering a wide variety of tooling support with a BSD subsystem.

But since Windows has caught up so much over the last few years, it’s worth a look. If your programming language is supported natively on Windows (like Node.js, Python, or Rust) and you’d like to avoid the high price tags that often come with Apple computers, Windows is your choice.

What is your choice and why?