I switched to Windows
Tags: productivity, discuss, webdev
Published: 2023-02-24 16:22:46

## Intro

I started out my computer life, as many do, on Windows, but I switched over to Mac in 2009 and never looked back. A recent project required me to use a Windows machine for development so, as someone who would probably read about this kind of thing, I thought I'd write about this kind of thing.

## A bit of background

I used Windows for everything 'back in the day' but I couldn't get it to work for me for music and video production. I switched to Mac and it solved all the problems that I had (and then some). I then learned to code on a Mac and have used Macs exclusively ever since. I hadn't had any dealings with the Windows world for 14 years, even though it felt like 4, so I was looking forward to seeing what was on the other side again especially considering a lot of the tooling I use (VSCode, TypeScript, Github etc.) was made (or bought) by Microsoft and I had heard great things about WSL and that things were 'not like they used to be'. As with everything in life, I approached this change with optimism and enthusiasm (I can hear all those who know me laughing, but I did have an open mind.... honest!).

## Hardware

Let's start with the hardware. I switched to a 15" Dell Precision laptop, some £2,300 worth, with a beefy i7, 32gb RAM, 512GB SSD and an nVidia GPU with 4GB VRAM. I will be comparing this with a similarly priced 16" M1 Pro MacBook Pro with 16GB RAM, 1TB SSD, and a 13" M1 MacBook Air, at about half the price, with 16GB RAM and a 512GB SSD.

### A quick few points on hardware

- The weight of the Dell is really nice and sits between the MBA and MBP. The compromise is it feels a bit plasticy, but still very sturdy.
- The Dell's screen has a matte finish to it which helps with glare, but isn't very sharp especially when compared to the MacBooks so coding on it can cause a bit of eye strain.
- The Dell's webcam is rubbish but the little cover is nice. The MBP & MBA webcams are miles better.
- The Dell has a number pad which is cool for those who want it. I do not. Because of this, the trackpad and keyboard are off centre which makes typing feel weird. The keyboard is nice though.
- The ports on the Dell are great - HDMI, USB-A, USB-C, Ethernet etc. The MBP is nearly as good but with the absence of USB-A and ethernet. The MBP is better in as much as you can charge it from any USB-C port. The MBA falls miles short and I should also note that previous generations of MBPs fall miles short too!
- The Dell's charger is big, but surprisingly well thought out. I just wish the plug had a charging indicator instead of always being on when connected to mains even when unplugged from the laptop - this caught me out a few times when I thought the laptop was on charge when it wasn't.
- The Dell's trackpad is terrible. Not unusable, but very fiddly and awkward. I always connected a mouse to avoid tantrums.
- The Dell's speakers would have been better left out. They're that offensive, especially when compared to the speakers in either MacBook.
- The Dell's battery life is acceptable but about 5 times worse than either MacBook (and that's being generous under heavy load).
- You can't single handedly lift the lid of the Dell laptop without the rest of the laptop coming with it. A small annoying detail.
- The Dell gets hot - a problem all Intel/x86 machines suffer with, including (especially) previous generations of MacBooks. This isn't really a complaint, just a reminder of how big a leap Apple Silicon is in this department.

Aesthetics are completely subjective so I won't belabour this point. Personally, I think the Dell looks like a sturdy, no nonsense, professional machine, but I'd take either MacBook over it. To my eyes, there are plenty of PC Laptops on the market that easily rival the MacBooks aesthetically if that's what you're looking for.

## Dev environment

I'm currently a full stack TypeScript and React developer. I use Docker containers with local DBs, VSCode running a load of extensions, a terminal used predominantly for Git and Chrome running the standard 2 million tabs with a bunch of dev tool add-ons.

