The problem with very large programs such as Microsoft Windows is they are so large, no one person knows how all of it works and the number of people needed to develop it (when it is originally created) or to maintain it, becomes an enormous number.
Google reports to the question "how many lines of code in windows 10" as 50 million (but also points out it's a silly measurement to use) but it is the only thing we can use as a relative example of complexity.
How many people are needed for the "care and feeding of a beast like that?" Well, it depends on how many different function points there are, but if I was dividing up the labor for it, each person would be assigned a certain number of specific functions with some overlap in case a particular person quits, moves to something else, or dies. So, my guess is there are probably 4 or 5,000 people who work on Windows, most of whom have very little knowledge of the "gestalt" of the entire program. So unless these people are very well trained you're going to have integration problems as each piece has to fit in with all the others.
This means at least 3 or 4 levels of management as no manager could properly handle that many people reporting to him or her. So say you have about 1,000 function groups, each group handles one function (printing, file support, dialog box design, help wizards, etc.) averaging 5 people per group), and maybe each manager handles 5 groups, or about 25 people. So that requires 200 managers. Who then require maybe 10 group managers and then a project manager, Windows.
This means a group of over 5,200 people to work on this thing. That's the size of a small town. And that simply allows the provisioning and management of the people involved, it does not guarantee you get quality work or that some managers aren't incompetents or bastards. (If you've ever worked for a boss that was a bastard you know it.) People are all different, some are mediocre at their jobs, some are good, and some are stars. Even Microsoft isn't going to get stars for every role, some jobs have to get done and somebody has to do them.
So the quality of different parts of the system will vary, and that can include the "fit and finish" of some components, their operation, and their interaction with other parts. It's the "luck of the draw" as to what you get. "You shouldn't criticize the quality of the dance that a dancing bear does, what should amaze you is that it dances at all."
These considerations apply just as much to Linux or BSD as to Windows with the exception that as Open Source, other people besides the developers have seen the source code and can point out bugs. But on any complicated project it's going to be hit-or-miss on product quality. "Sometimes you win, sometimes you loss, all you can do, is, ya pays your money and ya takes your chances."
"The lessons of history teach us, if they teach us anything, that no one learns the lessons that history teaches us."