Only 32% of Java developers really know Java
prostoalex writes "Research firm Gartner draws attention to the fact that less than a third of people who put Java on their resume actually know their stuff. The knowledge gap between someone who can successfully write a System.out.println() and someone capable of designing and implementing a complex Java system brings to companies being back-logged with pending projects."
Java was the popular thing of it's time. If you didn't know it at the apogee of the internet bubble, you didn't get a job in the computer idustry; it's a lot easier to say that you know it, and hope that you never have to use it. I for one hope that I don't have to write Java code again...
.NET - buzzwords rule the market from the big business' point of view.
Now things are pointing similarly towards C# and
However, those who really know their stuff normally stick to the older languages... hype is good in some ways, but in the grand scheme of things, it's the older, better stuff that will prevail.
My real world experience tells me it is much less than 32%. 15% at best (though another 15% THINK they know java - this is where the real danger lies).
If you require knowledge of complex topics like sensible J2EE architecture or multi-threading it falls into the single digits.
The second half of the article recommends Model Driven Architecture for the masses as the solution. This amounts to putting complex tools into the hands of idiots. Tools that go out of their way to keep people ignorant, while simultaneously giving them the power to commit their sins on a grand scale. Brilliant.
dhk
On the other hand, most of us mortals don't store all the details of API's in our heads. Back in the Stone Age we used manuals and in the Information Age we use the SUN Web site. If your interview objective is to see how someone would get the information to solve the problem, that is fine, but if your objective is to see if that person already has some narrow set of information, you are going to exclude some capable people.
I am mainly a Delphi developer (I should say a Delphi component developer), and my Java experience is only 4 months old, and gee, my Java experience is limited to using JNI to allow a Delphi ActiveX component to invoke an extension module written in Java and using a class loader so that extension module can be reloaded while the ActiveX component is still running.
I don't know the answer to your question about Java collection objects without looking it up, although I have enough sense to know that you have to use Object wrappers for value types in collections and then have to cast those objects back to their original types when you pull Object references out of collections -- I know that from "wasting" time reading Slashdot.
I guess I would fail your interview.
Was I the only one that got the feeling that they were trying to sell me OptimalJ? Although I agree with the lack of "skilled" Java develoeprs I really can't their numbers seriously as they are quite lacking in the credibility department.
-----
One is born into aristocracy, but mediocrity can only be achieved through hard work.
I have been on both sides of the interviewing table, and in my experience, the best technical interviews are language-agnostic, regardless of what language is used in your shop. All of the questions that I ask start with "here's a programming problem, now solve it in whatever language you want". I am more interested in seeing a person's thought process as they go through the steps of solving the problem than their syntactic recall for a particular language.
My rationale is that a software developer who has excellent problem solving skills can transfer their skills to any language. However, someone who knows the syntax and tricks of a language cold may or may not be a good problem solver.
The only exception to this is that if I want someone with OO skills, I will ask language-agnostic questions about OO design and development concepts (ex: define polymorphism, state why it is useful, and give an example of how it can be used).
Also, a question that "tricks people into trying to store a primitive in a collections object", doesn't seem like a very useful question. First, you are testing for knowledge of a Java syntactic quirk. Secondly, even if a person didn't know about this quirk right off the bat, any developer worth their salt certainly would figure it out the first time they tried to compile the progam.
In fairness, I do like the question about determining if a bit is set, although I wouldn't hold it against the person if they didn't have the Java bit operators memorized. As long as they understood the CONCEPT of bit manipulation, I'd be happy.
------
www.moneybythenumbers.com
I've been writing code for (thinks) over 20 years now, and whatever the language I always need to make extensive reference to documentation for simple things like names of API calls and order of arguments. For instance, in spite of writing C for over 20 years, I still need to refer to the man pages to check the parameters for fopen. Any employer who expected me to write code at an interview and get the syntax correct would be in for a big disappointment.
So I have a big problem with syntax. That's why I like Scheme and hate C++. To me, syntax seems like a silly arbitrary distraction. I wish more languages took the Smalltalk approach to function arguments, too.
I'd have no problem with questions about architecture, abstraction, the development process and design trade-offs though.
GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak