In my experience, Windows "just works", say, 95% of the time. However, when you hit a point where it does not "just work", there's often basically no way at all to "make it work". At least not legally.
In contrast, GNU/Linux probably "just works" only, say, 90% of the time (and this percentage used to be much lower in the past, of course). But when it doesn't work, at least there's always something you can do about it. In the very worst case, you'll have to fix some code and recompile some stuff, but at least there's always something you can do.
Of course the median user gets stuck anyway as soon as it doesn't "just work", because they don't have the skills, time or persistence to try to get things to work if they don't "just work".
The other thing is customization. Windows does things in one particular way, and you're supposed to adapt yourself to that. I'm not just talking about user interfaces, I mean basically all software design decisions. In GNU/Linux, whenever there are different opinions on how to do something, the user gets to choose -- the choice is not always easy: it could be a nice user-friendly config dialog, or a config file, or options in a configure script (requiring recompilation), or the option to install alternative software, or the option to fork a project. But there's always a choice.
For someone who is used to Windows, the GNU/Linux way of doing things is difficult, but if you persist, it's very satisfying in the end.
For someone who is used to GNU/Linux, the Windows way of doing things is just frustrating. Extremely frustrating. So frustrating that we tend to become nearly religious about it.
In contrast, GNU/Linux probably "just works" only, say, 90% of the time (and this percentage used to be much lower in the past, of course). But when it doesn't work, at least there's always something you can do about it. In the very worst case, you'll have to fix some code and recompile some stuff, but at least there's always something you can do.
Of course the median user gets stuck anyway as soon as it doesn't "just work", because they don't have the skills, time or persistence to try to get things to work if they don't "just work".
The other thing is customization. Windows does things in one particular way, and you're supposed to adapt yourself to that. I'm not just talking about user interfaces, I mean basically all software design decisions. In GNU/Linux, whenever there are different opinions on how to do something, the user gets to choose -- the choice is not always easy: it could be a nice user-friendly config dialog, or a config file, or options in a configure script (requiring recompilation), or the option to install alternative software, or the option to fork a project. But there's always a choice.
For someone who is used to Windows, the GNU/Linux way of doing things is difficult, but if you persist, it's very satisfying in the end.
For someone who is used to GNU/Linux, the Windows way of doing things is just frustrating. Extremely frustrating. So frustrating that we tend to become nearly religious about it.