That being said, each decision comes with consequences. Maybe your ORM package doesnât provide stellar support for Treelike data structures. Maybe you want to implement a new Command Bar UI, but you end up having to create a custom wrapper for kbar in order to support your chosen JavaScript framework.
Operating system choice is much the same. Each comes with a set of consequences, which are constantly changing as each system evolves over time.
Over the last few years, I have had the somewhat rare chance to build apps in all three of the major operating systems.
My day job was for a company that worked exclusively on Mac computers, but my personal computer is Windows Laptop with WSL, and my second personal computer runs Linux Mint. In the next sections, I will provide a short summary of each OS, as well as a list of Pros and cons, specifically for software engineers.
MacOS
For years, software engineers used MacBook pros almost by default. The classic Silicon Valley stereotype is a room full of engineers coding away on their silver metal boxes with the San Francisco sun streaming in.
These days a lot of the positive aspects of using MacOS remain the same, but a few negatives remainâŠ
Positives
macOS is UNIX compliant: Among other things, this makes the terminal on a Mac work much like it does in Linux, and many of the standard conventions for scripting âjust workâ on a Mac.
Portability and capability: Coding on a Mac without peripherals is easy, due to the power of the touchpad and swipe gestures. Despite using high end Windows machines, I have never found anything as satisfying to use without monitors and a keyboard/mouse as a Mac.
Hardware is well made, powerful, and stylish: Whether you are looking for something ultra-portable, or more powerful, Apple hardware is beautiful, useful, and durable.
Some powerful applications are only available on macOS. A classic example is the video editing software âFinal Cut Proââââunfortunately if you *must* use certain software for your job, sometimes it is only available on a Mac.
Running Linux from macOS must be done via containers or via Dual boot. This is perfectly acceptable, but not as cool as WSL.
Python2 system integration While it was once a huge positive that Macs come with Python built in, I have found it quite annoying to deal with the default install of Python being version 2. It has made life more difficult than necessary when setting up and running Python from a Mac. Luckily, this is in the process of being phased out, since Python 2 has been sunset.
Neutrals
Software updates: Macs update far less frequently than Windows, but their updates take much more time. In my mind, this is totally a matter of personal preference.
Windows
In the days of Internet Explorer, Microsoft Office, PowerShell and Visual Basic, Microsoft development lived in a strange world of its own.
In a dramatic corporate shift, this walled-off world opened up as Microsoft embraced open source, leading to great new tools like Visual Studio Code, Windows Subsystem for Linux, and Windows Terminal. High profile acquisitions like GitHub and major investment in companies like OpenAI have rocketed Microsoft into the heart of software engineering trends.
For the less cynical among us, this is an interesting time to experiment with Microsoft products and systems.
Positives
Windows Subsystem for Linux: I started using WSL when it was in the developer preview, and it has come a very long way. When I first installed WSL, it literally bricked my PC, but over the years it has become an absolute joy to use. For those who donât know: WSL lets you run a fully featured Linux environment and Terminal from Windows. You can even choose any distro you want by importing a tar file!
Linux Directory in the Windows File Explorer and an Ubuntu Command Prompt alongside the Windows Command Prompt
2. Hardware diversity and cost optimization: Most desktop hardware comes with Windows installed by default. If you want hardware options, Windows is the OS for you.
3. Touchscreen friendly: Microsoft has spent years optimizing their desktop OS for touch enabled devices, and it shows. Most interfaces are built with mobile in mind, and work well using touchscreens or a keyboard and mouse.
4. New perspectives on what a Desktop computer means: Microsoft has really been pushing envelope with new tools like Phone Link which really has no analog in the macOS worldâââI have literally re-organized my physical desk because this tool eliminates the need to have my phone visible to respond to messages or read notifications. Continued experimentation with new features and tools is exciting and gives each major software update a âChristmas Morningâ feeling for someone like myself who really enjoys playing with the latest technology.
Negatives
Bloatware: Whenever I get a Windows PC, I have to spend lots of time deleting unwanted applications, which is frustrating.
Less polished experience than macOS: Remember, when I first installed WSL it bricked my PC! To be fair, I was using the developer preview. Horror stories of the âBlue Screen of Deathâ all come from the Microsoft world as well. You donât hear this much when talking about computers from Apple.
Neutrals
Software Update: It seems like I have new software updates every week on a Windows Machine, but the update process is usually very fast and relatively painless.
Linux
Lots of people have strong opinions about Linux as a desktop operating system. There are good reasons for these strong opinions, since Linux is vastly different from both Windows and macOS. That being said, with continuing improvements, a new focus on user experience by distribution developers, and moves by large organizations and even governments around the world to transition to Linux, it is no longer possible to ignore Linux as a major player in the OS game.
Run the same OS as your server: Most software out there in the wild is running on a Linux server. If you donât want to rebuild a container every time you save changes to a file, developing on Linux can eliminate some âIt works on my machineâ bugs.
Open Source: It is hard to argue against the social and economic value of Open Source software like Linux. For engineers, the value is even greater, since we can always fork or contribute to a library and modify something that we want changed.
Everything is scriptable: A huge advantage of many Linux distributions coming without a desktop UI is that everything in Linux is scriptable. If wanted, you could script your entire OS configuration, host that script on GitHub and run that script every time you open your computer (oh wait⊠this sounds familiar âŠđ)
Rapidly improving focus on UI/UX: For years, Linux as a desktop OS lagged far behind the slick user experiences from Microsoft and Apple. These days it is not so brutal of a transition to switch to Linux. If you follow Linux news, you will constantly hear of the newest updates to various Distributions that are basically layers of UI/UX decisions on top of standard distros. Some really beautiful examples include Linux Mint, Elementary OS, and Kubuntu.
Extremely customizable: I have spent a lot of time playing around with customization of my Linux environment. It is honestly a ton of fun.
Negatives
Risk: You can literally runsudo rm -rf /from the Linux command line. That is crazy. Linux does not care if you make a mistake, it will do what you say. This is both awesome and terrifying. This risk is part of what makes backups and careful data + config storage strategies a critical part of any approach to using Linux as a primary desktop.
Not compatible with all hardware: Generally if you want to use Linux as a primary OS, you will need to buy hardware with macOS or Windows already installed and then install a Linux ISO. When I was most excited about Linux for my personal computer, I tried running it on my new Surface Laptop, but found that many things did not work (i.e. touchscreen, keyboard etcetera). You will need to ensure that your hardware is supported before buying it, which can limit your options and increase the difficulty of finding the right hardware.
Complexity: The downside of having many options is complexity. Sometimes something as simple as changing a setting can require real engineering skills and a few hours of research.
Neutrals
Software Update: Generally speaking, I like software updates on Linux the most. It can usually be done painlessly from the command line, and at any desired frequency. Command line prompts often encourage you to update when you fall behind, but arenât too intrusive. That being said, some people will prefer the more typical user experiences provided by Apple and Microsoft.
TLDR
If you have unlimited money, a shiny new MacBook Pro may still be the way to go, but itâs not as obvious of a choice as it used to be.
This may be the best time in recent memory to start experimenting with a new operating system, especially considering the combination of an economic downturn, exciting new developments at Microsoft, and continuing improvement of Linux as a desktop operating system.
Note: I did not include Chrome OS in my analysis simply because I havenât used it heavily myself. That being said, my understanding is that Chrome OS really belongs in the Linux category.