Mostly, I love them. Peer reviews are one of the best ways I know of learning valuable lessons from other programmers, usually programmers that are a lot more skilled than me. The only thing I can think of that would be better than that is pair programming. Peer reviews allow you to get input on the code you wrote, fresh ideas, a different point of view, not necessarily better, but always different. They may inspire you to refactor the whole thing or to take a whole new approach that could very well be easier than what you were trying to do in the first place. You may even find out that what you were trying to do is not really needed or is being already accomplished in a different way. Other coders can certainly see things you can’t.
And yet, there are those days when I kind of hate them. Those days when I’ve been working on the same issue for what feels like an eternity, yet instead of giving me their seal of approval, my reviewers keep requesting more changes with every commit. Those days when I wish my reviewers were not always trying to DRY everything or refactor everything and would just agree with my code… if it works… sort of. Ugh. Yeah, those are the days when I have to remind myself that it is a really good thing they don’t just agree with my code. Even if it’s frustrating. This too shall pass… and I’ll come out of it all a better programmer… after I’ve suffered a while. It’s the only way to learn.