I passed the SCJP
exam yesterday on the first try. I would like to give my great thanks to all of the people here for your help. It is much appreciated.
My experience and comments:
I have been working as a Software Quality Assurance Analyst, specializing lately in Automated Test
development. I have no paid Java
experience, but I have been collaborating with a fellow doing numeric simulations, and I ported my C++ code to Java to take advantage of the garbage collection, then wrote several generations of the programs in Java.
The relevance of that is that my code was partly Object Oriented (OO), partly procedural. I have found in my studies that Java is different. Almost, but not completely, OO.
I noticed "Global Knowledge Certification Press's Sun Certified
Programmer for Java 2" book (the GK book) about 5 weeks ago, and realized there was a certification program. I bought the book, and scored 47% on the exam included before any studying.
I looked around, and read the reviews of this book on amazon.com, and found other SCJP resources (including Javaranch). Computer books are hard to come by in New Zealand, but I found a copy of Mughal & Rasmussen's "A Programmer's Guide to Java Certification" (the PGJC book).
The GK book was easier to work with - it is much easier to read, and provided a good first pass on the topics. It does not cover all the information needed to pass the exam - it does not go into enough depth on anything (except Garbage Collection), and it doesn't cover some topics at all (I/O). The simulated exam is poorly implemented, with some actual mistakes, and non-functional answers. The GK book plus the web resources should be enough however, if you add your own diligence, and I don't think so badly of it.
The PGJC book has some serious drawbacks, too. It covers quite a bit more than is needed for the exam, and doesn't separate it, so you might spend quite a lot of time studying trying to learn topics you don't need, and practicing it all so you can retain the topics you do need as well. Also, it reads like a language specification, dense and terse, and requires serious study. I will keep it as a language reference, and for it's programming examples.
I downloaded several of the free exams people have made available. My scores ranged from 36% (PGJC exam) to 74% (Jxam). After my first pass through each topic in the books, answering the review questions as I went, and writing code to illustrate issues, I used the exams to tell me what I needed to study.
I decided not to worry about some topics at all. I/O contains a lot of information that must be memorized, and I decided I didn't need to know that for the test, as long as I did well enough in other areas to pass. I did skim the I/O section of the PGJC book the morning of the test, to look for obvious concepts.
When it began, the exam said it was 61 questions, but it only turned out to have 59 after all. It was easier than I expected, and I passed with 83%.
The interface is better than any simulated exam, although several came close.
I got the fabled Sockets question, which I had seen headers for on this board, but had never investigated. I answered (as answers are free), but don't know if I got it right. Reading the I/O section may have helped, as the concept of linking a filterstream with an IOstream was asked, along with several other I/O questions.
The Sun questions largely made more sense than the simulated exam questions. They were (mostly) more clearly worded, and tended to focus on some aspect of the structure of how to get things done in Java, rather than on memorization of API calls. There were few tricks, although many questions demonstrated elements of several issues together, so you can't rely on the supplied answers to guess.
Make no mistake, you must know many of the basic API calls, particularly .equals(), String
, StringBuffer, and AWT in order to know the programming constructs needed to accomplish tasks (and pass the exam), but on the whole, the questions made sense. I only thought about 4 were ambiguously worded (see Backgound above - my career is about being certain with computers).
Several of the questions were very similar to questions I had encountered on the simulated exams.
This exam will NOT demonstrate if you are or are not a good programmer. It does show that you have spent time with the Java language. Some of how to get things done with Java will soak in during the preparation for the exam, and it IS useful knowledge.
One of the core philosophies I was taught at University (MIT - they knew what they were talking about) was "Don't memorize things, you can look them up in a book. Learn to think instead". You can overprepare (or over-worry) for this exam, although it might be hard to guage when you are doing this. Don't worry
about the last 10 points - spend the time learning something more important about programming. If Sun is right about the language, right about the concepts you should
know, right about the questions that demonstrate that knowledge, right about the format of the test, why aren't they also right about the 71% threshold and the pass/fail nature of the Certification?
The problems I have found with software development in my professional career aren't due to poor programmers, they are almost entirely due to Managers who don't understand the software development process or who panic and won't do it, causing endless grief for everyone else. Managers, unfortunately, don't fire themselves when things go wrong...
Best of fortune to all of you, and many thanks again for your help.