I think macOS is better than Windows for software development. There I said it, and I will stand by that statement. As a former die-hard Windows user, I will give you three reasons why macOS is better than Windows. Before you pull out your pitchforks, let me explain my reasoning for making this bold statement.
1. Unix-based OS
One of the greatest benefits of macOS is that, at its core, it’s a Unix-based OS. Unix is an operating system designed with programmers in mind. Hence one of the biggest benefits of this OS is its built-in terminal. This terminal is capable of handling almost any command-line task you throw at it out of the box.
Built off of hundreds of specialized utilities, the terminal gives programmers a complete toolkit, allowing them to execute commands, run programs and take full control of the operating system. In comparison, the command prompt on Windows has very limited functionality. It lacks many popular Unix commands such as
grep, and many more. This limits the control programmers have over the operating system.
To achieve the same functionality of the macOS terminal on Windows comes with its challenges, and oftentimes users end up installing a Unix-like terminal. This adds a lot of extra setup that often isn’t very intuitive for the user. Being able to access all these tools with the macOS terminal out of the box makes using macOS a great option for developers.
Some may argue that the PowerShell on windows can come close to competing with the macOS terminal. In some cases, it can, but compared to Unix the PowerShell syntax has a very steep learning curve. Unix is also used throughout much of the tech infrastructure used today. This makes it a more beneficial syntax to learn and use for programmers.
Two of the greatest quality of life advantages of macOS are its gestures and shortcuts. The combination of the software of macOS and the hardware of apple devices produces a killer user experience. As a result, this creates very smooth and intuitive gestures and shortcuts. The features are not only nice for the average user but for software developers as well. Here are some of the gestures that macOS offers.
Swipe Between Full-Screen Apps
This is a convenient alternative to the standard
alt + tab or
⌘ + tab way of switching between pages. This gesture allows the user to switch between screens by swiping left/right with three or four fingers without having to use the keyboard. Whether you’re switching between your code or a stack overflow screen, this gesture makes it very simple to navigate around your desktop.
By swiping with three/four fingers up on the trackpad you can see every program open on your desktop. This allows you to locate any program or window in one convenient space without having to click through them. This is especially useful if a program you are using gets lost behind a ton of other programs and allows you to go directly to it.
By swiping with three/four fingers down on the trackpad, you can see every single instance of the current program you are using. For example, if you have many terminals open, opening the app expose allows you to see every terminal open. You can then choose the one that you need to reference instead of having to open each one to check.
These are three of the many gestures available to macOS. Windows does not have any of these gestures. Even when Windows does allow for gestures, it is not as smooth and intuitive as the macOS experience. These gestures are useful for programmers because they always have so many programs open. Whether it’s IDEs, terminals, or websites, macOS gestures make interacting with these programs and pages a seamless experience.
3. Cross-platform development
The last of my reasons is that macOS allows for more accessible cross-platform development. macOS is one of the most versatile operating systems for developing software. Whether you’re developing Android, iOS, web, or desktop apps, macOS has the tools to do it all.
The biggest advantage of macOS is the ability to develop native iOS apps and many others through Xcode. Xcode allows you to run, build and test iOS apps directly from your computer. Compared to Windows, if you wanted to develop an iOS app, you would need to install a virtual machine to run macOS. This is not only less efficient but not as seamless as the development process on macOS. For those interested in developing apps in the Apple ecosystem, macOS is one of the best options.
macOS also has a variety of tools that run and switch between the Windows operating system and macOS. Not only does this allow developers to develop Windows applications, it also runs the Windows operating system on the hardware of an Apple device. This is the better option compared to running a macOS virtual machine on Windows hardware. Having access to both operating systems provides the ability to develop any software on almost any platform.
The combination of the Unix-based operating system along with the gestures and cross-platform capabilities of macOS is what won over my heart from Windows to Mac. Out of the box, macOS offers the most diverse set of tools for any developer to start developing software. The hardware coupled with the software of macOS makes the experience unparalleled to any other system.
Now that I’ve stated my points, let’s talk. Do you disagree with anything I said? Think I’m spewing nonsense? Convince me otherwise in the comments below. If not, let me know what you agree with and what was helpful. The only thing I ask is please keep those pitchforks stowed away for now.
1.) Irrelevant. Windows 10/11 include a full unix OS running alongside the installation in the form of WSL 2. You can even run linux GUI apps. Windows wins this round.
2.) You wouldn’t need these if Mac OS had half decent multi-monitor and multi-window support or you had the option to go for a 32:9 screen. You just don’t on Mac OS, so these barely make it usable if you’re really into pain, but it’s still much worse. This is a point for Windows.
3.) Windows can target: Windows, Linux, Mac, Android, iOS, Web. You can directly execute all but MacOS executables natively. You can debug all of them. And you’re not forced to use the garbage dumpster that XCode is. At least you get JetBrains IDE’s, but they don’t quite live up to VS in many ways, especially when it comes to frameworks, GUI’s and Azure integration. The only advantage Mac has here is that you’re able to publish your Mac OS apps, which Apple ties to owning a Mac. Other than that, in terms of cross-platform, it can’t really be a win if you can’t target 70% of PC’s and can’t natively execute what runs on 80% of PC’s. Again, win for Windows.
Yeah I was gonna say WSL2 is actually pretty good. And I personally prefer Linux as my base development environment, so Unix is better than just windows, but windows + Linux is ideal. Plus you can use brew on Ubuntu (and probably other distros) on WSL2 so you can get most of the Mac stuff anyways.
Seems like the only benefit to developing in a Mac environment is if you’re writing for Mac or iOS, which is fair.