This article aims at guiding you towards the Java 2 Programmer Certification (SCJP2),
although some of the information provided here may apply to other certifications as well.
I also would like to provoke some kind of reaction. I'd like you to ask yourself some questions
about your actual Java level. Is the latter sufficiently high for getting further
or do you need to study more?
To get those questions answered, I'll first explain what a certification really is. Next, I will talk a bit about what advantages a certification can bring. I then enumerate some misconceptions that may arise when people are talking about certifications. After that, I will investigate the dos and don'ts, that is, tips to follow and traps to avoid. Finally, since the main purpose of this article is not to describe in detail every step you should follow to get certified, but to spare you some time by helping you to avoid going the wrong direction, I won't give a detailed speech about preparation tips or where to find mock exams, but I will merely give you some pointers on the web where you can find some outstanding resources.
To get the ball rolling, let's have a look at the first paragraph on the Sun Education web site:
This certification is for programmers experienced in using the basic syntax and structure of the Java[tm] programming language.Well, this sentence says it all: a certification is for programmers who already have a good experience in programming with Java and are willing to go further under the hood investigate the intricacies of the language.
Recent discussions (Is Certification really worth it ? and Opinions on SCJP2 test) posted respectively in the Programmer Certification Study and the Programmer Certification Results forums kept my attention. What one can conclude after reading those discussions is that, apparently, some people want to get certified just for fun or to improve their Java knowledge. It also seems that some people think certification is not worth a penny. Everyone's thoughts are legitimate, of course, I won't argue with that. However, I assume that if you keep reading you believe in the value of a certification.
As mentioned in the previous paragraph, this question has been the topic of many debates. There is an everlasting tirade about how good multiple-choices exams can assess one's knowledge. One party argues that a certification doesn't prove anything while the other party claims that a certification helps evaluate one's know-how. Well, both are right and wrong at the same time. To answer this question, be aware that there are different ways of certifying people. Let's take a peek at the Java example since this is what Javaranch is all about. The Sun Education Center delivers 4 different certifications relating to the Java Language:
Well, to sum up, there will always be people who disagree and that's better that way. Otherwise how would the world evolve? Debates have ever been sources of evolution. No debates, no evolution. Let's just conclude this paragraph by saying that if you are willing to seek for certification, go for it, don't care about what people are going to say about it, the bottom line is YOU want to get certified (or your manager says so). BUT, pay attention to what follows!
The certification path can be applied to many fields of study.
Apparently, some people still don't make a difference between a respectable cook and a
"grand chef". If you want to learn cooking then you take cooking 101 and learn the
basics of cooking. How to boil water to make macaroni? How to melt some cheese to get
macaroni and cheese? Then, when you are sick of macaroni and cheese and want to become
somewhat more experienced in cooking, you can take advanced cooking lessons where you are
going to learn how to make yummy gravies to pour on your 1/2 lb steak or how to make a good
stuffed Thanksgiving turkey.
Ever tried to build a house by beginning with the roof? No need to be a PhD to figure out that the house doesn't stay upright long.
Well, the same applies to Java. First, you take Java 101 to learn the basics of the language, and then, only then, you can get further.
That's right, one step after another.
Focusing on SCJP, it is not a way of learning Java at all but more a way of improving what you already know of Java and learning some basic coding techniques that will make you stand ahead of the herd of wannabes. Again, if you try to become a SCJP without knowing the basics of Java, either you fail right away or you might get into trouble once hired and staring helplessly at your computer screen. That's the harsh truth but it needs to be said, emphasized and not be left untold.
Take the certification seriously and don't look at it as some banal professional or academic experience. Moreover, don't seek for certification because a friend of yours told you so or because you want to fancy up your resume with a, well, nice logo. Instead, you should have a profound attraction to the Java Technology itself and also want to promote it.
If you are asking yourself questions such as "What language does the word 'overloading'
come from?" or "What is a subclass?", then you probably should hit the books
because you are not ready. To pretend being eligible for SCJP, you should at least be comfortable
with basic object-oriented concepts on which the Java Language relies, that is you should be
able to answer questions like "what is an object?", "what is a class?",
"what is inheritance?", etc. If you don't know how to deduce the output of a given
code, then you don't know how to read code and you need more practice.
Now, if you don't know why
String literals are not garbage collected or why
wrapper classes (
Double,...) in the package
are immutable, don't worry because those are advanced topics which you will learn
during your certification study.
Another thing I've seen way too much is the ever-present advice "You can count on x% chance during the exam". Two words: forget it! Let's be somewhat realistic here. If you are counting on chance to help you, you are an unreliable person and way off the line. It is true, though, that chance may help but no one should partly rely on it to get certified (the same advice holds for any other kinds of exams).
A further issue is that apparently some people are complaining about the memorizing requirements that the certification study involves. Let's face some facts:
If you think you satisfy the requirements stated above, then you may safely follow the certification trail further.
I won't describe any specific method to follow for getting certified, you should build up your own. Everybody is different; hence, everybody works according to a different method.
The first and most important thing is: DON'T SCHEDULE YOUR EXAM BEFORE YOU KNOW YOU ARE READY!!!. That's pure nonsense. How can you know that you'll be ready by the date you have chosen? What you will end up doing is getting more and more stressed because you think you might not finish in time. Stress is bad; it only leads you away from your original goal. Now, you are asking yourself, "how can I know that I'm ready?". Good question! I'll answer that by the end of this article; just keep reading.
The next important thing to do is to organize yourself properly. That means:
The first thing to feed into your browser's location field is the following address: http://www.javaranch.com/maha/index.html. This web site has been created by Maha Anna (short for Mahalakshmi Annadurai), an Indian Electronics and Communication Engineer who got certified during the year 2000. She thought that sharing her own certification experience on a website would be a great idea, which it is. She enumerates very good preparations tips, lists a great deal of mock exams and resources as well as interesting discussions which happened at Javaranch. So, I strongly recommend you to point your browser to that web site and benefit from it. Next, I will just elaborate some of the tips she gave.
The next thing to do --which should already be done-- is to get the Java 2 SDK Standard Edition
that you may create your own pieces of code. I'd get the latest stable version which is, as of
this writing, 1.3.1, but version 1.2 is fine too. Lots of coding practice is the key to
mastering the language. Never underestimate that.I guess I will never manage to emphasize
this point enough. Every time you encounter a blurry concept, write some code, compile it, run
it, change some statements, re-compile it, re-run it, twist it, re-compile it, and so on until
you get the
point. You won't always get to the point quickly, though, since some topics are rather difficult.
If such a situation arises, that's the moment to point your browser to the
Study forum at
Javaranch and ask your
buddies for some piece of advice. But, by all means, DO NOT post a piece of code without
even trying to compile and run it first. That's pure laziness. Questions like: "what
is the output of this code?", or "will this code compile and run?" should be
banished. I have noticed lately that an ever-growing number of people in the SCJP forum are aware of
that too, and are simply answering a nice and killing "first try, then ask".
Seriously, the practice requirement is very important. The equation is simple: the more you code, the more comfortable you are in analyzing Java code and the faster you are going to spot bugs.
The inseparable companion of the Java programmer is the Java Application Programming
Interface (API) documentation. A well-organized
documentation containing thorough information about all packages, classes, methods and
fields released with the J2SE. It's not something you read sequentially but it is more like a dictionary.
Use it. Answers to questions like: "what does the
do?" or "which methods are declared in class
Thread?" can be found in the
API. Time is precious, so stop wasting yours (and other's!) and browse those marvelous API first.
Anyway, if you satisfy the requirements I stated above, you most probably already know all that. You may not know about the Java Language Specification, though, which I'll talk about next.
The Java Language Specification (JLS) is the "best" technical Java reference. On the book's web site, it says:
The book provides complete, accurate, and detailed coverage of the syntax and semantics of the Java programming language. It describes all aspects of the language, including the semantics of all types, statements, and expressions, as well as threads and binary compatibility..
java.langpackage and does not spend time on specific Java packages, like
java.io. To get information about the later, you are better off consulting specific books on the topic, the Java tutorial, or books expressly dedicated to the certification which you can find at the Javaranch Bunkhouse.
To briefly conclude, if you want your certification to be worthy, you have to prepare yourself accordingly. Cheating is for weak people and it is not of much help anyway. Work seriously and try to write as much code as you can, this is the only way to learn Java rapidly and efficiently. If you believe in the value of your certification, focus and don't listen to troublemakers. Put all your energy in your study and you'll see that it is worth it.
Written by Valentin Crettaz.
Reviewed by Marilyn deQueiroz, Jane Griscti and Dave Vick.