FWIW, where I found assertions particularly useful in the past was in 'gate-keeping' Threads from entering UI/Computation code. Our App, at the time, did a fair amount of processing so we ran a Computation thread apart from the UI thread - an arrangement which (inevitably) was often overlooked by newer developers until we 'asserted' the correct thread all over the place - cleaned up the behaviour in no time, and kept it clean!