Engineering is ultimately all about managing tradeoffs, so the more important question is: How often does reliably picking failure modes and applying appropriate safety factors actually matter in software, especially when most designs are little more than simple line-of-business CRUD with a (if you are lucky) slick UI?