“Software design as taught today is terribly incomplete. It talks only about what systems should do. It doesn’t address the converse—things systems should not do. They should not crash, hang, lose data, violate privacy, lose money, destroy your company, or kill your customers.”
―
Michael T. Nygard,
Release It!: Design and Deploy Production-Ready Software