macOS vs Windows: a web developer’s perspective

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?)

OS features

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.

Window management

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.

Updating

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.

Screenshots

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.

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 the dumb 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.

Intermission

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…

Software

Applications

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.

Node/npm/web stuff

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.

Facebook too would appear to not own a single Windows machine among the lot of ‘em. When React Native for Android was released I thought, I’ll eat my hat if this just works on Windows and of course it didn’t. Hilariously, they were using an applescript file to launch a JavaScript file and so the thing couldn’t even start. And it also had the little problem of not being able to require files from a directory starting with u. And of course Flow didn’t work on Windows for years.

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.

read original article here