Welcome!

Java Authors: Michael Sheehan, Maureen O'Gara, Jonny Defh, Suresh Krishna Madhuvarsu, RealWire News Distribution

Related Topics: Java

Java: Article

Java Certification and I

Java Certification and I

Related Links:
  • Java Certification
  • Is the Java certification program offered by Sun really the route to a higher salary and better quality of code for businesses? I have my doubts.

    In my fifth year of Java programming, after being involved in several distributed developments for large companies, a prospective employer tested my ability. "Don't worry," he said, "you'll have no trouble; this is for beginners."

    Unfortunately I failed and was embarrassed - it was a dismal score. He asked me why I had scored so low and with my career and self-belief crushed and broken and in ruins on the grey carpet-tiles, I mumbled something about IDEs, esoteric details of thread control, and tricky default behavior. I dashed from the building and imagined him later berating the agent for sending somebody so obviously lying about his experience.

    But I wasn't lying. For 10 years I hadn't created a source file or method name from scratch - the IDE had done it for me. I never had cause to use Java threads, and I avoided the use of default behavior on principle. When I first began programming in Java, integrated development environments already existed that created the files and provided all the correct packages and imports.

    Never once was I concerned with the correct syntax for the main() method or the Java source file. What mattered to me was creating an understandable design and hitting the business goals. As a team leader, if one of my coders had written examples like the ones I'd been tested on, I'd have sent him or her on a training course to learn the language.

    I later discovered that the interview questions had come from the Sun Java certification. While finding out more about certification I came across the following quotes on the Web:

    "I am a Java Certified Programmer and the only thing I've gotten out of it is the ability to say that it's been exactly useless to me."

    "I had hoped that certification might carry some clout, but it isn't turning out that they have as much clout as the certification vendors would have you believe."

    "I'm an SCJP and SCJD. They're absolutely useless in your career."

    This attitude of irrelevance is confirmed by the statistics on JobServe (the largest job database for IT personnel in the UK: www.Jobserve.co.uk). A search for Java returned 1,498 current jobs, while a search for Java and Certified returned just 10 current jobs. About 0.7% of positions ask for certification.

    I decided to take the test despite the evidence and discovered that learning Java for the real world and learning it for the exam are not the same. The exam curriculum is well intended but seems to encourage dubious practices that only an experienced programmer would know about. After passing with 80%, I was left wondering why Sun had created such devious questions. My rule of thumb is that if you can't comprehend it immediately, it's wrong. Many of the questions in the exam require careful study - the exact opposite of what we, as programmers, should be trying to achieve.

    Instead I would like to see the exam concentrate on the process of programming rather than the code itself; to me you can be a first-class developer, without knowing all the grammatical details, by concentrating on clarity. Businesses require the production of quality, maintainable code in a timely manner, and this can be tested. For example, the following subjects should be covered:

    1. Comment this section of code.
    2. Rewrite this code to be self-documenting.
    3. How to avoid threading. The proliferation of unnecessary threading is a personal irritation. I went through 10 years of development on huge systems without needing to create threads, and now they appear everywhere.
    4. What is wrong with this dry run?
    5. Write the code this flow chart represents.
    6. Provide suitable names for these classes.
    When considering the testing of ability, it is important to remember that programming does not exist in isolation but side by side with business goals: deadlines, quality controls, and maintenance. It's not enough for a programmer to know the language - indeed I argue that in some heads, knowing the language too well can even be a hindrance to readable code. Yet the business aspects of development are entirely missing from the programming exam. It does not test language so much as it tests grammar, but the two are very different.

    You can learn more about the Java certification program at http://training.sun.com/US/certification/java/index.html.


    Related Links:
  • Java Certification
  • More Stories By William Knight

    William Knight has been developing software for 20 years and writing about it for two. His career has taken him around the world twice and onto the staff of a selection of the worlds largest companies. He currently lives and works in Devon in the UK.

    Comments (40) View Comments

    Share your thoughts on this story.

    Add your comment
    You must be signed in to add a comment. Sign-in | Register

    In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


    Most Recent Comments
    Vorachet Jaraensawas (Thailand) 05/29/05 03:49:46 PM EDT

    solving 61 Exam not mean to you will be good developer in java technology. The good product or project denpencies with The skills of computer programming

    Mika Koivisto 04/15/05 02:06:01 AM EDT

    I got my SCJP and SCWCD couple years ago. My first try with SCJP failed miserably with something like 50% correct. That was really embarassing since I had already been programming complex j2ee applications for years. After that I read the Java Language Spec. and JVM Spec. and retook the test. Still didn't get perfect scrore, but it was a clear pass with about 90% right. That was really useful and has helped my to solve bugs in software I have maintained and it has also made me always read the specification first and then maybe some books about a subject. So in a sense it was useful to get that certificate.

    Gang Guo 10/25/04 04:18:46 AM EDT

    how many things in your A-level or GCSE are useful in your daily work? and can you ask your university not required it, as you already in school for some years(10-12), just like you have experience as a java developer; but maybe just not the good one at all.

    the SCJP one is concentrate on the fundmental of the knowledge, pass this means only you know the basic, does not means you can solve real business problem, this is why SCJD, SCWCD and others go on top of this one.

    Carl 10/22/04 02:16:49 PM EDT

    OH PUHLEASE....
    who is this guy David Huang...
    His post is not even in the context of certification.
    hire guys from schools like Berkeley, Stanford, Cornell, UCSD etc and get them to write JSP's, and EJB's, HA HA HA...
    Keep it real guys...

    I think all people who think certification is a waste of time, or certification is useless, READ THIS...

    First and foremost, lets not generalize and say guys who have certifications are bookish, or bad programmers or textbook programmers and stuff like that.
    There are good programmers and bad programmers and it is all about logic, common sense and ofcourse a good grasp of the fundamentals.
    Now if you can give an exam and see if your fundamentals are as good as u think they are, then isint that a good thing.

    I can safely say that anyone who can pass SCXXX (where XXX stands for all flavours ) without preparing for it is great.
    For most of us who dont fall into this category, spend some time, study a little and find out how much u dont know :)

    Try giving the SCEA and then talk of certifications not being good for you, Preparing for and passing the SCEA has given me loads of knowledge, confidence and most importantly insights into the BIG picture. It has made me a better designer and architect.

    Bottom Line : Certifications help you become better than you already are.

    James D 10/21/04 04:08:36 AM EDT

    Certifications are for companies to make money, they do not prove ability and employers ignore them by giving their own tests anyway. The questions on these tests focus on useless syntax that has very little to do with makes someone a good software engineer. The ability to manipulate logic, simplify problems, follow instructions, ask the right questions, work with a team, learn and work under pressure are far more important. I'd rather hire someone that excelled at those things but has little Java experience than hire someone that has a useless certification they spent weeks taking practice tests for so they could pass.

    Infernoz 10/21/04 02:24:26 AM EDT

    Certifications are often of limited usefulness (unlike degrees) because the questions are often too contrived, inflexible and even bogus, also certifications should not be used as a 'cop-out' selection criteria for know nothing HR staff, recruiting should be done by the manager for the position, because it is part of their job and they should know what is required.

    I was studying years ago for the JCP, but saw how bogus some of the mock questions were (from actual JCP questions) and even proved that some of the 'perfect answers' were plain wrong, so stopped in disgust!

    Nick Rapoport 10/20/04 05:02:12 PM EDT

    Just my 2 cents:
    "... makes you think like a compiler ..." well not quite...
    An ability to took at badly written code, that does not work, and catch errors, don't you think you would like your developers to be able to do that. (not necessarily compiler errors, it seems that the developers these days operate on a principle "if it compiles it's GA, ship it!").

    IDE's are great (I use eclipse), but like all technology they will not think for you, you ask an IDE to make a an inefficient construct and it will happily generate it for you. Everyone forgets , when you are writing lots and lots of code, stop, you probably doing something wrong , either you chose the wrong language or a bad algorithm, etc. (I once replaced a HUGE Java program with a thirty line AWK script), IDE obfuscates the actual amount of code you are creating so you wind up going in the wrong direction longer... A programmer (Java or otherwise ) should know how to code without an IDE, does not mean we should not use it, but do not become so dependant on it you become helpless without it.

    When I interview, (i do tech interviews from time to time) -- I do not ask method signatures (you all are right, that's what API Javadoc is for), but I do ask interviewee the difference between List and Set, also examples of each and under which circumstances they will use one over the other. I also ask about access modifiers, you'd be surprised how many C++ answers I get :). I also ask about interfaces / frameworks, it's sad, Java is so easy to code in a reusable fashion, but so few people do it.

    I don't care what someone's personal preferences are on threading,(I did not realize that this is a religious issue like where to put your opening "{" ),there is lots of technology out there that can handle threading for you, application servers, JMS providers, etc, but you should be able to tell me how it's done in plain Java, so I know you could use it when necessary. (How could you code a JSP/Servlet while not keeping it in the back of your mind?) It seems rather improbable that a large project with lots of concurrent users could avoid some kind of threading technology, unless of course, you have an infinite hardware budget :). BTW VB(.NET) developers are not immune to threading, although Microsoft makes very difficult to use it effectively.

    In general I would prefer to hire a developer that knows less (but is willing to learn) to the one that knows everything.

    Sun's Java Programmer exam is not something you could do "on the fly", but if you worked with the language for a couple of years it should not take more than two to three weeks to get ready to pass it. Yeah I took it, (I had a couple of weeks free in the beginning of the year), I passed it, but to my horror I did not get a perfect score :(.

    Nick

    P.S. I have about 16 years in the business (I started with Java in mid 99 I learned it from Bruce Eckle's Thinking in Java http://www.mindview.net I highly recommend it),

    P.P.S I found that taking the exam organized my thinking, helped me explain myself better, and gave me a perspective that I did not have before...

    HTH

    Leonid Ilyevsky 10/20/04 04:53:37 PM EDT

    Thanks Jeffrey Haskovec for his reply.

    Walking through the list with iterator vs. get(i) method should take roughly the same time for ArrayList, because iterator object is pretty light. But what happens if the list is an instance of LinkedList? Do you realize that get(100) may take about 100 times more time than get(1)?

    That guy on the interview believed that get() is the only way to go through the list (I cpecifically asked him). He did not even suspect that there exist List implementations other than ArrayList. Do you?

    I fully agree that it is much more important to know where to find answers than to know some answers. And it is important to know the questions. Learn to think about what you are doing.

    If somebody is programming Java for a few years, uses List, ArrayList and HashMap, but never heard of LinkedList and do not know how to use iterator, it means that he or she never looks in the book or online documentation and/or does the job without thinking. I would never hire such person.

    Jeffrey Haskovec 10/20/04 03:39:39 PM EDT

    This reply is for Leonid Ilyevsky... Your statement about the Iterator is ridiculous. It is more inefficient to use the iterator in your example than what the guy did, as if you read the Java Source code you will see in Abstract list that when you call an iterator it is effectivly doing the same thing. So basically you just created a new object (the iterator) to call the same things your candidate did by hand. He avoided additional Garbage collection overhead as well as an additional call layer by doing it directly. So to me that says you are dumping someone who writes better performing code. I am sure a lot of people here will be like what is the big deal it is just 1 more object, but on our server application we need it to be fast as possible and Garbage collection can just kill us when we are under heavy load (even with the parallel collectors on multiprocessor machines). So in certain applications it does matter. What I tend to see is a lot of programmers who take an ivory tower view to how they are writing something ot whatever is the accepted abstract trendy thing to do at the time, but I feel in the real world we need to be more pragmatic based on application considerations.

    Yakov Fain 10/20/04 03:26:36 PM EDT

    Let me add my .02 cents.

    1. Certification is good as an additional testing tool to double check that you understood the book correctly.

    2. From the vendor's perspective the whole certification process is a business that generates some additional revenue.

    3. From the employer's perspective this is useful in two cases:
    a) a job agency does not have people to screen job applicants and the very fact that someone has certification
    helps them with the first screening.

    b) A tool/language is new on the market and it's hard to find the right people. This was applicable to Java
    back in 1996-1998.

    4. I agree with Frank Employer that people who know where to find the answer are more valuable than people who know some
    number of answers.

    5. While having a good formal education is a good thing in general, for business application development it's
    not critical. You can have a degree in music and be a good programmer and write good Java/HTML/XML/SQL code.

    6. When interviewing developers, I just ignore the fact of having any Java certification .
    It's neither good, nor bad.

    Sun Person 10/20/04 03:11:35 PM EDT

    I work at Sun and too believe that the exams are a bunch of crap. Don't take them if you don't have to. They've never gotten a reputation for being a career-enhancer for anyone...

    Frank Employer 10/20/04 01:45:50 PM EDT

    "It is better to know some of the questions than all the answers" - James Thurber. This is the quote our onsite Sun Consultant has at the end of his emails. When we ask him the tough questions that are not intuitively obvious, his response is "I don't know the answer, but I know where to find it".

    Isn't this a better indicator of value than regurgitating 40 answers on a test. I've been in the software development business for over 35 years and have a plethora of languages under my belt, COBOL, ALGOL, Fortran, C, C++, and the list goes on. Conceptually, you can do the same things in each of these languages, albeit, some things are easier in one versus another. What we as developers need to do is convert business requirements into language statement that meet those requirements. Amazingly, I've seen a significant number of developers, including certified developers, that can not do that. Regardless of certification tests that one passes, bottom line, being able to walk the walk coupled with a good work ethic, the ability to work with others, compromise, etc., all all important attributes for any good employee to have.

    The ability to take requirements and translate them into well structured, maintenance free code, is an acquired talent and from my perspective, not one you can get from a certification. Certainly as an interpreter, I better know how to interpret, i.e., speak and understand the Java language of threads, and pipes, and steams, oh my. I wouldn't be much of an English to French interpreter if I didn't know French, would I. Knowing and understanding language constructs are essentials, reguritating them is not.

    To keep up on technology, I regularly take university classes. The same concept seems to apply there as to certification tests, i.e., it's not necessary to know how to apply a technology, that is secondary, it's more can I reguritate 40 answers to some lame test for a grade. The emphaaahsis is on understanding and applying. It's sad we miss this point at such an early development stage, but hey, it's not a perfect world. How did Paul Simon put it? "If I look back at all the crap I learned in high school, I'm amazed that I can think at all". I now audit all these courses.

    To quote, Max Klinger from MASH ... "If I had all the answers I'd be God". Same goes for employers hiring employees. I think the point of this article is that certification is not the be all, end all, answer to making a hiring decision, and that perhaps this certification thing is a bit overblown. If that was the intent then, in general, I think the author makes some good arguments. But, I didn't get from this article that the author discounted certifications, just questioned its overall importance in the grand scheme of things. Guarenteed, no matter how hard employers try, they will still get some turkeys. Certifications is just one aspect of risk management, but not all of them.

    I'm happy to say that I've never made a bad hiring decision in my life. For technical positions, in several hires I took on an All American Soccer player, a professional hockey player, a musician, and a factory worker, all with little experience and all with human traits that made them not just good, but exceptional employees. In our ever evolving dehumanized world, it is still as important as ever to consider the person and not to become too enamored with their certifications. But I digress ...

    Vick Ferrari 10/20/04 12:53:40 PM EDT

    Wow! So many good points in all the comments. "To be or not to be" Certified?

    I enjoyed reading the article, the Author made some very good points. I agree his thread comment was discouraging. Certifications show that someone can read the study material and mindlessly regurgitate from short term memory. They do not show that someone can develop software. I think a spot quiz at an interview that asks What is the main signature? does not prove a thing. Asking an interviewee to write a hello world program in notepad also does not prove anything. For Dave Howard, who comments on my Birthday, And if you can't write a hello world class from scratch using notepad, then you should be embarrassed, I say, You should be embarrassed for asking someone to code using notepad. (by the way there are 2 rs in embarrassed)

    I do not know of any developer who does not code with some sort of IDE. I have not written public static void main(String[] args) ever. Like most of my fellow software developers we cut and paste. We allow the IDE to correct syntax errors on the fly, we allow the IDE to insert the correct import statements, we allow the IDE to do whatever it can to allow us to focus our energy on writing top quality code.

    I have been on more interviews than I can remember. I now bring two books with me when I interview, Bruce Eckel Thinking in Java 3rd edition and Java 2 Exam Cram by Bill Brogden. During the interview I have opened the books and answered the interviewers question. I get some very strange looks, I do explain that the question they asked is right out of the book. I do not remember everything I read and spew it out like a genius, I do remember most of what I read and what book I read it in. Knowing where to find information is a key factor to producing good quality code. Knowing how to apply the information makes for great quality code.

    And for Leonid Ilyevsky, Iterator is great for going through the elements in a collection especially if you want to remove one, however using a for loop is possibly faster if you just want to quickly list out all the elements. I have not done any performance testing on this, but it seems logical that it would be. Personally I always use Iterator.

    I also would like to put in my own two cents. Until certifications move away from book knowledge (stuff that is readily available in a book) and more towards problem solving, we will keep having software products that do not meet the mark.

    I thank you for your time in publishing the original story and the time the readers take to read my own comments.

    Chris Smith 10/20/04 11:02:59 AM EDT

    The author makes an unjustified leap. The starting premise is that the SCJP doesn't test a lot of the things that make a good software developer; that is, of course true. The leap attempts to conclude that the certification is therefore useless, and it falls short.

    Perhaps the author is a fine developer, but it certainly is useful for this potential employer to know that they would be hiring someone whose knowledge of the Java language itself is a bit shaky. If an employer misinterprets the results of the SCJP exam, that's the employer's problem, not the test's problem. I interview for job positions, and it helps me to see the SCJP on someone's resume for an entry-level position. It's pointless for an experienced position, of course.

    Ditto others' comments about the SCJD and other further certifications.

    Leonid Ilyevsky 10/20/04 11:02:35 AM EDT

    In short, I agree with those who find knowledge of basics very important. I got my SCJP and SCJD in 1999 and found it helpful. Before coming to software business I did PhD in math, so I know how useful the fundamental knowledge can be.

    I want to specifically comment on John Jaster who says "... they are trying to substitute read-a-book learning for real world experience". I found that the opposite may be even more dangerous. The effect of "real world experience" depends on who you work with. We all know that the work done in many places cannot be described as "good practice". Young developers coming to such place may think that this is the way to write programs. And then, after a while, the not so good practice becomes a real disaster.

    I was recently interviewing candidates for a Java position, so here is a real life example. I asked the guy about collections, he was not sure what I was talking about. So I said, "Did you use maps or lists ?", and he said, "Yeah, we used lists for small number of objects and maps for big number". Why? "Because hash maps are more efficient than lists". I was somewhat puzzled by this explanation, so I asked him to write a few lines and show me how to go through the list and do something for every object. So he wrote something like:

    for(int i = 0; i < mylist.size(); i++) {
    Object obj = mylist.get(i);
    ....................
    }

    ?????????? What happened to iterators? No wonder lists are really inefficient in some places.

    Unfortunately, many candidates had very poor understanding of what the programming is all about. But I an sure they know their IDE. It also seemed to me that they were pretty arrogant coming to the interview without even opening the book, probably hoping that they will not be asked technical questions.

    I admit, one of those bad candidates was SUN certified. I don't know how he got that, it does not matter. I agree that certificate itself is not a guarantee of better quality. You still need to test people yourself.

    So, folks, please, open the book and learn. It will not hurt. Apply your own brain and use your judgment. Maybe real GURUs know everything even without the book (I doubt that), but GURUs cannot do all the work. Remember about junior guys next to you, teach them. They can be really helpful when they know the stuff. Otherwise you will end up redoing their work.

    Simeon 10/20/04 10:46:57 AM EDT

    I've passed the SCJP and I'm working on the SCJD. The SCJP will require some studying and it will require you to think like a compiler to pass. While these are annoying aspects of the test, having this certification is a good indicator that this person has been exposed to the fundamentals of the language.

    The SCJD is completely different and enjoyable test. You're give a specification and free reign to develop and employ algorithms and patterns to build the application conforming to those guidelines.

    Both certifications are indications that this person has been exposed to the language fundamentals and has the discipline to work through tasks given to completion.

    Competent employers should then evaluate these indicators along with other crucial design and creative skills to determine job fit. Having both certifications is no guarantee, but it is proof that this individual has put more effort into learning the language fundamentals than others who may not hold these certifications.

    All things considered, I'd rather have them than not.

    Jeffrey Haskovec 10/20/04 10:37:27 AM EDT

    No offense, but I wouldn't hire you here. I mean I hear you story about the IDE doing it all for you and those are the type of people that we have avoided. I have worked at a startup company for 5.5 years and I find if people can't answer basic questions about how things work in Java cause their IDE has done everything for them, they aren't the caliber of programmer we are looking for. We could care less about certification, but when I hear a developer talking about how he tries to avoid threads, it seems to me he doesn't have the required skill levels to work in our software. When doing swing you must be proficient in threads as you need to do all of your slow work off the main event thread or you wind up with unresponsive gui's. In the server we use threads all the time, to service sockets, and do background maintaincence operation. The developer here sounds more like the VB corporate developer than someone who can truely engineer our application. As for the certification, none of us on the team are certified, but we have our own questions that we ask developers when they interview. I have thought about doing the certification just to learn all the corner cases of the language not because I think it will help my career.

    Bernie Margolis 10/20/04 09:29:47 AM EDT

    This article raised some good points regarding the Programmer certification. The exam tests your ability to compile Java code, but that's what compilers are for! My initial response to most of the questions on the exam was, "I would never do that!"

    The article didn't make a distinction between the various levels of certification, however. I believe that the Java Developer certification is actually a useful gauge when determining one's ability to write code in Java. Any self-respecting software engineer should be able to write and document code given a specification. I view the Programmer certification as a weed-out step. If I were to consider certifications when making hiring decisions, I would require Developer certification.

    Bruce VanOrder 10/20/04 08:05:42 AM EDT

    I hate pop quizes at interviews... where they sit you down with a test paper and you fill in the blanks... etc.

    To me a true test is to sit a person down in front of a PC, test them by having them write some code for a simple app... like 'Hello World' or some other example.

    Look at what the person did, how they put together the pieces, naming conventions, etc.

    As many people have said, I agree that certification will help a person's self-confidence in a language, but that it should not go to their head. How they apply what they know is many times more important than what they know.

    In college, one professor did not want us to memorise the formulas for a final exam in a high level math class. She taught us how to apply and use the formulas.... hmmmmm

    With out the human element in any evaluation proccess, it is near impossible for any certification to measure how a person could apply JAVA syntax rather than know it.

    I will close with this definition of an expert ...

    "An expert is someone who knows more & more about less & less !"

    Now take a look around you and see how many 'experts' you work with !

    John Jaster 10/20/04 07:14:19 AM EDT

    My experience with certified developers has been so dismal over the past few years that I no longer hire anyone with a bunch of sun ceertificates. To me, it simply means that they are trying to substitute read-a-book learning for real world experience. I agree that the certificate exams concentrate on the stuff that a good developer should never write more than once, and most of the time simply look up and cut and paste. The hardest thing to find in a developer is someone who understands the value of simple, well designed, reusable code. Where is the exam that will test for that?

    David Huang 10/19/04 11:13:28 AM EDT

    For Java developer, I prefer hiring someone with strong fundamental of compsci + some knowledge of Java to someone with certificates. I always hire someone with degree in CS or EECS and better from top-tier schools as Berkeley, Stanford, Cornell, UCSD etc..

    Kean 10/18/04 11:28:08 PM EDT

    Totally agree with the William's comments. Unlike the UK , the scene is changing here in Singapore. More companies are looking for certification. I think it is harmful in the long run. Made my rant sometime earlier this year when I took the certification out of necessity ..

    http://www.webvertices.com/~kean/vertex/index.php?option=content&task=vi...

    dave howard 10/18/04 06:49:06 PM EDT

    I knocked out the Microsoft MCSD because it looked pretty easy. Mostly about which menu item in Visual Studio does what and that sort of thing.

    The SCJP and SCJD was much more difficult. Anyone who has those certainly has done some studying and some work. If I was hiring for Java that would certainly be a discriminator but not the main factor.

    That said, I doubt if either the Microsoft or Sun certs give you much help for a job. For example, MCSD won't help you get a job at Microsoft. Most likely they would laugh at you given that the MCSD exams are so stupid. I took a quick look at the Sun employment website and didn't find any callouts for 'certified' anything except an Oracle cert. They had quite a few Java jobs but I didn't see any that mentioned certification.

    And if you can't write a hello world class from scratch using notepad, then you should be embarassed. When I interview someone for a Java job, thats the first code example I ask for and if they can't do that the interview is over. Its pitiful how many people show up for a java interview and can't do that. Its a good way to get rid of the HTML posers.

    Damian FRACH 10/17/04 05:56:31 AM EDT

    I have to fully disagree with the article.

    1) IMO author shows typical GURU professional deformation:
    - author is not able to go through the basic documentation (SCJP, SCJD documentation)
    - because I have 5 years experience I have to be GURU
    - because I am GURU, no certification, degree or person can prove otherwise. Problem is always somewhere else, not in my self ...
    - I know one GURU and he does have not any certification, degree, zero team playing skills and he smells and he is GURU. On other site I know one guy, he has MSc, certifications, he wears a suit, but he is an idiot ... So what? Therefore we have to throw away all certifications and degrees???

    2) SCJP is about basic syntax and structures of JAVA: declarations, flow, operators, threads, collections, java.lang classess
    SCJP is NOT about: "Comment this section of code", "Rewrite this code to be self documenting", "How to avoid threading", "deadlines", "quality controls" and "maintenance".
    Then the SCJP would be called: "design patterns" or "SW development practices" or ...
    If you read at least one time the SCJP documentation you will know that !!!

    3) Arguing that as JAVA developer you do not need to know basics of JAVA threading, collections or String behavior is little bit unprofessional IMO.
    There are lot of jobs they do not require threading knowledge, but there are a lot of jobs they require.
    SCJP assures that a certified developer knows a BASICS of JAVA threading.
    (you know, what is the JAVA thread and you know 5 API methods and their basic usage ...; how it can be difficult for REAL GURU ???)
    Nothing less nothing more.

    4) Topics like "how to avoid threading", "message/consumer problem" or "semaphores" are design issues related to the concurrence and distributed algorithms. So they would be covered by certification, which would be called: "concurrence and distributed algorithms", but not definitely the SCJP.

    5) On other side the SCJD is about writing and documenting a client and a server for a small business system (core JAVA API, server thread model, RMI or sockets) (typical small client-server app with home made DB). Criteria are: "easy it is to use and maintain your code", "documentation", "object oriented design", "GUI", "locking", "data store" and "server".
    So you will write some smaller app, which will take you about 1-2 months. Then somebody will check if it is OK and you will pass.
    So MAYBE this certification will check in some way, what is the author looking for. Not definitely the SCJP.

    6) SCEA in some way focuses on general design patterns (GoF)

    7) "This attitude of irrelevance is confirmed by the statistics on JobServe". Huh ... That the certification is not mentioned in job adverts it does not mean they are irrelevant. Sometimes the degree is not mentioned too. Sometimes the driving license is not mentioned too. Lot of thinks are not mentioned. Employers are looking for professionals, who will do the good job. They are not looking on one site for "certification collector only" and on other site for "I am the GURU, certification is useless ...". IMO professionals do not have a problem to spend 3 weeks to pass the SCJP ...

    IMO the certifications shows:
    - you have minimal knowledge of the covered topic of the certification
    (e.g. you know, what is the JAVA thread and you know 5 API methods and their basic usage ...)
    - you are not lazy and you have enough discipline to stop talk about your GURU level and go 3 weeks through the 1 book and write relatively simple certification.

    Simple like that ....

    Certification is one of the way, how to improve and prove your knowledge and experience.
    Not the best, not the worst.
    Similar to a degree, experience on some OS project, training junior developers, writing a book ...

    IMO author just describes that one employer supposes that SCJP is something else then SCJP and the author starts to think in the same way .... Shame ....

    Damian FRACH

    1 year J2EE support team leader
    1 year J2EE support engineer
    3 years JAVA/J2EE developer (Forte/Netbeans)
    1.5 years Informix4GL/SQL

    IT MSc, MBA
    SCJP, SCWCD, SCBCD, SCEA (first part)

    I will never be a GURU. The way is too long and life is too short. But I will try the best ....
    The reaching the target is not important. The way you try to achieve is ....

    Philip 10/16/04 11:52:42 PM EDT

    I quote:
    "Instead I would like to see the exam concentrate on the process of programming rather than the code itself; to me you can be a first-class developer, without knowing all the grammatical details, by concentrating on clarity."

    Why the heck would Sun give you a test on software engineering? Sun has created a programming language, not business processes. The certification is to show that you can program in Java, not that you know how to use and IDE, arrange a few interfaces and comment code. Sure, these things are important, but they are irrespective of language. Commenting code and designing UML from descriptions and organizational charts can be done for software systems to be written in Python if you want.

    And with respect to avoiding threads... ?!?! Have you ever used an interactive debugger (i.e., in eclipse). There are so many little threads running around its unbelievable. Threads are your friends if you learn how to use, allocate and destroy them. Like vegetables, they are good and good for you!

    Thank you :)

    Alok Pota 10/16/04 01:04:36 PM EDT

    I think software development is also an art and like all artists that have a portfolio, a good developer should have
    a personal portfolio of projects, libraries and code tricks that he can share with the prospective employer. To me that tells me couple of things.

    1) The person likes to write code outside of work
    This is key because it tells that the person keeps
    himself updated and has the drive to explore without
    beign fueled by some certification.
    2) The coding style, patterns used.
    3) Any other technology used besides Java, which means
    The person has the ability to decide whats the best
    way to solve the problem (not necessarily using Java)
    i.e (using cron on unix instead of writing a custom scheduler daemon in Java re-inventing the wheel and wasting
    the employers time)
    4) Problem solving skills, what level of problems they
    encountered and how they went about solving them.
    5) Java know-how (what API's, 3rd party libraries they used and why)

    Certifications are not futile as they help you with #5 above.. but 1..4 comes from
    experience.

    William Knight 10/14/04 12:02:10 PM EDT

    There's a lot of good comment here. I'm really pleased to have triggered so much debate.

    It's true, of course, that you shouldn't be let loose on a Java program without understanding the use of collections or how string concatenation works in the extreme, and it is good that the exam tests for these things. I also learnt much from finally studying for the programmers exam and I did enjoy the experience; personal satisfaction is definitely a key thing here.

    Companies find it difficult to recruit developers. Technology moves fast and all too often the recruiter is not the most technical person at the company. They have a tall order deciding who can code and who cannot. The certification exams provide a clear delineation, but we must also be clear about what they show; book work, not practical experience.

    You have all heard of (and probably met) the certified developer who was next to useless. But equally we have met solid, experienced coders that need to look up which collection to use. The programming exam does not help this case and experienced developers are less likely to take the exams thereby risking embarrasment in interviews - because you really do need to study to pass even if you are experienced.

    In an interview, the company must check the OO design skills of the developer (use of patterns etc) and their general working methods, but alas, these are often missed out. I understand that the higher certifications test for these things by way of the project work, but with the demand for developers being so high (in general) these more advanced exams are very, very rarely sought after by employers.

    Oh, and hello Rhodri, nice to hear from you.

    m@t 10/12/04 04:35:56 PM EDT

    Studying for something you don't need is a waste of time. Why not just put your free time to use on an open source project? It looks better on a resume.

    Jason Kilgrow 10/12/04 11:33:52 AM EDT

    I've been a Java developer for 5 years without a certification. Recently, I've started studying for the SCJP and I've learned A LOT of things about Java that has made me a more conscientious programmer. For instance, before I started my studies, I never thought that memory leaks could exist in a GC environment like Java. But, learning that it can happen has made me be on the lookout for such sublte traps.

    As far as IDE's go, personally, I can't stand any of them. I would rather have an plain text editor (I use UltraEdit) and a command line build tool (Ant). I just don't trust the code that comes out of something that I don't have 100% control over. I've tried Eclipse and I've tried Netbeans and they actually slow me down. Maybe it's a learning curve thing, but I'm just more comfortable without an IDE.

    Rhodri Woolcock 10/12/04 10:26:16 AM EDT

    The Java language does an excellent job of abstracting low level technical matters away from developers
    allowing them to concentrate more fully on solving the business matter at hand.

    I think the greatest skill in OO programming is knowing how to notionally decompose a business problem into clearly defined managable chunks. Skills like design and naming play a crucial role in breaking down the business problem and subsequently producing maintainable enterprise application code.

    Nevertheless programming is a technical discipline, so an understanding of the low level technical concepts is also essential. This is what the SCJP exam brings to the table even though, admittedly it does come with a mass of superfluous stuff too. Martin Javorek makes a valid point when he says
    "How you want to design your applications, if you don't know, what happens when String objects are concatenated thousand times per minute?"

    As an aside for my own sanity, are you the same William Knight that I worked with in Thames Water, Swindon in 1999?

    Carl 10/12/04 09:58:19 AM EDT

    The post by Mohan is also the right attitiude to have otherwise you will never get through the SCEA, JCP was a cakewalk compared to SCEA, not the exam, that was easy, but preparing for it, OH Man, 20 books is about right and loads of other tutorials and articles to boot, anyone interested in certifications should check out groups.yahoo.com/scea, scjp, etc, loads of materials and information from people who have been there done that....

    Carl 10/12/04 09:51:20 AM EDT

    Hello All,
    Firstly i would like to say that if you are doing a cerification to get a beter job, forget about it, more money, forget about it, BUT personal satisfaction, knowing you know a lot more than you did before, :) YEAH!.

    I am a SCJP and an SCEA, with 7+ years of exp in IT and Java and although i woudnt say that it was all thanks to cerifications, they helped me hone my skills, clear my fundamentals, and lets face it guys, its all about the fundamentals, YES i agree you need not know the API pat or know exact method signatures, who does, BUT fundamentals is what distinguishes the good from the average, and fundamentals is what preparing for the exam gives you.

    So to anyone out there thinking about certification, i would say do it, its definately worth the time and effort.
    You get to hone your fundamentls, learn the intricate stuff, brush up what you already know, learn a few tricks, avoid common mistakes, etc. All for you, not the job, not the money, for you, and technology :)

    dg 10/12/04 04:30:03 AM EDT

    Of course a certification doesn't imply a good programmer. But rather than denying the value of a certification, admit that you don't know the language as well as you should. You've been relying on your extensive experience as a crutch to skim over the details. Go ahead and study for the certification - it can only help.

    HM 10/12/04 03:58:51 AM EDT

    I don't agree with the article.I am an SCJCP and recently did SCWCD.Career wise I don't know the value addition but I certainly enjoyed working for it because SCWCD makes you think and forces you to understand the basics of web application building.
    As for SCJCP,How can you use Collections if you are not aware which ones exist for what?I recently did a project with a programmer who had a C background.There were lots of places where his coding was futile because he was not aware that the functionality, already existed in the language.
    You are certainly not going to be promoted or hired because you are certified but it will certainly open your eyes to aspects of the language you were previously unaware of.

    Mohan Radhakrishnan 10/12/04 12:54:21 AM EDT

    Actually I am not sure if IDE's have such a bad effect on programmers. I am a scjp, scjd, scea and scwcd. I did this to learn the technology because the projects were not interesting. There was no advantage apart from that. My focus wasn't just the exam. The implementation is more important than the test. Let me give you an example. I studied around 20 books including the recommended ones for the SCEA exam. Refactoring, UML modeling and almost all Addison Wesley's object series books. As you know this is not relevant for the exam but the exam was only a side-effect.

    Rafiq 10/12/04 12:22:01 AM EDT

    Not completely true, but to some extent. I have 10+ yrs of software development experience and 6+ java experience, but now i am planning to take scjp and when i started preparing learnt quite few things in java which i dont know before. when you prepare for the exam you sharpen your java language skills, stay ahead of others, even helps while coding, doing performance related stuff, etc.

    Put aside of certification values in the industry but you can assert yourself of your java knowledge because of the certification.

    joe smith 10/12/04 12:19:23 AM EDT

    having recently had to find a new job, i have gone through the "stump the chump" interview sessions more times than i care to think about. i'll be the first to admit that i am not a java expert. and while i may not know the answer, 13 years experience with a wide variety of platforms and languages makes me certain i know how to find the answer.

    i haven't memorized method signatures and which packages contain what classes - and if i had, i probably wouldn't have room in my head for any knowledge about how to accomplish anything. hiring someone you don't know is a crapshoot under the best of circumstances. whether or not they can quote chapter and verse is a poor indicator of how successful they can be as a member of your development team.

    Bruno Collet 10/11/04 06:03:29 PM EDT

    It is absolutely true that SCJP has no relevance to real-world programming. In contrast SCEA (architect), SCMAD (j2me...) are interesting; they avoid the so-called "javadoc" and "human compiler" questions in favor of higher-level questions such as the use of different APIs and technologies according to a given situation. What is really lacking in all Sun certifications is a general algorithmic test. Every professional programmer should be more concerned in sorting, searching, data structures and the likes than into knowing what are exactly the arguments of a Swing listener method.

    Todd Rimes 10/11/04 05:43:52 PM EDT

    At a dot-com for which I hired the development team, I had one developer who was a SCJP. He was absolutely the worst of the bunch and the first person I ever had to fire. I have since obtained my SCJP, just in case it made a difference to anyone, as a freelancer. It has made NO difference and, in one interview, actually inspired doubt in my interviewer, so I had to take HIS test, too (I got the job).

    Getting certified is a time-consuming and sometimes expensive proposition. The statistics I've seen say it's not worth it.

    Martin Javorek 10/11/04 04:14:19 AM EDT

    I don't think so. I think that this can't be generalized as many other themes too. Yes, that's right - we have now many IDE's and they make code for us, they compile it for us without any special big effort, they provide code assistants for us... But - I'm working as Java team leader for 2 years and as Java programmer for 6 years. I have met many programmers and many their "pieces of work", where the easiest way to repair it was press delete button on Java class or package (note that I'm familiar with refactoring techniques). They don't know the basics of language. They sometimes excellently knows their IDEs (it's cheering), but they make big mistakes on the lowest level of language (e.g. expressions or memory management). Yes, Java certification (Java Programmer) is pretty difficult and there is no doubt, that you will meet many "unusable" things there. But I think, that there are many very usable things too. And my opinion is: "How you want to design your applications, if you don't know, what happens when String objects are concatenated thousand times per minute?" As someone, who is participating on hiring new java developers, I can say, that Java Programmer Certification is for me a little knowledge proof of Java basics. And it can be interview benefit.