I've always believed that part of being a good programmer or being a good tester (or being a good anything) involves having the proper mindset.
In this, I think that programmers need to be optimistic. What I tend to focus on though, is the pessimistic tester. (I know you're surprised by this, what with my lack of obvious bias. :) )
For testers, I think a healthy dose of pessimism is required. When someone says "This feature is finished now." It's the tester's job to say "I'm not so sure it is...let me look at it."
(As a tip, if they act nervous at this point, they may have just lost their optimism...and the tester may have a fun time finding bugs.)
Note that when I say 'a healthy dose of pessimism', I don't mean to say that a tester should expect everything given to them to fail, but that they should not assume that something works, simply because it was given to them as 'complete'.
So, next time that you're given something to test, or, as a programmer, look at it really hard, think pessimistically, and say "Is this really complete?"
The answer could surprise you (or not, if you're pessimistic)!