A programmer who uses the BANG! is saying, “At this point in the code, this value will never be nil, or will always downcast to the expected type.” Why is this important? Several reasons. For one, any time you have to deal with optionals, you have to deal with the possibility that the value will be nil. This creates an alternate code path and you have to decide what to do with it. If you’re not going to crash, what are you going to do? Throw an exception? Who will handle it? Log the error to the console? Who will ever see it? Silently fail and do nothing? What if the caller always expects correct behavior? Then you’ve just swept a bug under the rug.

Force-Unwrapping in Swift is NOT a Bad Thing - Wolf McNally (via iOS Dev Weekly).