To call yourself a competent Java programmer, what should you expect of yourself and what should others expect from you?

Does anyone have ideas for a project or problem that would help measure someones "java-smarts"?

  • 3
    Is Java pass-by-value or pass-by-reference? ;)
    – MalsR
    Mar 1, 2012 at 23:57

2 Answers 2


Hi Jozefg some of my thoughts, I believe if one considers to be a compitent Java Developer then I believe one should,

I think there are other non language/technical related aspects as well such as having read at least a few books such as Effective Java (JBloch), Code Complete (uncle bob), Pragmatic Programmer, Head first design Patterns are few that comes to my mind. I think there is no such thing as a silver bullet and all can have different views or opinions on this, Hope this helps.


I believe a competent Java developer should know the fundamentals of object oriented programming, as well as the following items:

  • Access Modifiers: Know what "private", "public", "protected" means and when to use them to communicate to others whether or not your method is being used by other packages or classes.

  • Data Structures: As MalsR suggested, know the Collections framework and when to use a specific data structure. Don't get stuck in using just ArrayLists.

  • Frameworks: Know how to use the framework you're using. For instance, if you're using Spring security, know the documentation and follow the examples from that community on the best practices.

  • Know Client-Side Languages: NOTE: This is critical if you work on Web applications!

Most importantly, don't get stuck on just Java. I see too many developers who work on web applications who can't write clean HTML/CSS or JavaScript.

While it's not important that you be able to write this from scratch, you should at least know enough to where you can make changes to existing HTML/CSS and JavaScript without turning it into spaghetti code.

HTML/CSS and JavaScript is the language of the web. If you're a C#, Perl, PHP, Python, nodeJS, or ColdFusion developer, and you're writing applications for the Web, then you're going to need to know some client side code.

Additionally, learning another language can help hammer home some important concepts that can even help you in Java.

In my experience, most of the Python developers I've met seem to do a great job of not just learning Python, but also they can hold their own on the front-end! Perhaps this had to do with them being contractors rather than employees of a larger company. As contractors they had more individual responsibility for bringing the client and server side components together.

Those individuals were able to take advantage of more opportunities because they had more transferable skills.

Not the answer you're looking for? Browse other questions tagged or ask your own question.