Hardware wise: Apple Silicon is very nice, but my enthusiasm is greatly tempered by a horrible experience with docks. So-called USB 4 docks and even plain USB-C docks work far less reliably on my MacBook Pro M1 Max than they do on PC laptops I have laying around. I can't even get a single monitor to 4k 60hz... Unless I plug any of my adapters into a non-Apple laptop. Weirdly, most of these docks don't seem to work at ALL on the M1 Mac Mini, or only sometimes. I'm genuinely puzzled.
Software wise: Window management on macOS is extremely annoying. I'd try to run one of those i3 style tools, but... Full setup requires disabling SIP. Color me and my company's compliance team very unimpressed. I'm also on two kernel panics, apparently in some Bluetooth related module. Dude, I don't even USE Bluetooth on my work MacBook. I've sent reports to Apple... But I assume they're directed to the circular file. That's as much transparency as I get anyways. Major updates break XCode every time. Bazel runs slower than dirt. Sometimes I get stuck "verifying" binaries I just built. Why do we need to phone home to Apple for ad-hoc signed binaries we just built? Feels more like a Microsoft move.
OTOH, I do get why people don't like Windows and Linux. Linux is unfriendly and requires a large time investment to really take advantage of. It's buggy, and hardware support is poor unless you carefully select it (of course, You Can.)
But the real kicker is this: with Linux, I have the power to fix things. With Windows and macOS, it feels like I'm only renting my computer. Will this problem ever be fixed? "Maybe some day. Probably not." I hate that. There's no transparency and there's nothing I can do about it.
Average users definitely shouldn't go and mess with patching their kernels. But me? I'm happy to. My Surface Laptop 4 is running an unmerged PR to the Surface Linux project kernel right now. And since I'm doing it declaratively with NixOS, I can always boot to before I applied that patch. It's only one line of Nix code, that automatically fetches the PR diff from GitHub and applies it.
I upstream rarely, but the fact that I can triage, report, follow and help along with bugs that matter to me is a huge boost in confidence. If you've used a graphics tablet in Wine, you may have benefited from a couple of my patches.
I understand that it's not for everyone, and I wouldn't recommend it to anyone who doesn't really feel this kind of sales pitch. But: if you already have to invest a large amount of time into programming, I think suffering your way into Linux proficiency is not a bad time investment at all. Even if there's a lot of potential pain, there's even more potential learning and growth.
As far as I'm concerned, I'll be computing on Linux until it's pryed from my cold dead hands, remote attestation and other dystopian bullshit be damned.