macOS vs Windows: a web developer’s perspective
Since 2015, I’ve been using both Windows and macOS in about a 50/50 split. Currently, my walkin’ about weapon of choice is a 15" MacBook Pro in space grey with a space grey interior. My desktop beast at home is a collection of parts cobbled together over the years in a case the size of a small car, running Windows 10.
Occasionally I get asked why on earth I would choose to use one or the other, and this post is an answer to that question.
So if you’re looking to buy your first machine, or considering switching sides, or even toying with the idea of becoming bi-systemal, then maybe this post will be useful and my existence not so unnecessary after all.
Side note: I reckon I do a pretty good job of being objective down below, so as a fun game, see if you can spot which OS I’m secretly a fanboy of. (Fun psychology fact: you will guess the opposite to whichever OS you use.)
Some usage stats
The usage stats aren’t super relevant, but they’re interesting and perhaps even surprising, so here we go…
Going off the raw data from the Stack Overflow survey, among developers who said they only do ‘Front-end development’, it’s a 53/47 split (macOS/Windows). It differs by country, with about a 70/30 split in the US, UK and Germany, and about 10/90 in Pakistan and Nigeria.
Among front end developers who also ticked some other box (‘Mobile’, ‘Back-end’, ‘Full-stack’ etc.) things lean more towards Windows, with split of 35/65.
We could also look to npm for some objective stats. The newest I could find is from this OS breakdown from 2017, showing a 40/60 split between macOS and Windows (in either the website or the CLI stats).
What’s that sensation… Oh, it’s the tingling of cognitive dissonance.
I look around and it’s Mac, Mac, Mac, as far as the eye can see. I mean, I’ve never once seen someone talk at a conference standing behind a Windows laptop, that would be absurd. But then I suppose people exist that can’t afford a Mac and can’t afford to fly to conferences. And there’s probably government employees and Fortune 500 dinosaurs stuck on Windows and not allowed outside. So I’d say, having now thought about it for a whole paragraph, those numbers aren’t so surprising.
(I’d love to get some OS stats from Mozilla on developer.mozilla.org visitors, since that would have to be a pretty good representation of the web developer community. Can someone hook me up?)
Imagine you’ve just wandered out of the rainforest (or are just recovering from a nasty bout of amnesia).
You are being welcomed into the world and introduced to all sorts of new technology. Among them, a laptop with macOS and another with Windows. You learn that these ‘operating systems’ share the concept of a ‘desktop’ with some thumb sized icons it, and another row of icons across the bottom of the screen. And for some reason you single click on the bottom ones to open them but double click the others for the same effect. They both have the concept of files in directories, a ‘window’ for each open application with a bunch of menus across the top of the screen. They both have ‘terminals’ so you can whisper commands into their ears. And they both access this hip new thing called the internet.
Now imagine you meet the developers who own each of these machines. They admit that yes, they spend almost all of their time in a code editor and on the internet and yes, those things are identical on both machines, yet still they try to convince you that these two grey lumps of metal and plastic are really very different things indeed and they would rather die than use the other’s laptop.
You’d think they were mad.
My point is, macOS and Windows are — in the grand scheme of things — really, really similar.
In this shootout, Windows earns its name and does it better. Being able to throw application windows around and snap them into halves or quarters of the screen is easy and really useful — particularly if you have several large monitors.
Doing the same on macOS involves dragging windows by their corners, from click zones about 4px square. Anyone making the leap from Windows to macOS will be amazed at how bad the experience is. But it takes all of 30 seconds to download the free and excellent tool called Spectacle and wipe out the difference, making it not at all a useful selection criteria.
Both of these operating systems have moderately annoying system update quirks. If you choose to update your Mac while you’re sitting at it, be prepared to look at your phone for 15–20 minutes. A smart person would learn pretty quickly not to do this, but not all of us can be smart. (The morning that Mojave came out, the office kitchen was filled with idiots who hit the update button and then had nothing to do for 40 minutes. Luckily I was first in line for the coffee machine.)
Despite this, I would suggest that macOS does it right. Meanwhile, Windows can be downright infuriating.
I mean, God dammit Microsoft, why is it 2019 and you still restart my computer without my permission? I should be the only person allowed to restart my computer because only I know how important my currently open stuff is. I do want your automatic updates, Microsoft, but please keep your grubby paws off my restart button.
On macOS, taking screenshots is built right in, with cmd+shift+4 always ready to let you grab a region of the screen. Change that 4 to a 5 and you can record a video too, if you’re rocking Mojave or later. This is excellent.
Windows is a bit rubbish in this department. Sure you can open the ‘snipping tool’ to capture static screenshots, and it’s about on par with macOS, but the free PicPick app is much better.
But if you want to capture video natively, you’re shit outta luck. Although there’s apparently a built-in game recording tool that — get this — requires both a Microsoft account and an XBox Live account. Even trying to find a free 3rd party app to capture video on Windows will make your hair go grey, so a clear win for macOS.
I know, it’s just screenshots, but I really love taking screenshots.
I’m pretty sure my cat just went ‘beep’ but that’s not something I need to share here.
Command line stuff
macOS relies more heavily on the command line, with Windows making more configuration options available as UI (the more low-level you go, the uglier the UI gets — I guess as a deterrent?).
Let’s say you want to configure hidden files to show in Finder/Explorer. This is a tick box in Windows, while for macOS it’s a command line, um, command. Same for environment variables, there’s UI for managing these in Windows, but for macOS you’ll be using Terminal and .bash_profile or .bashrc (no one really knows the difference between these two files).
If you’re a macOS user this is probably second nature and no big deal — like, why bother having a tick box for this when all you need to do is type defaults write com.apple.finder AppleShowAllFiles YES?
If you’re a Windows user making the switch, you’ll be relying on Google and copy/pasting commands from Stack Overflow answers. (And to be fair, macOS users will similarly be Googling to find out where the checkbox is.)
When it comes to the actual commands, if you’ve grown up on Microsoft PowerShell and switch to macOS, you’ll have to learn a bunch of new commands. If you’re a macOS user used to *nix commands, you’ll find the lack of them in Windows a teeny tiny hurdle, then you’ll install Git Bash and have them all at your fingertips. (And in May 2019 Microsoft announced that the “Linux kernel will be included as a component in Windows”, which is neat.)
Cross browser testing
If you’re building websites on macOS, you can test a much wider range of browsers than you can on Windows. You’ve got Safari and Chrome and Firefox, and with XCode you’ve got a good iOS simulator, and thanks to Microsoft’s modern.ie, you can install a VM with any version of Windows for free and do everything a Windows user can do. If you’re making mobile apps (Flutter or React Native or ye Olde-fashioned way), then you can also build for iOS as well as Android.
But as a Windows user, you’re relatively limited. You can’t test on Safari and different iOS devices, without owning the devices. You could use a service like BrowserStack, but they’re slow to use and slow to provide access to the latest devices. And no matter what you do, you’ll never be building iOS apps.
An easy and significant win for macOS.
Hey there, I’m writing a novel, it’s supposed to be funny. I’m a few chapters in, wanna read them?
End of ad break, on with the show…
Because of the brilliant efforts by the majority of software makers, switching between macOS and Windows is barely noticeable. Chrome, Office, WebStorm, VS Code, and pretty much anything else I use is available on both.
Despite the cross-availability of most major applications, Apple have done a good job of wrapping their users in a warm, unrelenting embrace. If you’ve grown used to Safari and Keynote and iTunes, or are at all entwined in the iEcosystem, then even if you wanted to move to Windows it might come with considerable disruption.
Microsoft is much easier to leave. There aren’t many built in Windows apps to fall in love with, and things like Skype and OneNote (underrated note taking tool) are both available on macOS.
And of course if you do want to move from one to the other, it will depend on how many little apps you have become reliant on over the years that don’t exist on the other operating system.
I use mostly web apps, and only use native apps that exist on both macOS and Windows, to the point that it’s easy for me to forget which OS I’m even using.
Except the clocks are in a different place. And Windows looks better.
This section does not go well for Windows users.
In the early days, Node.js was very much a Windows-second bit of software; you could tell that Node HQ was full of MacBooks. But this is a thing of the past and I have great confidence that Node won’t be releasing any software with silly little Windows-only mistakes. Others, though…
For a long time, npm appeared to treat Windows a second class citizen. I recall when the awesome npx was released. I installed it and it worked great, on my Mac. I thought I’ll eat my hat if this just works on Windows and of course it didn’t. Maybe they’re getting better nowadays, I haven’t seen any obviously not-tested-on-windows issues in a while.
But it’s not useful or fair to complain about these things. Facebook and npm and other package authors put enormous effort into making software that they give away for free. They have no obligation to make it work on any particular operating system.
The takeaway: if you pick Windows as your OS of choice, you’re going to have troubles with more than a few npm packages. But on the upside, you’ll have plenty of opportunities to make contributions to open source projects.
Ease of use
The basic operation of the two are so similar, and the average user spends so little time interacting with the OS (as opposed to applications), that it doesn’t make much sense to say one is ‘easier’. There are doubtless hundreds of examples in favour of one OS or the other, so the easier to use operating system would depend on what it is that the user is actually doing.
If was pressed to pick one, I would reluctantly suggest that Windows is maybe 1% easier to get around, but would refuse to support this claim with reasoning.
And that’s seriously all the differences I can think of that actually matter.
Which would I choose?
After almost four years of side-by-side use, any personal preference between the two operating systems has long faded away. I am yet to find a website that is impossible to create on either macOS or Windows. And I am just as productive on either one. And the very fact that they’re used in just about equal amounts tells us that they’re both fine.
But I’m dodging the question.
OK so if I had to choose one operating system over the other, it would be an easy decision: macOS.
I’m a contractor, and I couldn’t walk into a new job with a Windows laptop. I’m too sensitive to withstand the ridicule, and there’s a good chance I’ll wind up in a company with a codebase that doesn’t work on Windows, looking like an idiot sitting there with my 17" Razer Blade Pro.
However, if I was a full time employee with a company-supplied computer, and was buying something for my home, the decision would be equally easy: Windows.
If I’ve got a few thousand bucks to spend, I can pick parts off the shelf and build something vastly more powerful than anything I can get in the Apple store for the same money. And in two years’ time, when I want a new CPU or hard drive or video card, I’ll just buy that part, take the side off the case and do the switcheroo.
So really, it’s more a question of “do I want a big case with interchangeable parts or a laptop” and the question of operating system is a byproduct of that decision.
If I wanted something portable it would be a more difficult decision: MacBook or some high-end Windows lappy. My 2018 MacBook has been a bit of a nightmare, so I’m tempted to lean towards the best from Dell or HP or Lenovo. But maybe I just got a lemon and shouldn’t hold it against Apple.
Now I feel like a lemon apple pie.
I used to have a touch screen and I liked that, or maybe one of those laptops where the screen flips right over would be cool. And oh wouldn’t it be nice to have an HDMI and USB-A slot or two (what a bold idea: keeping ports in a laptop model while most devices still require those ports). None of those other laptops look as good as a Mac though. Even with three dongles hanging out the side and one of them on fire, a Mac is still prettier than all the rest.
So I guess yet again, it would come down to picking the hardware I want, and whatever OS happens to come with it will do just fine.
What an anti-climax!
My suggestion to you
If you’re considering making the switch or buying your first machine and — for some strange reason — you’re interested in my thoughts, I would say this:
- If you can’t afford a MacBook, don’t worry, Windows is every bit as good as macOS and you can select the level of hardware to suit your budget.
- If money isn’t a problem and you want to be ready to work with any web project, go with a Mac and avoid the headaches Windows is going to give you when you run into a mac-first project.
- If you’re heavily tied in to one OS, you’re probably better off sticking with it, unless you’re ready to learn a bunch of replacement applications.
- If it’s the future and Windows is no longer a second-class citizen in the web world, then pick whichever machine has the hardware you like, cos the operating systems are pretty much the same.
And one last suggestion, to those that write code that thousands or millions of other users will use: I highly recommend using both. You will become accustomed to the handful of gotchas that won’t work on all OSes. Little things like setting environment variables in cli commands, certain arrangements of quotes and slashes, and, ahem, not using apple scripts.
It’s not an act of altruism; when you have adjusted to using both, then writing software that works everywhere will take zero extra effort, and you’ll save a crap tonne of time spent reading through all those Windows-only bugs on GitHub. Also, you’ll be making the path to greatness just a little bit easier for kids in less fortunate situations who can’t drop $2,000 on a laptop. OK so maybe it’s a little bit about altruism — totally not a guilt trip though, thanks for all the free software.
Oh and one last piece of advice: be nice to each other folks. It’s just an operating system.
Oh shit I complexly forgot about Linux. And darn it, there’s no more room on the page.