This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
This week, I passed the SCJP 5.0 exam with a score of 94% and thought I'd share my experience with the exam and the preparation process in return for the valuable information I got from this forum while I was studying for the test.
- For content, I relied on the book: SCJP Sun Certified Programmer for Java 5 Study Guide (Exam 310-055) by Katherine Sierra and Bert Bates
- I also did some research on the web (this forum, for example) to get a general idea what the exam is like and how it worked out for other people
Originally I gave myself 10 weeks, one week per chapter in the book. My plan was to get up at 6 AM every weekday and spend 2 hours before work studying. That did not quite work out (the part about getting up early), but I managed to take the exam about 12 weeks after I bought the book. I should mention that I worked on it on and off, if you work on the book consistently, 6 weeks should be sufficient.
In the last couple of weeks, I usually worked on the material on weekends, going through 2 chapters per weekend. I took the self-test after each chapter, sometimes with really disappointing results, I often only got about 60% of the questions right and this immediately after working through a chapter! After I read the book cover to cover (and with the self-test results in mind) I went through all the chapters for a second time, this time not in order, but based on my strengths and weaknesses. I also mainly focused on their "2 Minute Drills" and then took each self-test again.
I also went through the practice exam on the CD and registered online to be able to download a second exam. After I scored 75% on the test exams I got an appointment for the real one to increase the pressure a bit. Otherwise I would still work on this today, I think. On the last weekend before the exam, I consistently scored 90% for the test questions, but I have to admit that the memory effect played a big role, as I knew the trick quesions by heart by then.
TAKING THE EXAM:
I showed up 30 min early as the Prometics web site recommends but there were only 3 other guys taking the test at this time so I could get started right away. After showing my driver's license and emptying all my pockets I was taken into the exam room. Actually, before that the Prometrics lady looked me in the eye and asked me if I had really emptied all my pockets and put the contents in the locker. She must have noticed my hesitation, I still had two stripes of gum in my shirt pocket. I figured, it's just gum right, who cares? Well, apparently they do not allow anything that is wrapped in paper, so I just ate one on the spot and got rid of the other one.
I went through the exam questions one by one, giving myself plenty of time for each question. I marked about a dozen for later review, but in the end I only changed one answer. You should probably stick to the answer that first came to your mind, changing answers later on is usually not a good idea unless you find something obviously wrong. It took me about 2 hours to answer all 72 questions. After that I took a short break and reviewed the ones I had marked. As the book recommends, I did not review any drag&drop questions. There seems to be a bug in the testing software, if you review one of those questions, your original answer is lost. I did not want to risk that so I wrote down the numbers of all the drag&drop questions to not accidentally lose my answers. After 2.5 hours I hit the "Print" button to print the results and was out of there, happy to have my weekends back (no more studying for a while at least).
HOW TO PREPARE:
Here a couple of things that worked well for me while I prepared for the exam:
- Take detailed notes with pen and paper: There is something about writing on real paper that really triggers your brain. You are forced to first identify the important things, filter them out, and then rephrase them in your own words. This process alone helps digesting the material. In the end I did not even revisit the notes I took, but the process of writing them down alone was extremely helpful to remember all those details.
- Do the "2 Minute Drill" after each chapter. Make sure you write down the results on a separate piece of paper so you can do the test multiple times. When reviewing the results and you spot a wrong answer, really try to understand why it is wrong and why the correct one is right.
- Do the practice exams from the CD. Use the "Open Book" mode and set up the software to show the correct answer after each time you selected a wrong one. Immediately reviewing a wrong answer helps tremendously.
- Write lots of small test programs. If you come across a question either during the test or during studying and you are not sure, write a small program to test if your assumptions are correct or not. Again, similar to taking notes, this will trigger your brain to remember all those details.
- Review the Java API. Again, the more "input" methods you use, the more likely you are to remember things. Use the Java API, notes you took, highlighting in the book you made, example programs, etc. to help you remember
- Review a couple of questions every day. Use the test software from the book CD and do 20 test questions every day, if you study the book or not. This helps you keep going.
- If you notice certain mistakes you make often, start a "Remember..." page and list those. For example: "Remember to check that labels are actually ONLY used for loops, nothing else (e.g. if/else)" or "Remember that when inheritance is involves to triple check the class hierarchy and access modifiers".
- Get an exam appointment once you score about 75%. This helps to increase the pressure towards the end and helps you to get this done this year.
- Many of the questions do not test the obvious. Something that caused me a lot of pain. You look at a question and think you know what they are aiming for, but in the end it is a mere syntax error or some other minor thing and the code does not even compile. So remember, if you think you know what the question is about, think twice, check the syntax, import statements and the like.