When I first started working on The Shakedown for Android I kept circling back to a thought. "Who cares if it's bad! These are Android users! They asked for it!" At first I thought it was funny. But after a while I noticed that with that thought came physical anger (clenched teeth, furrowed brow, etc.).
Before I released it I would joke a lot about how bad the Android version was. Then I sent out the first barely-functional build. Brice, a friend who had offered to help test, downloaded the build. He sarcastically joked that the app made him "feel loved." Of course the exact opposite was true – my antipathy towards Android showed itself very clearly in the app. No one had been there there to tell me "this isn't good enough" and I had justified that decision with anger.
I realized perhaps I hadn't been approaching the Android version correctly. I started looking for things to love about Android. I remembered I had just sent out builds and didn't have to deal with provisioning. Hey, that was pretty nice! And hey I also got to use my favorite text editor, Sublime Text! And, you know, editing the UI via XML files sorta made sense after a little time.
Immediately I started taking small steps to improve the app. An extra five minutes to tweak the positioning of a text view here, another minute cleaning up my code after writing a new class there. Rather than a circle of anger and good-enough-for-Android hate I started having a much more positive spiral of learning and appreciation. Writing the application became more fun, and the resulting work was higher quality.
A distaste defined by its differences from what you know is not valid. That sort of calcification leads to becoming a grumpy old guy. Not only that, but this experience suggests that my mindset while working on something dictates not only the enjoyment, but also the quality of the result. If you're programming angry you're hurting yourself and your work.
Have you had a similar experience? I'd love to hear from you on twitter.