5 Stages of Programming Incompetence
coderoom.wordpress.com
coderoom.wordpress.com
Even spent a couple hours tracing through a zillion code paths to reverse-engineer the implicit contract for a particular method? Do any clients explicitly check for the FooException which bubbles up the stack when Method A accepts null for an Integer value (fun with Java) and passes that null down into Method B which in turn, ....
I'll take overzealous assertion vs. the alternative of under-definition any day.
I agree with you on personal projects, as well. Do whatever lets you meet your goal, whether that be learning how to hardcore TDD or getting a horribly-written, hacky project out to your friends.
My first BASIC games were hilarious with their global variables. The program was a giant mess of spaghetti code. If I wanted to add a new feature, I would make up wacky variable names to be sure I wasn't using them elsewhere. stupidThing = 1, hairygoat = 2, etc. (I don't think the BASIC editor I used had find&replace, or if it did, I didnt know how to use it)
Terrible code, but man was I having fun.