Screening Java Developers

Despite dozens of new programming languages coming up in the 25 years since Java was first released in 1995, the demand for Java developers remains strong. In fact, Java is still among the most in-demand programming languages on the job market.

With the power of the Java Virtual Machine (JVM) behind the platform, a great Java developer can build distributed web applications and sophisticated desktop applications that can run on any platform.

According to a study by Indeed, Java Developers have the lowest career-switch rate (7.5%).

For companies to grow, they need to be careful about the kind of candidates that they attract, screen, interview, and hire. Since Java has been used by so many companies across the globe for so many, there are way too many candidates who list Java on their resume as a skill. To identify the right Java developers for your company, you need an effective hiring process.

Good Java developers have the following technical skills:

  • Strong object-oriented programming fundamentals
  • In-depth knowledge of J2EE and JVM
  • Ability to write clean, readable and optimized code
  • Ability to fix errors and bugs
  • Hands-on experience with query handling

As an IT recruiter, what should you know about Java?

  1. Experience with Java frameworks and libraries in the Java ecosystem is potentially as important as knowledge of the programming language if not more. For e.g. most global banks need Java engineers to have experience with Java, Spring, and Hibernate. They also have a strong preference for a solid understanding of multi-threading and design patterns.
  2. Java 10 is the open-source reference implementation of the Java SE 10 platform. Java is constantly updated, so if your candidate worked on Java 5 years ago, they might not be the best candidate for the role. A candidate working on the Java version released in 2008 may not be skilled enough to work on Java in 2020.
  3. You do not learn Java at university. While formal education in computer science helps you build a solid foundation of fundamentals, that is very different from having hands-on Java coding experience. The projects (commercial or hobby) that the candidate has worked on are much more important than where they went to school.

Here are the key benefits of Java:

  • Java is platform independent. The language is compatible with all platforms and devices, from mainframe data centers to smartphones. Its compiled code – bytecode – can run on almost any platform without recompilation.
  • Java is object-oriented. It enables you to build modular programs and reuse the code.
  • The language is easy to learn, write, compile, debug, and thus is good for beginners.
  • Java is the base language for the Android operating system.
  • As a mature language, Java is more stable and predictable than other programming languages.
  • Because of its popularity worldwide, Java has a large active user community and support available.
  • Java’s powerful development tools such as Eclipse SDK and NetBeans offer an integrated development environment and have a debugging capability.

What is Java SE and Java EE?

Java SE refers to Java Standard Edition. It is used for development and deployment of codes for the desktop environment.

Java EE refers to Java Enterprise Edition, which is built on top of Java SE. Java EE provides an API and runtime environment for developing and running a large-scale application.

What skills do Java developers have

Data structures

All developers, irrespective of experience level should have a very strong understanding of the basic data structures (String, Array, List, Map, Set, Vectors, and Matrix) since they are the fundamental blocks of programming.

Object oriented programming and Design patterns

OOP is, by far, the most common programming paradigm used in the IT industry. It allows to build a program keeping the structure of entities like in real life, making it a good way to model and organize very large applications.  

Design patterns are programming language independent strategies for solving the common object-oriented design problems. Since Java is object oriented, good Java developers are experienced in the implementation of object oriented design patterns and can architect their code effectively in an OO way. They should have an understanding of and having experience design patterns like Singleton, Factory, Iterator, Builder, Object Pool, Fly-weight, Strategy, Visitor, Composite.

Multi-threading

Senior Java developers should have a good understanding of concurrency and multi-threading.

JVM and Memory Management

Senior Java Developers need to have a strong hold on runtime, and how garbage collection works. They need to understand when memory is allocated, from what context and how that affects heap fragmentation. Memory leaks/ errors are common, especially in data intensive applications. They need to be able to read code, understand memory vulnerabilities, fix them and improve performance.

They need to be familiar with the various garbage collection algorithms, and how to use profilers. Senior developers should know how to optimize it, and when it is triggered.

SQL

Almost all Java developers need database knowledge. Even if they are junior developers should have a strong foundation of SQL basics: queries, inner and outer joins, aggregations, joins, triggers, cursors etc.

Libraries and frameworks

Java doesn't work in isolation, but is supported by a strong ecosystem of libraries and frameworks. Depending on the role, Java developers need to work with Struts, Spring, Hibernate, Gradle, Maven, Ant, JUnit, Spock among others. Asking a Java developer which frameworks they have previously worked with gives a reasonable understanding of how much time they have spent working on Java.

Algorithms

Depending on the role, developers might also require algorithmic skill.

Communication skills

Often the difference between a strong developer and an average developer is that of communication skills. Developers should be able to communicate their ideas, and be able to work with and mentor other developers.

In addition, if a job involved networking or distributed applications, they would need knowledge of Protocols like IP, HTTP, TCP, FTP, UDP, Sockets, RMI and RCP.

For a role that involves working on Java UI, the candidate should have worked with Applets and frameworks like Swing, SWT, AWT or JavaFX.

If the job is related to Java based web applications, the candidate must be good at:

  • JSP / Servlets
  • Service Oriented Architecture / Web Services – SOAP / REST
  • Web technologies like HTML, CSS, Javascript and JQuery
  • Web frameworks like Struts / Spring
  • Markup languages like XML and JSON

The Java ecosystem is rapidly expanding: they should also be willing to step out of their comfort zone, learn new technologies and embrace challenges.

Is a Java certification representative of skills?

The official Oracle Java certification certifies developers on Java skills. The certification represents that the candidate has a base set of skills that would enable them to develop Java software. There are 2 levels of the certification.

Oracle Certified Associate (OCA): This is the entry level certification. It tests for a foundational understanding of Java, and programming basics. It tests the basics of the language (data types, variables, arrays, classes, loops, methods, exceptions) and slightly more topics (explicit casting, implicit narrowing, autoboxing, nested classes, OOPS, polymorphism, inheritance, abstract classes and interfaces, and APIs to deal with collections, strings and calendar objects).

Oracle Certified Professional (OCP): This certification demands a higher level of knowledge and Java skills. The questions tests for more advanced topics like design patterns, I/O, multi-threading, concurrency, JDBC etc. This certification typically represents atleast some hands-on experience with Java.

How to assess Java skills  

Screening developers is tricky, since an estimated 85% of candidates lie on their resume.

Recruiters typically use online screening tests like the Java Online Test to do the first round of screening and shortlist the top 20% qualified candidates that they can present to hiring managers/ clients.

Here are a few sample Java questions, you can include similar questions on your coding test to test for relevant on-the-job skills as opposed to theoretical knowledge. And here's a quick guide on how to set up an effective coding test.

More and more companies today are moving to coding tests to evaluate Java skills. If you haven't used a coding test before here is how it works:

  1. Setting up the test: You can use a skills assessment platform like Adaface to set up the coding test or you can set up a coding test manually. If you have only 3-5 candidates who you want to evaluate and it is a one time use case, setting it up yourself might be a good idea since you don't have to spend time researching the different tools yourself and picking. This however can become extremely time-consuming when you have hundreds of candidates because you/ your engineering team would have to evaluate each candidate's solutions manually. Additionally you might not have in-house expertise to evaluate Java skills. This is when using a third party skills assessment tool comes into play. You can also combine the Spring test, Hibernate test, JavaScript Online Test etc to create a custom test for your role.
  2. Inviting candidates to take up the test: Once your test is set up, you can invite candidates who apply to complete it. All assessment platforms have the feature to invite candidates from the dashboard.
  3. Evaluate and interview: Once candidates complete the coding tests, you should move fast and interview software developers who do well on the assessment.