I've had three generations of the XPS 13. The first I had had a few issues, but fixable. (Even though I agree, this shouldn't even have occurred) The second one was flawless. The last one was worse than the first and it's my last.
I've set my sights on Lenovo now. X1 Carbon is supposed to be really good for Linux and you can buy it with Ubuntu or no OS installed.
I don't hold the average developer in very high regard. There are tons of developers who are much better than me and I readily read their books, follow their tweets, blog posts and online talks to learn from them. I hold them in high regard, but these people are not the average developer.
If you would pick any smaller company with a dev team, a freelancer or an agency, your chances of finding a developer who understands and upholds quality code is vastly reduced.
Not to mention a lot of beginners will just push their practice projects to GitHub and never look at it again. I'm also guilty of this, but I never realized Microsoft was training AI with this code. If Copilot is learning from these projects then I'd say the code it regurgitates is not average, but even below average.
To me it means I think of a workflow which would make things smoother for me, I make it so I can do that. But it takes tinkering.
I see something nice someone is using or has done. Then I can copy their config, but that's their personal config and I want something slightly different. That takes tinkering.
OSX is basically: Use it as designed. And it's designed for what most people want, but if you want to push the boundaries of that you are going to have a frustrating experience.
It's rough around the edges, but have you seen Windows? It's almost hilarious how any component can have UI elements from any of its iterations of the past two decades.
And ask someone who isn't familiar with it to find a setting. It's a hot mess. Just a hot mess a majority of people are used to.
Another common problem with unit testing is that the function being tested should actually be four different functions and the setup is so complex, it becomes more of an integration test on the wrong level.
Then the developer will say "unit testing is a pain in the ass, I rather do integration tests". But the problem is that the code being tested is calling out its problems through these tests.