First off, allow me to deviate a bit from what I usually post about. You see, I'm a very religious person, and my beliefs are very personal. I don't think they should be enforced on anyone, and that's at the very nature. However, when an intellectual tries to understand my religious side, I think the reason it is difficult is because it's like driving a screw with a pair of pliers. It's the wrong tool for the job. At some point, it may work, but there are better ways for it to work, and much easier. The reason for this statement is because I think far too often, people are using the wrong tool for a job in development. Same problem. It just doesn't work.
For instance, how many operating systems have you seen written entirely in SmallTalk. Alright, Google for it, and see what comes up. Anything worth trying out? Really? It's because SmallTalk isn't a language for operating systems. How 'bout Perl? Lisp? No, for various reasons. (1), computer hardware nowadays is almost designed with the C language in mind; (2), most of the implementations of these interpreters/compilers is written in C. (3), it's just not a language that would be easy to do it in (although I'm not saying C is an easy language...)
On the flipside, when you need a tool to rip your DVDs into Xvid format, you don't instantly say "Oh wow, how 'bout I write that in C++!" (at least, I hope you don't...) My knee jerk reaction is to start with Python, and then work my way around. Sometimes, a simple shell script is all I need, like in the case of DVD-to-Xvid, I just wrap the mencoder binary, make the script executable, and throw it into $HOME/bin
Gentleman Only : Ladies Forbidden
Now, programmer golf is also something I find interesting, but never participate in. This is for many reasons. The first, and foremost, is because when you're spanning languages, things are COMPLETELY different. Some languages have native support for some applications, some languages don't. Another reason is just because I'm not that good of a developer, and I don't think in the steroidal design pattern thoughts that other developers have. This doesn't necessarily mean I don't find it interesting to see others compete. I liked reading about the Python Sudoku solver golf that was being played. It helped me to think it terms of simplicity. At that same moment though, I realized that, well, for educational purposes, yes, it's a great thing. But when you're CONSTANTLY refactoring working production code for the sake of a few lines, you're wasting more time than the program will take to render those few lines.
I work with some great developers, and some of them have become valuable mentors for me. One thing they have taught me that I will take throughout my life is that everyone poops, and everyone's poop stinks a little. Some of the best developers throw together some of the worst code, but it works, and it works well. I'm not, by any means, advocating making spaghetti, but sometimes, you should find yourself looking at your own code and just saying "Holy crap, this is really bad..." and then fixing the bug you were in to fix, and leaving it alone.
True story : When I first got into my Object Oriented Programming classes, I learned to write Java. My professors throughout OOP I and OOP II stressed the use of accessors on variables. I understood this principle, and immediately started using it. Then I got the current job that I have, and was learning PHP (I have a great teacher). One of the first projects I actually did by myself was a class for CAPTCHA (which I thought, in my developer youth, was a good idea...) If I look at that code now, I shudder. It's not because the code is necessarily messy, but because there were a lot of variables in the CAPTCHA that I put it to allow us to change it easily. However, for each of those variables, there was an accessor. The level of abstraction just makes the code hard to follow. I have made an effort since to deprecate the CAPTCHA in general, looking for other options.
Apple == Orange
And for my last trick, my I recall a thread I see on the python mailing list in regular intervals. Once a month or so, someone will start a thread that says something to the effect of "Which is better? Python, or x programming language?" Usually, Lisp is the language to be compared, but I've also seen Perl in there. So I finally replied there with something to the effect of "Which is better? Apples or Oranges?" The answer may be preferential, or there may be a concern for a certain application (i.e. I need vitamin C, so an orange is better). Python seems to do a lot of things very easily, but if you want speed, you probably could squeeze more juice out of something a little more low-level, but you couldn't perform the same task in C as quickly as you could in python. Apples vs. Oranges.