Also worth noting that a lot of the problems stem from capitalist mode of software production. For the most part, software isn’t being built for quality, but to make a profit. The goal is to produce software that’s just good enough so that people are still willing to use it as cheaply as possible.
Why make something better than it needs to be? I like overengineering just as much as the next girl, but in software you throw away your stack every few years anyway. It’s rare you can write any software that lasts a decade without maintenance, often the “bad software” is only bad because nobody maintains it. The initial/release state of the software is irrelevant, the problem arises when nobody is around to fix the issues. Which, in turn, is of course a confirmation of your initial argument:
a lot of the problems stem from capitalist mode of software production
How can one fix this? What can singular people do to stop others from needlessly introducing complexity into software which is bad to maintain in the first place?