A Funny Java Flavoured Look at the World

Thursday, August 17, 2006

Does passing SCJP 5 exam make you a better programmer

I thought I might as well finish off the SCJP blogs with this entry whilst it's still fresh in my mind. I recently blogged about me recently passing the SCJP 5 exam and I also posted a blog entry about a couple of articles saying why you should get certified or the benefits which is here
and I thought I would end the topic discussing does passing the exam make you a better programmer.

It's a tricky question in some ways because obviously rating and judging a programmers skills is a very subjective thing and what would you use to grade some one (what is the criteria). I suppose firstly SCJP really only increases your
knowledge of Java and in my opinion increased knowledge of the language you use to program in, doesn't to much extent effect you skills as a programmer.

The technical skills of a programmer (i.e. not work rate, ability to get things done, coping with pressure etc etc) I think are more in his ability to design solutions and code that can be easily modified and added to at a later date. I suppose what I am talking about is OO design, encapsulation and cohesion. Interestingly some of these topics have very briefly been added to the SCJP exam but only in a sense of the person taking the exam should be able to recognise good programming practices and give them a name.

I can only talk about my experience and I think the exam has made me a better programmer because you do have to learn a lot of the Java API in detail to be able to pass the exam and this can't be a bad thing really. It also lead me to look at a lot of new areas of code I hadn't used before and in particular a lot of the new features in JAVA 5 like

Generics
Collections and Generics
Enums
Assert
printf
static imports
it also made me investigate things like Threads

One advantage is you can make better decisions on how you should code certain situations in the future because you will be making the decisions (or I will) knowing more about inner classes (scary) and collections, generics and enums and I will (possibrecognisele to recongise where different parts of the Java language would be suited to certain situations where as if people have looked at the other parts of the Java code they might not think to use a inner class or a generic collection or class.

Another advantage I found that by looking at lots of different parts of Java you can see how good programmers have designed their classes and packages. Like that Calendar, DateFormat, Number format are abstract classes and to customize the serialiaztion process you overrite the writereadObject and then add a call to DefaultWriteObject and then add your code. It's interesting ideas like adding this hook in and passing in a comparator to sort collections. I might use some of these methods when I am coding in the future.

I also enjoyed looking at threads and serialization because they were things I had a hazy brief knowledge of but never really needed or had the time to look at them at work. I don't know if I will be actually using but it was interesting to look at them
Conclusion

So what conclusion have I come to, I think in my case it certainly improved me as a programmer merely because of the fact that I learnt to use a lot more of the API in Java and know what the code does and how to use them. I don't think it will make me a better programmer because learning Java in more depth won't really increase the skills that make people a good programmer. Those skills are a bit like chalk and cheese, just different. Learning Java in more detail certainly won't hurt me and I think being certified will certainly look good on my CV.

On the other side of the coin, studying for the exam was a right hassle and it certainly did take me a lot of work. The scope of the exam is massive and being able to program with items on the exam won't be enough to pass the exam because you need to have a compiler like knowledge of what won't work. I certainly have some respect for people who pass the exam because it is tough, especially considering that everything they have added in Java 5 makes tricky questions, especially Generics, printf, enums.

overall it increases your knowledge of Java but I suppose the bottom line is that alone won't help you be a good programmer because it's what you do with that knowledge that counts.

3 Comments:

  • From our experience in hiring, passing this exam means very little when evaluating a developer. We don't give it any credit at all. We have hired 20 Java developers. 4 had passed the tests. 3 of them were terrible developers. They could never get anything done. 1 of them was an excellent developer.

    By Anonymous Anonymous, at Fri Aug 18, 03:21:00 am 2006  

  • We were discussing this the other night, and came to the conclusion that passing a certification exam only proves that you can learn the answers required for an exam. It is not an indicator of experience, wider knowledge, the ability to work in a team, or ability to work under pressure and to deadlines. At best, a certification should make the person going through the CVs pause before dropping it into the no pile, which sometimes is all you need ;-)

    By Anonymous Anonymous, at Fri Aug 18, 09:18:00 am 2006  

  • I don't think it makes you a better programmer, in the general case. I'm sure there are some people who actually are better Java programmers after taking the SCJP exam (actually probably because of the learning up to taking the exam).

    But I know of too many cases where the person "crammed" for it and passed it after studying 10-15 days having never working on a real live Java project.

    By Blogger Chris, at Thu Aug 24, 08:25:00 pm 2006  

Post a Comment

Links to this post:

Create a Link

<< Home