There have been many discussions, in StackOverflow and outside, of how you can judge a good programmer in an interview. Make him write code, check for common mistakes, observe his coding style, so on and so forth. All good.
But what is less discussed, and probably considered even less important, is how do you evaluate and judge a programmer in your organization after he or she has spent some time with you - say at annual appraisals? Obviously there will be a lot of evaluation on how good a team player he was, how well he communicated with others, how much effort he put in to meet the deadlines etc. (I am not condoning any of these practices but merely stating what happens).
But how do you judge a programmer in your organization based on the actual work that he has done over the past 6 months or one year? What 'real' metrics you will use?
Obviously we are past the times (hopefully) of using "number-of-lines-of-code" metrics. But what are the other factors that a team lead or manager or even his peers will evaluate to see how good a programmer he has been?