I have been recently studying for the Java 1.5 certification exam. The book that I am using is over to the right of this page. It is over 800 pages, but I am making it through. It is also quite thorough and good for preparing for the exam. I know enough to pass the exam, but not enough to do it all perfect afterwards.
Therefore I am for the first time since college, seriously studying for a test. It is at this point that I realize several things. First and foremost, it is really hard to create a programming competency test. It is far too easy to say that you know a language or concept. Resumes are filled with supposed knowledge, but applying it to a job is entirely different. So after 3 years of applying my knowledge, I find it hard to translate that knowledge back to the academic realm. It is not that the information needed for the test is pointless, but the hypothetical situations that the test turns into 'gotchas' just drive me batty. Who on earth sets up a polymorphic tree with 17 levels and every access modifier in the book? I have not seen the situation arise in my line of work, and I write enterprise level software. At the same time, I don't know that if someone completed this certification they would be ready for real life work.
So today is my day to rant about the large gap between learning syntax and knowledge that can only be gained with experience. I certainly don't know a solution off the top of my head, but it seems near impossible to tell on paper is someone is worth a hill of beans in real life situations.