Much of what I would say has been aid by itsmatt, but I'd add:
The true performance of a programmer is often hard to judge until another programmer has to use/maintain/correct his code. That is when you can get a good assessment of how solid his code is, how often does it break, has it been responsible for any code disasters etc.
And most important: how well did the CLIENTS enjoy his code. (sometimes the clients are other programmers, sometimes end users, sometimes it's something in between)
Ultimately the purpose of computers/code is to make our lives easier (even if it's not always the result) so that is why I think the ultimate judge should be the end users and maintainers of the code.
Mind you I am answering from a large project/video game centric standpoint, and this may be less true on smaller projects, but I think it still holds true.
So what is my advice in the end? Assuming a healthy functional social environment, Client and Peer Reviews tend to be the most reliable metrics (though often not the most convenient ones), "Performance Goals" usually just end up striking good developers as bureaucratic and will annoy them... and as someone said above, it will really just show how good they are at gaming the system