In general, engineers set out to write good code and most do so. But even with the best code, things inevitably break. Whether it’s due to a software bug, an unintended consequence that wasn’t considered, a hardware failure, a virtual hardware failure or something else isn’t that important. At the end of the data, everything fails for one reason or another. And if you’re running a web based application, that takes out your application. The perennial question at that point is who should be on the hook to fix things when that happens.