I'm a web developer, so there is obviously a lot of motivation for me to move to Linux - being the platform my code gets hosted on. The environment differences, and the generally poor Windows support for supposedly "cross-platform" languages, and so on.
I've started using Ubuntu on Windows, and it's still a somewhat prickly experience. Certainly better than waiting for a dependable Windows build of anything. And at least I get a stable, dependable UI for everything but programming languages 🤨
I'm the type of person who reluctantly picks a Linux every year or so, and have for more than a decade. It typically takes about a week of agony to make me go back to Windows.
This is just to provide some context for my experience.
What are the main issues?
The first is stability. Even the experienced Linux people I work with are constantly showing up to a presentation with a laptop that crashes just because you unplugged your monitor and went to a different monitor in the next room. Even a smaller hardware change seems to be enough to make it break down.
More systemic changes like taking out your harddrive and putting it in a new computer is almost guaranteed to either brick your system completely or at least leave you with lots of manual updates and/or things not working.
Probably the driver model is broken? Or perhaps the drivers themselves are neglected by the vendors and/or contributed by third parties? I don't know.
I never have problems like these on Windows. Drivers and hardware needs to just plug-and-play, with no intervention on my part. Having to fight the OS to achieve stability is completely out of the question for me.
For reference, I have seen Windows 10 crash precisely twice since it came out.
In the same time period, I must have seen my coworkers Linux machines crash (or just wig out) often several times daily.
The second big issue for me is software distributions.
On Windows, I download one file, double-click, and walk through an installation wizard.
On Linux, even with some of these vendor-supplied "app stores" attempting to make things more accessible, installation is usually a complete mystery.
The typical experience is something like a terminal window with thousands of lines of weird messages flying across the screen - and then, at the end of that, typically you're left completely in the dark, probably with some assumption that you know precisely what you've just installed and how to invoke it?
And for things like languages, these "app stores" aren't usually even an option, because everything they have is outdated, and, if you're installing a programming language, typically you need the latest version. The it's off to Stack Overflow to find obscure commands to manually add (often "unofficial", which feels really spooky) "repositories" to yet another mysterious tool just to be allowed to download and install the thing.
Who wants to know any of this stuff? It's the Dark Arts. I want to be a programmer and not a systems administrator.
So those are the two biggest problems from my personal point of view.
My experience with installing programming languages is the same on OSX and Linux - using version managers (pyenv, rvm, nvm). I don't recommend messing around with system-level dependencies. Its so bad that debian patches pip to prevent people from upgrading certain dependencies that are global.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.