I'm such a butterfinger I always use an USB isolator when programming/developing my own microcontroller stuff.
I know the USB bus is supposed to handle e.g. indefinite-duration VUSB-GND shorts, but with my luck, my particular hardware would just release the magic smoke...
In Linux, there are some default udev rules (that cause the devices to be used or at least probed by different services; a particularly annoying one being ModemManager) that can cause a lot of grief for unwary developers, but once you get those tamed, things become much easier, and you can even use those to your advantage. (I also object to just disabling ModemManager, because I have a 4G/LTE FrankenModem using Huawei ME909s-120 that works very well in Linux.. under ModemManager.)
As an example, I have a script I use when dealing with Pro Micro clones (the ones that look like SparkFun's Pro Micro, but use Arduino Leonardo bootloader, and have an ATmega32u4 microcontroller with native 12 Mbit/s USB on it). You see, if you do something that does not enable USB Serial, you need to reset/power cycle the MCU to reprogram it, but at that point the device can get re-enumerated (appear as a different port, that is). Mine outputs (showing it in the status window in Arduino) that it's okay to reset the board now, and then waits until the device vanishes, and reappears, calling avrdude (which does the firmware upload) with the new port details. Works like a charm.
No, I'm not saying Linux is any better. I'm just mentioning a nasty hurdle many have stumbled on Linux, and while annoying, taking a closer look at the details can give you the knowledge to build tools that make life easier, no matter what your OS. Me, I'm happy to release the magic smoke of a $5 microcontroller, as long as my computer is protected from my fumblery; the USB isolator is golden for that (and that too is a $10 clone off eBay).