It is a strategic tradeoff. Apple has indeed pissed of lots of people over the years by breaking backwards compatibility.
But for those of us who have followed Apple for many years, we know there is a major upside to this. Short term pain is trade for a much healthier platform long time.
Microsoft Windows in particular has accumulated an insane amount of cruft over decades due to the insistence of "playing nice" with existing software. In fact Microsoft has done this to a fault.
It has been so crazy that when Microsoft has fixed bugs in their Windows OS, they have actually added code that will re-introduce those bugs for popular software that depends on those bugs to function.
Apple has never played that game. If you have not used Apple APIs correctly they are not going to babysit your software when they make an upgrade. Yes it pisses off people. But it also keeps the software streamlined.
People see this different. As a software developer myself I have always preferred the Apple approach but I know it is controversial. Companies don't want to upset customers, because customers are supposed to always be right. But always pleasing customers is kind of the same as aways saying yes to a child. It is convenient in the short term, but in the long term you have created a massive problem.
Microsoft e.g. had a really hard time getting Windows onto phones originally due to these priorities. Getting Windows onto ARM architecture has also not been a great experience for the same reason.
There is also a question of expectations. If a child is used to you never saying no, they cannot handle it when you do. Likewise customers and other vendors have gotten accustomed to how Apple run things. You know that is what you sign up for when you go with Apple.
Customers will not tolerate the same from Microsoft, because that is not their expectation. That is not what they signed up for.