I code (after a fashion), and I've got linux on an old laptop for my kid, as it runs faster than windows, but installing software is usually horrendous. It's the command line argument again. Here's the ideal: Go to a website, click on the software you want, it downloads and then you run it, and it installs. How is this so hard to achieve? In many ways *nix is better than windows, but this puts even me off a bit, not because it's technically scary but because often installing something comes with a list of 10 command line instructions, and usually they don't work somewhere along the chain. Yes, I KNOW it's probably my fault because I don't understand the command completely, or the system I'm installing to, but that's the point. Users need to click on it and install. I know there have been some advances in this area but it's still not right.
When every bit of software comes like this, then you're in. Also, every bit of software needs a GUI for settings. No messing with nano or vim to go through a config file and whatnot. I know, that's easy, but just open the software and have settings in there.
Linux has the same problem that astrophysics has. Only 0.0001% of people are astrophysicists? Then the subject SUCKS. This is not true, it's the level of entry as well as advertising.
Now, there's an easy fix to that one. Advertise, and advertise with ONE idea. Linux has an office suite, graphics suite, 3D modelling suite, etc etc that are all....... free! And, the operating system is also free! Where is the glitzy TV ad that shows this? How much are people paying on office 365 subs? No idea. But giving an alternative for free and showing how slick it is with a desktop the way you want it is easily done. Google have done this a little with chromebook. I believe that when this idea is bootstrapped in children then windows dominance will be adjusted downwards.