Software Disenchantment (2018)
I get the frustration, but I think this is just the cost of the incredible volume of software that we have.   
 As software engineers we pride ourselves on our systemic thinking, so it's tempting to look at the situation and say "we can and should do better". But it's an illusion to think of software ecosystems as being designed.  The reality is individuals, teams and even huge companies are constrained by ecosystems which are too big to really control and optimize in a systemic fashion.Useful software today beats perfect software tomorrow.  That's why software is not well-optimized: because less optimized software beat it to market at multiple layers of the stack.  That's why web apps slowly killed native apps: because shipping binaries to multiple platforms is way harder than loading a URL in a browser (or thin wrapper thereof).One thing I've learned the hard way in life is to focus on what one can control.  We may not like the tradeoffs others have made and the systemic outcomes they led to, but we can't control them.  A better tactic is to pick one very specific area you think you can make a dent and focus on that.