Why is so much software so bad? And why is so much of it made by really excellent programmers? It's a puzzle to users, who are baffled by the way their software behaves. It's a cause of grief to customer support teams, who have to deal with users' pain. It's exhausting for product managers, who expend vast amounts of energy interacting with engineering teams.
It's not just a matter of individual frustration though. Bad software emits a kind of pollution that damages working environments, and is expensive to clean up after. It's a drag on the progress of companies that use it, and harms the reputation and success of the companies that make it.
So, why do software engineering teams make bad software, when of course they sincerely believe that they are making the best possible software, employing the best possible programmers, following the best processes?
I argue that there is a reason for it: programmers are condemned, by the nature of programming itself, to make bad software, that we make bad software because programming is pleasurable.
I'll discuss the consequences of this, and consider what we can do about it. And I will argue that the only way out of this fate is to embrace pain.