However, I have learned over the years as a developer investigating update issues that the constraints placed upon the update process to ensure compatibility and resiliency are complex.
I have learned over the years that constraints and complexity are often abused to force one's way.
Not necessarily even consciously but if the collective train of thought in a company predominantly wants to prefer one outcome (i.e. market share, world domination) at the expense of another outcome (making users happy), then it tends to be that it's really easy to do things that result in the former and really complex and difficult to do things that result in the latter.
I have learned over the years that constraints and complexity are often abused to force one's way.
Not necessarily even consciously but if the collective train of thought in a company predominantly wants to prefer one outcome (i.e. market share, world domination) at the expense of another outcome (making users happy), then it tends to be that it's really easy to do things that result in the former and really complex and difficult to do things that result in the latter.