Monday, October 3, 2011

Why Certified and Why No Non-Certified?

This topic has come up many times. And even #MartinFowler wrote a blog about this. Recently I was doing code review, found a code snippet. Let me show you a simplified code snippet.

public boolean isEligible(List list) {
  boolean isEligible = false;
  for (int i = 0;i < list.size(); i++) {
if (list.get(i) == 1) {
     isEligible = true;
}
  }
  return isEligible;
}
Now, when I asked developer to put in break statement, he replied, it's small array. Though he was right, as there is not much performance penalty, but that code was wrong from "certified" developer point of view. And this pretty much sums up difference b/w certified & non-certified developer. 

I am a certified Java programmer (eleven years back) but whenever I do code reviews, looking at this kind of code, really makes me fire that developer. It's not that, if you are not certified, you are not good or you are not capable, but it makes difference, how you started programming.

From my point of view, mostly non-certified programmers come in two categories.
  1. Very experience programmer, who started programming in 80s something.
  2. Comparatively newer breed of programmers after IT boom in late 90s.

First category of programmers, most of them, never bothered to get certified, as they been programming enough long time, to optimize code at assembly level. I always end up learning something new from them. (In-fact, they would have optimized above mentioned code, to use iterator and stored list.size() in one local variable :) )
But after IT boom in late 90s, lots of college graduates jumped into programming (where is $$). Now, when they got jobs and did programming in languages like Java, no body really code reviewed their code and nobody did performance analysis at code loop level. And they were never penalized for that, they continued programming like this. If I interview them, they might know difference b/w stateless and stateful EJBs but no idea about IOC pattern. Are they programmers in true sense? Have they given serious enough preference to their skills set, to get certified in that.

You can say, certified programmers got certified only because, they can get better jobs. And you are right. But getting certifications, also made you complete programmer and make you think, before you commit your code. Hence if given choice of hiring someone for my team, I will go for certified programmer (unless he/she flunk my java/jee questions). 

To end my blog entry, here is another code example, from java developer, who has 8yrs of experience (and guess what? :)) . Same developer also wrote MyService class.
(see technical requirement as javadoc)
/** Finds service and invoke it.
      If service is not enabled, then don't invoke it.
**/
public void findAndInvoke() throws Exception{
  try {
         MyService service = serviceFinder.findService("MyService");
service.invoke();
  } catch (NullPointerException ex) {
      logger.log("Service is not enabled, hence ignoring");
  }
}

1 comment:

Javalike said...

Thanks for posting this article. Although, I already encountered this last month, I was just reminded this time. jvmhost