I hate three things: documentation, documentation, and documentation.
I quite like writing documentation, though I tend to repeat myself and be overly consistent (this is a bug I'm working on). It helps me focus, and I'll often uncover logical inconsistencies and other design flaws while writing documentation.
My favourite part is when, after trying helplessly to fix a bit of code for hours or days, something "clicks", I write two lines of code, think to myself "ah, yeah" and voilà! it works flawlessly. Best programming feeling ever. For what it's worth, usually the problem stems from a misunderstanding of the assertions made throughout the code.
My least favourite part is probably polishing an application once all the fun hard problems have been solved to my satisfaction. This is why I tend to stick to POC's rather than full-fledged programs, because I stand a better chance of finishing them before I get bored.