Given that I was coming from a Mac / Unix background and that I had heard so many good things about WSL, I decided to set up my Windows machine running WSL with Ubuntu LTS, with VSCode and Docker in WSL mode too. This worked a treat and although I was still stumbling over some keyboard shortcuts (Cmd = Ctrl and it's over to the left), it was simple enough to set up and I was more than happy working on my new Windows machine.

## Favourite Windows features

The built-in clipboard history that can be accessed with `Win + V` is insanely useful. The Mac needs this feature. The window snapping feature is also great, but you can use Rectangle or Magnet to build this capability into the Mac. I also think that the minimise, maximise and close buttons are easier and clearer to use than Apple's which now includes `alt + click` functionality which I personally find annoying.

## Windows gripes

In my opinion, the Windows UI is garbage. I can't believe I'm still looking at windows from XP and earlier and the whole Settings / Control Panel situation is a mess. I think the whole task tray situation in the bottom right looks a state and it's fairly unclear what each thing does. Switching desktops whilst in Task View is very janky, separate displays can't have separate desktops and you can't re-order your desktops. It still seems like certain areas are designed for touch and others designed for a CRT screen. Files stored on the desktop with long filenames can stop you clicking on files that the filename obstructs, the lack of a proper preview feature (like the ability to hit the space bar on any file on MacOS) is very annoying when trying to find a file and, to top it all off, everything makes a sound. I must've heard that 3-note chime 100,000 times a day. Are you sure you want to delete this email? Da-da-ding! Do you want to empty the recycle bin? Da-da-ding! You need admin rights to modify this file. Da-da-ding! Are you sure you want to close Chrome? Da-da-ding! Unknown keyboard shortcut. Da-da-ding! You get the idea.

I also had endless issues with every bluetooth peripheral including an intermittently stuttering and delayed mouse and keyboard that could only be solved by reinstalling the bluetooth driver (except once where turning the computer off for 10 minutes seemed to fix it). Bluetooth headphones of multiple makes all struggled to stay connected throughout the day so I had to join meetings at least 5 minutes early to ensure they'd connect properly, and even then, the sound quality on calls was abysmal. I also experienced wifi drop outs frequently. Oh, and I couldn't keep other wifi devices near the laptop, or the wifi dropped out completely. I tested this. Move a MacBook closer to the laptop - no internet - move a MacBook away from the laptop - internet!

Lastly, just like my old PC from 14 years ago, a lot of the system audio (like shut down jingle etc.) was crackly.

## Development problems

After a couple of hours running my dev environment each day, my whole machine would start getting 'sticky'. Code would start taking much longer to compile, apps would start taking longer to load and UI animations would start glitching. I tried stopping my task runners, rebooting WSL and stopping the Docker container, I tried closing Chrome and Slack and Outlook but it would only get marginally better for a short amount of time before it would start up again. The only solution was to reboot, which I had to do up to 5 times a day. I don't think I need to stress what an interruption to work this can be. Equally, if I ever wanted to join a video call, I couldn't if I had my dev environment running as the machine seemingly couldn't cope, and I could forget about sharing my screen. The second I shared my screen, the whole thing ground to a halt -- not very conducive to a collaborative remote engineering team! I also found that the Windows version of various cross-platform apps that I relied upon day in day out were more buggy, like MongoDB Compass and Slack.

After a few months of persevering, I decided to rebuild my dev environment without WSL as it was clear it was using a large amount of RAM and CPU. I rebuilt my dev environment and used GitBash as my terminal and I have to say, it solved a lot of my problems. GitBash, for the most part, was nice and familiar, albeit without the joys of oh-my-zsh but this wasn't a big deal. The system ran far more smoothly and consistently and I no longer had to reboot 5 times a day, but it still felt sluggish when it came to traversing the codebase, linting and autocomplete. It at least made it more possible to join calls while my environment was running, but sharing my screen was still reaching the limits of this £2,300 computer and it didn't solve my bluetooth or wifi issues.

I have to compare this, I'm afraid, to a MacBook Air costing half as much...

The project that I worked on with this Dell laptop was a React project. It's quite big, but it's still just React. The project I worked on with my MBA was using React Native running iOS and Android emulators simultaneously. I joined calls, shared my screen, connected headphones and to the internet with literally no problems. I had to reboot from time to time when an emulator got out of hand, but this was rare. The MBA also didn't even have a fan (let alone a loud one) and although it got warm, was still cooler than the Dell laptop with the fans screaming at me - something I realised is actually rather annoying to listen to all day!

## I switched back to Mac

Needless to say, I went back. I'm sorry to say that the difference, especially with Apple Silicon, is stark. Running the same project on a 14" M1 Pro MBP with 32GB RAM that costs around the same as the Dell is silent, glitch free and extremely responsive, and the bugs that I was putting up with across my everyday applications have disappeared. Virtual desktops are far easier to deal with and more intuitive and is a feature I heavily rely upon. I also found that after switching back to Mac, I realised I was putting up with numerous scaling issues on my external 4k screen. These issues were fairly app-specific so I can't fully blame Microsoft here, but from a user perspective, it does make the overall experience inferior.

I really did give the switch a go with an open mind and I persevered for 9 months, but the fact remains: Windows seems to have the same problems it had for me 14 years ago. I was forever rebooting, rebuilding and tweaking instead of, well... working! In summary, whenever I've used Windows, I've used Windows. Whenever I've used a Mac, I've used my apps.

I'd be interested to hear from any of you who are running Windows to see if you've had similar experiences. Whether you think the problems I had were hardware specific, or whether you've experienced the same or similar problems. I've spoken to other developers and, unfortunately, they've all echoed very similar issues - some of them were just used to it and hadn't really thought about it. It's amazing what you get used to and tolerate over time.

## A final note

One thing that genuinely baffles me (and something that I can't believe isn't talked about more) is that if you have your Windows laptop unplugged, you don't get access to the laptop's full performance.

You spend thousands of pounds for a high-performance, portable device, whose performance you can't make use of unless you're ported.

You should get a refund.