I code assertions, but since they're turned off by default, they don't get exercised nearly enough, especially in awkward locations like webapps.
Google, BTW is building up a set of contractual programming annotations that are like assertions on steroids. It's not ready for prime time just yet, but it's good enough to play around with.
It's called "Contracts for Java" and located at
http://code.google.com/p/cofoja/
The secret of how to be miserable is to constantly expect things are going to happen the way that they are "supposed" to happen.
You can have faith, which carries the understanding that you may be disappointed. Then there's being a willfully-blind idiot, which virtually guarantees it.