Programmers rarely think like users or in the case of business or specialist software, those who have domain knowledge; and vice versa. Skill barriers to contribution remain high and efforts to scale them like ‘low-code’ tools seem forever in their infancy. You rarely get a rounded combination of required developer-designer-user qualities in one individual or small team.
Nor is there, in my opinion, widely distributed recognition of this within the industry. There still exists a lack of formalized design methodology enabling to processes to flow through iteratively from ideation, to prototyping, to production. Costs and time taken snowball as a result and project failure rates remain high compared to other engineering disciplines.
I think the high profit payoffs and normative structures due to distribution costs being marginal contribute to the stickiness of this comfy buy rickety state of affairs.