Worse Than Failure
I'm a consistent reader of the site Worse Than Failure for a couple reasons. First, it's a pretty good laugh for some of the truly heinous chunks of code. Second, it can be a growth experience when I recognize a much younger, more inexperienced version of myself in some of the code or circumstances. Reflection and introspection are a big part of maturity in an engineer.
To my pleasure, they're sponsoring a programming contest. The site for it is here. I'm both pleased and embarrassed to say that I entered. I will not go into the details of my entry right now - I'm saving that for later, after I have failed to win (trust me, my entry is not truly heinous), but I will talk about the approach that I took and it is all about reflection and introspection.
When I design code, I have a natural tendency to want to make the design maximally flexible so that the actual desired behavior is trivial to implement within the design. This usually makes changes in the desired behavior similarly trivial and such that they can be handed off to someone else or deferred to the client. It's a selfish motivation, I know, but it also lends itself to future growth. So what I did for this contest was to take this tendency and amplified it out of proportion. I designed a solution for the contest that is far more flexible and bloated than is ever necessary for the application, and consequently runs like molasses in January. I also took my desire to write the cool parts of the code and blew that out of proportion, so I ended up with a lot of cool code, but intentionally left out a lot of important, boring nuts and bolts because I could figure out ways to hack around them with the cool code.
I firmly believe that letting yourself run free is a good way to learn how to laugh at yourself as well as learning how to reign in good intentions gone bad.