Recently, I spent a fair bit of time explaining assertions to an apprentice on my team. While he could grasp how they work, he found it a little difficult to understand the reasons for their use. Indeed, it is arguable that defensive coding in the form of guard conditions and exception handling makes assertions redundant. …