I seem to have made a career out of refactoring other people's code. It's not that I like doing it (although there is the same satisfaction you get after cleaning a nasty room; it just feels good to see it clean again), it's just that I seem to be good at it, or just unlucky enough to get stuck with these tasks.
The thing that always gets me is the level of suck that I find in a lot of code. Now, let me make it clear: I'm not bagging on anyone here, I'm not saying of the people I have worked with suck as programmers (although I have worked with some shitty programmers in my time). I'm just always amazed that some code is allowed to degenerate to such low levels. It's only when the code becomes a problem (it's un-maintainable, or there is a performance problem, or a nasty bug...) that anyone thinks "Hey, we should clean this up!". And, actually, no one thinks that but me a lot of the time. I just get selected to 'fix the problem' and in so doing end up cleaning up the mess as best I can.
Why do I bother to clean things up? Because I hate living in shit. And so should everyone else. I think too many programmers have gotten used to it.