I then decided to conquer my hatred of it when I started my first job. I had the help of an interesting project wherein I had LOTS of freedom to learn and make stuff in a lab without the fetters of enterprise requirements... I began to love it.
Fast forward 2 years and I've changed jobs. I feel like I can hack my way out of any nasty problem. Java is more unweildy in this enterprise environment because we are leveraging several enterprisey frameworks, but we can make bigger strides. The framework is doing a lot for us. I am still making stuff. This job is a pressure-cooker, but I'm feeling very fulfilled and I'm advancing.
Fast forward 2 years and I've quit the pressure cooker to be a Rails contractor (actually, easier), I've even got a startup going. Ruby is powerful, and I tell everyone they should be using RoR instead of Java. I laugh at people who don't understand what they're missing.
Fast forward 2 years and I am back in a corporation. Using Java very sparingly to maintain lots of integrated systems. The problems are nasty, there is no feeling of 'making' anything. I resign myself to being the best maintainer I can be. I keep my sanity with side projects. It's easiest to use Python on App Engine, because I don't have to be a sys admin.
The more interesting problems you are solving the better the language you are using seems to be. I would even go so far as to say that if you find someone who loves a particular language, it's because they are using it to solve interesting problems.
I think you are on to something. Maybe the ability to code with flow is also a major factor to liking a language and the task it is used for. To sit in an uninterrupted "Aha! I fix!"-loop with the feeling that there is progress and one get kick out of it continuously.
When doing maintenance on patchy code, working with a flub-language, or having a edit-compile-debug cycle that is annoying, one is more likely to be in a "Uh! Wtf!"-loop.
Now... how can one turn these theories around to something useful that one can apply to our day-maintenance-programming-job to make them fun and tolerably? Because they do pay well, and there is typically much to learn.