How To Screen Java Developers' Skills
March 09, 2022
March 09, 2022
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 conducted 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.
Here are the key benefits of Java:
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.
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.
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.
Senior Java developers should have a good understanding of concurrency and multi-threading.
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.
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.
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.
Depending on the role, developers might also require algorithmic skill.
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:
The Java ecosystem is rapidly expanding: they should also be willing to step out of their comfort zone, learn new technologies and embrace challenges.
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.
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:
Deepti is a co-founder at Adaface. Her online persona is extroverted, but in real life she is terribly introverted and you can startle her just by calling out her name.