I would still use Windows, but Microsoft has shit it up so much that Linux is the best choice for me at this point.
Yeah it's a travesty really. I daily Win10 and I have Win11 on my laptop and they don't get in my way, at all. Thing is, when I start off fresh, I need to go through multiple hoops to trim down all the annoying and unnecessary bullshit Microsoft puts on top of what's still a solid NT base. Disable mouse acceleration, run WinUtil, run WinAero Tweaker, do some extra manual tweaking like disabling animations, setting Registry tweaks, installing software like Windhawk and so on. I had to do a bit of extra work on Win11 as well due to them fucking up the taskbar and adding the new shitty right click menu, after that I basically got fancier Win10.
I forgot how nice Windows used to be OOTB until I installed Win7 on my old PC recently for a test. And the only reason I still put up with this shit is because all of the software that I rely on is Windows based and unfucking 10/11 takes me less effort than trying to fully move to Linux.
Say what you want about Ballmer, but under his tenure we got both Windows XP and Windows 7. Windows 10 and 11 are all the result of Satya Nadella.
Funnily enough, learning the terminal on Linux actually helped me out a lot on Windows, as I was actually able to use a bit of PowerShell (which is lovely to use aside from the weird syntax) to make my life easier.
IMO PowerShell is great and Bash purists hate it because it's Microsoft. It's object oriented scripting is actually very neat once you get the hang of the basic aspects. Thing is, you don't want to use PS as a shell to send one-liners from memory, you want to use it as a scripting language first and foremost. That's when it's at it's best and it's Verb-Noun ceases to be an issue.
For example, a small excerpt of my profile.ps1:
Get-NetIPAddress -InterfaceIndex (Get-NetAdapter -Physical | % ifIndex) | ? AddressFamily -eq "IPv4" | % IPAddress
This is meant to pull the local IPv4 address of the network interface. Sure, Bash purists will scoff that it's oh so long therefore bad, but it's actually very fast and it will always pull the IPv4 address of your physical net adapter, where you'll most likely only have one of that'll have an IPv4 address, and no formatting change can break the RegEx that pulls it because there are no hacky RegEx pulls. PS pulls all the necessary data as an object on which you then operate and this practically never changes, you can reuse this code on other machines.
I also used PowerShell to rewrite my yt-dlp CLI menu so that I can add, edit and remove menus/positions from a JSON file instead of having to do hacky manual Batch edits. I don't have to touch the script to edit the menus, I just edit the separate JSON file and it just works, the script parses the entry names and commands from it, sends them to yt-dlp and I can quickyl download something with a few keystrokes. The underlying code is a bit of a mess as I left it half-finished during a rewrite but it works and it's really neat. Couldn't be able to do the same with Batch or Bash.
Good news is that with the release of PowerShell 7 it's now multi-platform, so you can write scripts in PowerShell on Linux as well. I like PowerShell. PowerShell's nice. Just because the code is long doesn't mean it's not performant. But I guess being able to crash your system with thirteen characters makes Bash superior since Linux users don't enjoy having working systems.