When potential employers ask you to rate your Java skills (1-10), how do you come up with an answer?

Is it basically a matter of listing the major language constructs, and then gauging your command of that aspect?

Edit Java was just one of the questions, they asked other things also like jsp, sql, etc.


I always find this difficult, also. Particularly with something like Java or .net, where expertise could be in the language or in an API like Struts, Spring, ASP.NET MVC, J2ME, .net mobile.

I usually go for:

  1. I know of it, a little bit of syntax and would be able to learn it, but to do most things I need a book.
  2. I can write stuff with the standard language features (i.e. basic console apps).
  3. I can write stuff including GUIs in this language.
  4. I can produce something functionably useable with this language including GUIs. I've used system APIs (C/C++ etc) or extensively the default runtime.
  5. I have started to use non-standard APIs with the system, such as Eclipse RCP etc. I still need books to use these, but I can do it.
  6. I know at least one non-standard API pretty well and have a basic understanding of the inner workings of the language i.e. compilation, what rt.jar is etc. Or, I've written an API in the language that is being used by my team / company (not just yourself...)
  7. I know a fair few non standard APIs pretty well, without the need for frequent book access.
  8. I know a lot of non-standard APIs pretty well. I can also integrate this language with others and have used it on multiple platforms for large projects in different settings.
  9. I've done something with the actual language development itself
  10. I've written books on it and am considered an industry expert. I might even be consulted if LANGUAGE 2.0 were to be written.
  11. I wrote it.

Using this rating, I think the scale of development project you've been involved in goes up with the numbers, too, which is also the point of defining things this way. As has been said above, proficiency with the language itself is not enough; one needs to understand tools and techniques outside the language. This is the system I use for doing that and for judging how I'm doing learning a language.

Edit: from my own comment, I'd rate most of my own skills in the range 4-6.


If the potential employer doesn't tell you what 1 and 10 mean to them, you need to ask them, or tell them your own scale. There's no possible way to answer this kind of question otherwise. For Java, the scale should be something like 1 = "took one course as an undergrad that used Java," 10 = "I'm James Gosling." You're somewhere in between. Only rate yourself a 9 if you've published a book on Java.


Knowledge and proficiency with language constructs alone is a pretty poor measurement of one's skills with a particular language.

You may want to take into account knowledge of frameworks and how to use them, especially those that might be needed in that particular job, &c. Furthermore whether you are able to design and structure a solution to a problem using object-oriented techniques might play into this as well.

Just saying ?I know what an if statement looks like.? is hardly a candidate for a good self-rating there. In my experience (however limited it may be at this moment) syntax of a language is far easier to grasp than the standard library, how to use it and what common idioms are required to actually know the language.


It's totally subjective.

Do you consider yourself a great master of the language? Feeling arrogant and full of yourself? Give yourself a 9-10.

Do you think you're average to above? Feeling modest? Give yourself a 7-8.

Java's got a lot of APIs. Personally, I would suspect anybody who claimed a 9-10 over the whole thing. Do you mean just Java SE or all of Java EE? What about Java ME?

I'd immediately ask anybody who claimed 9-10 to start talking about threading.

If I were to rate myself, I'd say I'm a 7-8 and a poor Swing developer. I know Spring pretty well, which is over and above Java but pretty important for what I do.

Whatever you say, just be ready to back it up if you're hired. It won't sit well if you bill yourself as a 9 and end up staring at your IDE for half the day. Make sure that your assessment matches your productivity.


It depends on who is asking. If it is a hiring manager from some ABC consulting you might say 9 but if is James Gosling it could be quite different.



What else do you need?


I believe that you may not evaluate one's skill in a language, except as others already said, by the knowledge of tools and/or frameworks, plus the subtiles of the language itself.

I think this is a very subjective question, as ones would say that one needs to know this, can do that, and others would say the total opposite right after.

In anyway, what I think may count the most is what skills one has for the job you need to get done. Then, perhaps reading his résumé, notice the kind of project this one has worked on, and for how long he's been doing what he was tasked to. This could give you a good approximative idea of his skill.

But once again, perhaps looking to the technical environment the man/woman has worked into, what other technologies he had to deal with etc. I guess you get my point there.


EDIT: I misread your question... Thought you were looking for potential fun interview question to rate a Java programmer (I always like to start with the very basic).

How do you rate people with knowledge of third-generation language that use bracket-style C-like?

Ask them the difference between:

if ( a() && b() ) {...}


if ( a() & b() ) {...}

(not that it is good practice, that's not the point)

I used to ask that to people I was interviewing for a position at a startup in California. 8 out 10 didn't know the difference.

Sure, it doesn't tell if you're dreaming about the Schlaer-Mellor Object-Oriented analysis method but it's still a pretty sad state of affair.

Let's not talk about bit manipulation, that's a long lost art :)


Give them a link to your StackOverflow profile :) Your points and questions answered will be a good indicator of your guruness :)


Fluency with a language goes beyond syntax, thought it certainly includes some minimum standard for the syntax. I'd be concerned if a developer claims to understand generics but can't state an example for generifying a method.

I'm much more concerned with whether someone understands semantics (e.g. hashCode and equals) and the potential business meaning of such things (if two domain objects are Java equals, are the necessarily the self-same object if the domain objects can cross distributed systems?).

Knowledge of particular APIs is important insofar as whether it would help determine the fit between interviewee and the position.


It's a nonsense question. Hopefully the employer isn't thinking of using the information directly, but perhaps is looking at how you see yourself in relation to your peers (this may be very hopeful). There's got to be some kind of scale.

Consider undergraduate degrees. It should be a relative piece of cake to map degree classes to marks out of ten. BUt is a narrow third, a 1/10 or 3/10? Is a first equivalent to 10/10? Do we keep the same distribution across all uses of marks out of ten?

It might be more useful if employers asked for a percentile in a given population.