The problem with not having grades is that the students who are best at social interaction will tend to do better than those who are not. Scores need to be objective, not subjective, and scores are necessary to give an impression of a persons ability, when he later applies for a job.
But the real problem here is that we treat everyone the same. Who wants a C- doctor vs. an A+ doctor?! If you really cared about the unique differences in people then one person would take 2 years, and another person would take 6-- but when they finished they would be competent. Unfortunately, treating people like machines by grading them is really just a form of moralism that tries to categorize and rank people. We love to justify our existence by comparing ourselves to others, and "objective standards" provides nice self-validation.
If a guy took 6 years to learn how to program and another guy took 6 months, the 6 month guy will be more productive when we decide we are going to use a brand new language. People ARE machines - but a lot less reliable and much softer. It's not moralism to want to categorize people, it's efficiency. The process of categorization is weak, but it's better than none at all.
I much prefer that I be ranked on my grades objectively, than I be ranked on something else like 'he attended oxford', because the second is likely due to the wealth and influence of my parents.
When a professor gets to subjectively evaluate a student, who do you think will fare better, the student who speaks like him, also plays golf and whose parents attend the same country club, or the other ghetto dressing slang talking student?
An exam is hard and objective. It speaks the truth, because it's judgment is cold and not affected by any preconceptions.
Excellence should always be as objectively graded as possible, because humans have too many biases.
How do you standardize a test of ability in computing? I'm not talking of computer science, but of plain programmers - how do you test their capability in some type of standardized test? It's very difficult.
Medicine is different because it's about a lot of knowledge and being able to product that knowledge when required (same with lawyering). Programming is different in that you look up the information, the body of relevant info often changes, paradigms change constantly. You can't standardize this field (yet).