The answer to this question is not an easy answer, and probably there is no truth about this since there are pros and cons for each of the answer, but that’s what the article is about.
The author of this article has been working on aerospace software, which means that if the software fails a plane may crash, and every time you write a piece of software, no matter how good your developer skills are, and how many people are going to review your code, there may always be bugs, so what to do?
I have never worked in the aerospace industry, so I don’t have the same experience, but personally I believe that if something goes wrong in your production code, and you don’t fail, it means that the following code will be executed in a state that should not be in, so even the worst things may happen. I prefer to have a controlled fail with an assert (or anything similar) instead of letting the code continue in an unpredictable behavior. Of course, you should know that any software may fail (from a controlled failure or an uncontrolled failure) and have a backup in place to prevent the whole system to fail because of a single bug. Also, once you have a controlled failure, you can log the failure and notify whoever is in charge of that part of the code to make sure it will not happen again.