Why is computer software so bad?
Well, not exactly bad. Lots of software does great stuff nearly all the time. But nearly all software does hideous things some of the time and it’s very frustrating. My motivation to use a particular piece of software is greatly reduced if I think there is even a small chance that my time will be spent trying to overcome a defect rather than doing the task I actually want to do.
It’s stopping computers from being fun. Many of the problems come from integration of lots of components that get selected, essentially, because they were the cheapest option. The result works most of the time but if anything goes wrong at any stage in the huge complicated combination of different components, the ability of the collective to handle it sensibly is pathetic. It’s usually a case of virtual vomiting and then lying, helpless and waiting for the operating system to clean up.
Is there a way to make software better? Yes, certainly. There is a huge body of evidence to show that even quite simple measures can massively improve software quality. But the problem is how to begin: because modern software reuses mountains of existing code, just improving one component will increase the costs there without delivering a particularly noticeable benefit until more components are re-engineered.
So the requirement is simple: we need ways to develop software components that increase quality whilst simultaneously reducing costs. Better get started…