Most of the software failures that I've witnessed are the result of either
1) Poor quality - eg Lots of code, bad / undefined interactions between the components. Usually results in loss of data
2) Poor user experience - software performs complicated task well, users aren't able to adapt to using the capabilities
3) Misunderstanding of the problem solving opportunity - System solves the problem as designed, however rather than automating an old stupid process to take less time, the old stupid process could be re-engineered to bring added value (generate revenue, save lives, retain employees, etc) to the organization
Fixing the first requires someone that is technical, but not necessarily that technical.
Fixing the Last requires someone that understands the business. They probably aren't technical.
Fixing the Middle requires someone that understand user experience, often an engineer with some empathy, or a business person that is technical.
Good technology requires both technical and non technical contributions for success. That combination is rarer than you would think.