It's an important question, but everything I know is, you can't. Unfortunately.<p>Writing code, except for the most boring kind of boilerplate, is inherently a creative process, and neither "final functionality" or "final quality" have good metrics, let alone metrics that translate into man-hours, lines of code, or similar.<p>All you can really do is get a "feel" for someone who seems to be underperforming, performing at par, or is really a star player. It's just intuition. Which is really a terrible thing to have to base evaluation on, but it's really all we've got.<p>This is probably why group evaluations, like "planning poker" for estimates of task difficulty, and having the whole group evaluate each of its members (for promotions, raises, etc.), can be popular -- it's still all intuition, but a kind of "consensus" intuition performed by people who ought to know best, can be better than a single person's.