Project Management + CVu Journal Vol 13, #1 - Feb 2001
Browse in : All > Topics > Management
All > Journals > CVu > 131
Any of these categories - All of these categories

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: To Certify or not to Certify?

Author: Administrator

Date: 03 February 2001 13:15:43 +00:00 or Sat, 03 February 2001 13:15:43 +00:00

Summary: 

Body: 

The ACCU has quite a varied membership, and I am sure that there are many of you who are pro- or anti-certification, and many of you have not decided either way. Last August, I took and passed the Sun Certified Java Programmer exam. I am going to discuss my motivations for achieving certification, but first, I will present some background information.

History

Sun has run a certification program for Java programmers for a few years now - I remember thumbing through one of the first certification books at the Java conference at the Olympia in autumn 1998. To begin with, there were two levels of certification. To give their full titles, these are Sun Certified Java Programmer (SCJP) and Sun Certified Java Developer (SCJD). With the release of the Java 2 platform, both these certifications were available in "For Java 1.1" and "For the Java 2 Platform" flavours. In the last year, Sun have also released a third level - Sun Certified Java (Enterprise) Architect (SCJEA). I will expand on what each level entails below.

Sun Certified Java Programmer

SCJP is the entry-level qualification available to candidates. To qualify, the candidate must pass a two-hour exam with a score better than 70%. This exam takes the form of approximately 70 questions - mostly multiple choice, some short typed answers.

The exam tests the candidate's knowledge of Java language fundamentals, and only covers the core of the Java system: language syntax, semantics and a few of the core packages.

Sun Certified Java Developer

To be eligible to take the SCJD programme, the candidate must have passed the SCJP exam. This level of certification aims to test the candidate's ability to use Java to solve a reasonable programming problem. The process is in two halves - first the candidate must complete a (client-server) programming assignment, downloaded from the Sun Educational Services website. When completed, the candidate must package and submit their work to be evaluated. For the second part, the candidate will be required to sit an exam comprised of multiple-choice and essay questions about how and why they solved the assignment in the manner chosen.

Not only does SCJD provide a more reasonable test of Java programming ability than SCJP, but it also tests the candidate's ability to make consistent design decisions, and justify those decisions later on.

Sun Certified Java (Enterprise) Architect

I will be honest - I do not know an awful lot about SCJEA. When Sun first published details of the (as it was then called) Sun Certified Java Architect, it appeared to be a jump back to the multiple-choice question based exam format, but with questions that are wide enough to include, for example, CORBA, Servlets, EJBs, performance and scalability. However, it was a long time from announcing the certification programme until there was an exam available to take, by which time, this level had acquired the word "Enterprise" in its midst. Moreover, the test has now grown to three parts - a multiple-choice exam, a practical assignment, and an essay style exam based upon your approach to the assignment.

To be able to take this exam, the candidate must have attained the SCJD certification. Clearly, due to the chain of prerequisites, there are fewer certified Developers than Programmers, and a certified Architect is a rare beast indeed.

Preparing for the Certified Programmer exam

Okay - I have not taken an exam since my University finals (not counting interview tests - do not get me started on those...). Whilst working at a previous employer, a number of my workmates took and passed the SCJP exam. The last thing I wanted to do was fail or, just as bad, pass unconvincingly.

I asked advice on exam preparation, and it seemed the lot of them passed around a single copy of "The Complete Java Certification Study Guide" by Simon Roberts and Philip Heller, and were quite confident of its effectiveness. By the time I came to seriously consider certification, the 1.2 exam was in full swing (if you pardon the pun). The authors of the above book had brought out an updated version "The Complete Java 2 Certification Study Guide" in conjunction with Michael Ernest. The reviews of this book on Amazon were surprisingly focused - many criticised the book's many mistakes, and others pointed out that the exam does in fact cover the GridBagLayout - a contrary to the assertion of the authors. Thankfully, the publishers have made errata available covering the seven or so printings - see the links for the location of this.

I allowed myself two months of occasional study before taking the exam. I worked through the book a chapter at a time, digesting the material, then taking a first attempt at the review questions at the end of each chapter. There are thirteen chapters in all, each covering a selection of the exam objectives. The first four (language fundamentals, operators and assignments, modifiers, converting and casting) may seem barely worth reading to an experienced developer, but the authors stress the details the exam is looking to catch the unwary on. For example consider this question from chapter 2:

"What results from attempting to compile and run the following code?

public class Ternary {
  public static void main(String args[]) {
    int x = 4;
    System.out.println("value is " +
      ((x > 4) ? 99.99 : 9));
  }
}
  1. The output: value is 99.99

  2. The output: value is 9

  3. The output: value is 9.0

  4. A compiler error at line 5

To a logical mind, the obvious answer would probably be B, but unfortunately, it's totally wrong! The correct answer is C because in a ternary operator, both the result types must be the same type. If they are different (in our case, a float and an integer), the smaller type in promoted to the larger type (in our case, a float). Hence 9.0 (a float literal) is output.

The majority of the material is more than obvious, but the reader must bear in mind that the authors wrote the exam, so subtleties and stresses need special attention. Those of you with little Java programming experience will know that in a try-catch-finally construct, the code in the finally block is always executed. But what about this case:

public class BadMath {
  public static double squareRootOf(double x){
    double root = 0.0;
    try {
      root = Math.sqrt( x );  // (A)
      return root;
    }
    catch ( Exception e ) {
System.out.println("Marlow we have a problem");
    }
    finally {
      System.out.println("Finally"); // (B)
    }
  }
}

Assuming the code at line (A) does not throw an exception, is the code at line (B) ever executed? Are you sure? Why not test it out?

Reflections on the Exam

The exam was simple. Many of the questions I had faced in practice came up in the exam itself, perhaps with minor differences. Very few questions were challenging. I paced myself to ensure I did not skip over any subtleties in the question phrasing, reviewed my answers time and time again, and still finished with over half an hour to spare. I scored high, and passed convincingly, but since I did not get 100%, I cannot claim I knew everything in the exam. How easy was it? My mother could pass it with the same materials and preparation I had (perhaps with a bit of extra time to learn the OO paradigm first). Now that I have taken and passed the exam, I can honestly say that SCJP is no mark of a Java programmer. It covers only syntax and semantics, and both of those at a very fluffy level.

Did I feel cheated? No. Did I feel I had wasted my time? No. You may be wondering why? My personal motivation for doing the SCJP is to work my way onto the SCJEA, which I am certain will be a very rewarding experience. I have achieved Rung One on that ladder. I have now started Rung Two: SCJD. I am happy to reveal that the programming assignment has reasonable depth and breadth (you have to work on the database, the network protocol and the GUI for this), and promotes more professional programming ideals (documentation, responsibility, consistency, data integrity). So why do not Sun offer this more realistic programme as the first level? The answer (in my opinion) is resources. Someone from Sun Education has to run and test your application. They have to read your documentation and source code. It is just not economic to offer this as stage 1!

The big question

You may wonder if it is worth doing Programmer Certification. It depends on your motivation. If you are considering doing it to improve your Java; forget it and buy a copy of "Java Examples in a Nutshell". If you are doing it because you want that kudos on your CV, then go for it (a lot of employers hold great reverence in certification, right or wrong). If, like me, you are doing it for the long ride, then I can heartily recommend it!

Links

The Complete Java 2 Certification Study Guide: Errata

www.sybex.com/cgi-bin/rd_err.pl?2700err.html

Sun Education - Certification

suned.sun.com/USA/certification/javamain.html

Notes: 

More fields may be available via dynamicdata ..