    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: To Certify or not to Certify?</title>
        <link>https://members.accu.org/index.php/articles/1098</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>




<div class="xar-mod-head"><span class="xar-mod-title">Project Management + CVu Journal Vol 13, #1 - Feb 2001</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c13/">Topics</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c66/">Management</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/articles/c122/">131</a>
<br />

                                            <a href="https://members.accu.org/index.php/articles/c66-122/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/articles/c66+122/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
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/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;To Certify or not to Certify?</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 03 February 2001 13:15:43 +00:00 or Sat, 03 February 2001 13:15:43 +00:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e20" id="d0e20"></a></h2>
</div>
<p>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.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e24" id="d0e24"></a>History</h2>
</div>
<p>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
&quot;For Java 1.1&quot; and &quot;For the Java 2 Platform&quot; 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.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e29" id="d0e29"></a>Sun Certified
Java Programmer</h2>
</div>
<p>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.</p>
<p>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.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e36" id="d0e36"></a>Sun Certified
Java Developer</h2>
</div>
<p>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.</p>
<p>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.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e43" id="d0e43"></a>Sun Certified
Java (Enterprise) Architect</h2>
</div>
<p>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
&quot;Enterprise&quot; 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.</p>
<p>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.</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e50" id="d0e50"></a>Preparing for
the Certified Programmer exam</h2>
</div>
<p>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.</p>
<p>I asked advice on exam preparation, and it seemed the lot of
them passed around a single copy of &quot;<i class="citetitle">The
Complete Java Certification Study Guide</i>&quot; 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 &quot;The Complete Java 2
Certification Study Guide&quot; 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.</p>
<p>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:</p>
<p>&quot;What results from attempting to compile and run the following
code?</p>
<pre class="programlisting">
public class Ternary {
  public static void main(String args[]) {
    int x = 4;
    System.out.println(&quot;value is &quot; +
      ((x &gt; 4) ? 99.99 : 9));
  }
}
</pre>
<div class="orderedlist">
<ol type="A">
<li>
<p>The output: value is 99.99</p>
</li>
<li>
<p>The output: value is 9</p>
</li>
<li>
<p>The output: value is 9.0</p>
</li>
<li>
<p>A compiler error at line 5</p>
</li>
</ol>
</div>
<p>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.</p>
<p>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 <tt class=
"literal">try-catch-finally</tt> construct, the code in the
<tt class="literal">finally</tt> block is always executed. But what
about this case:</p>
<pre class="programlisting">
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(&quot;Marlow we have a problem&quot;);
    }
    finally {
      System.out.println(&quot;Finally&quot;); // (B)
    }
  }
}
</pre>
<p>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?</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e93" id="d0e93"></a>Reflections on
the Exam</h2>
</div>
<p>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.</p>
<p>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!</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e100" id="d0e100"></a>The big
question</h2>
</div>
<p>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 &quot;Java Examples in a
Nutshell&quot;. 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!</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e105" id="d0e105"></a>Links</h2>
</div>
<div class="variablelist">
<dl>
<dt><span class="term">The Complete Java 2 Certification Study
Guide: Errata</span></dt>
<dd>
<p><a href="http://www.sybex.com/cgi-bin/rd_err.pl?2700err.html"
target="_top">www.sybex.com/cgi-bin/rd_err.pl?2700err.html</a></p>
</dd>
<dt><span class="term">Sun Education - Certification</span></dt>
<dd>
<p><a href="http://suned.sun.com/USA/certification/javamain.html"
target="_top">suned.sun.com/USA/certification/javamain.html</a></p>
</dd>
</dl>
</div>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
