As simple client/server applications moved to a service-oriented architecture and as enterprises are now moving to cloud architecture and mobile applications, Java has continued to be a major force in enabling these technologies within these enterprises.
The problem arises when you want to hire developers who have proven Java skills. How do you assess them with accuracy when you have no clue how Java works or have never worked in it?
If you want to hire a developer who knows Java but doesn't know how to develop good quality code in a reasonable amount of time, then proceed with the Java APIs and programming tests.
If you want a decent developer, then forget about a paper-pen programming assessment and just talk to them about how they would go about building solutions and the tools they would use, and you'd better use an online assessment. Ask them about frameworks they know of and what their strengths and weaknesses are as developers.
Awareness of different IDEs, build tools, test tools, and documentation skills would also be worth querying. If you want quality software, it's important that they know the "why" and the "how."
Does a resume by itself represent the actual skills of a candidate? If not, then how can you screen the candidate?
“I've seen people without degrees who could write incredible algorithms and could quote Knuth by heart.”
How can you find the right Java developer for your organization?
In this post, I will discuss the best practices we follow while hiring and screening Java developers at HackerEarth. But before I begin, here’s a little primer.
Java is the closest thing to a Lingua Franca (idiom meaning “Common Language”) in the IT industry. Everyone who has used it once is likely to stick with it. Java is a computing platform used for portable codes for desktop and server environments. In simple terms, it helps develop an application and share it cross-platform. It's an object-oriented programming language which comes with the niche facility of a just-in-time compiler.
What do you need to know before you hire a Java Developer?
Since Java is so often used in every possible application in IT, it is essential to understand that learning at college or getting basic certifications are hardly useful unless the recruitment is for a beginner's role.
Java is changing almost every year and with new build and framework releases, hands-on experience in the latest or required libraries and framework should be the priority. These libraries contain pre-written essential required functions; you can save time by not having to rewrite anything.
A candidate working on J2SE 5.0 released in 2004 may not be knowledgeable enough to work in Java 8 released in 2014.
Before we begin discussing the Java developer online hiring process, it is essential to understand the common terms used in Java hiring. Many of these terms are often used interchangeably, and I will be sharing only the important ones.
Check out this amazing glossary of all the Java terms here .
What is Java SE and Java EE?
It refers to Java Standard Edition used for development and deployment of codes for the desktop environment.
Java Enterprise Edition is built on top of Java SE. Java EE provides an API and runtime environment for developing and running a large-scale application.
What certification can you expect?
Most candidates today, who see themselves as skilled developers, are certified in Java. But what are the various Java certifications and what do they mean?
Oracle has 4 levels of Java certification that certify you in different levels of expertise.
The table below represents the four levels and the certification and associated skills.
|Oracle Certified Associate (OCA)||Oracle certified Associate, Junior Java SE 5,6,8||Fundamental skills|
|Oracle Certified Professional (OCP)||Oracle certified Associate, OCAJP 7, OCAJP 8||Implementation, Basic of web development|
|Oracle Certified Expert (OCE)||OCPJP 6, OCPJP 7, OCPJP 8||Web Development, API, Enterprise, Server Faces, Web Services|
|Oracle Certified Master (OCM)||OCEJWCD 6, OCEJWSD 6, OCEJSFD 6, OCEEJBD 6, OCEJPAD||Architect, Designing, Enterprise edition technology|
* Only Oracle certified candidates are considered to be Java certified.
List of common concepts on which candidates are evaluated in a Java hiring process
- OOP Concepts
- Abstraction (Interface, Abstract Class, implements)
- Encapsulation (access modifiers - public, private, protected, default)
- Inheritance (extends, super)
- Polymorphism (overloading, overriding)
- Core Java Concepts
- Variables, Scope of Variables, Autoboxing/Unboxing, Constructors, Operators, Input, Output, Conditions, Loops, Methods, Arrays, Objects, String APIs)
- Advanced Concepts
- Packages, Interfaces, Inheritance, Polymorphism, Exceptions
- Java Generics
- Collections/Data Structures
- Lists, Maps, Arrays Lists, Sets
- Inner Classes
- Static - Keywords
- File Handling APIs
- Network APIs
- Garbage Collection
- JVM Architecture
- Spring, Hibernate
- (Synchronization, Thread, Runnable)
- Experience in web services (REST and/or SOAP)
- Build tools - e.g. Ant, Maven
- Lambda Expressions
- J2EE, EJB, JSF
Irrespective of this detailed list, there is no definite fail-safe way or approach to judging a candidate on these parameters.
Assessing a Java developer
Screening is often considered tedious, time-consuming, and still frequently inefficient when you are trying to find the right candidate. You may source 500 or 1000 resumes for a job, but what is important is getting the most suitable candidate for the job.
Over a period, I’ve realized that any Java developer candidate can be screened based on the following two challenges:
- Simple algorithmic challenge
- Application development
Simple Algorithmic Challenge
Despite some really amazing sources available for more detailed testing, many firms still prefer using simple algorithmic challenges to assessing the job aspirants.
The candidate is provided with one or many programming problems which have to be completed within the stipulated time. The solutions are usually judged based on the test cases, time, and memory efficiency.
Each programming challenge taken by candidates is evaluated for its accurateness, time, and space complexity by the technical team.
Unlike automated scoring, human raters could bias test results in different ways.
Tools like HackerEarth - Recruit help you test candidates with minimum human intervention.
Recruit challenges candidates using questions from its extensive library while also providing flexibility to enter questions of the recruiter’s choice. A candidate can be tested on various programming skills through multiple-choice questions, subjective questions, programming questions, golf questions (Problems which are solved in the least number of steps), and approximation questions. The solution to these questions is automatically evaluated based on defined criteria.
A sample Golf problem statement for assessment:
Application Development - Java Multiple File Project Challenges
Real-life problems do not come with a problem statement. Developers usually deal with problems of finding the right framework or editing a broken patch in a program while coding.
When it comes to hiring senior-level or experienced Java developers, it becomes very difficult for recruiters, as well as candidates, to demonstrate their knowledge and skill through a simple programming challenge.
A full-fledged application challenge is used to test a candidate's capability of developing a complete Java application. He or she has to apply theoretical knowledge and practical skills to get a complete application running. The candidate must know enough about the framework and libraries to survive the screen test. The solution is then assessed manually using JUnit and by creating custom test cases.
HackerEarth Java Multi File Application helps you assess candidates on application-building skills. Similar to Algorithmic challenges, you can test candidates by using questions from the Recruit library or via a custom library.
The application feature helps a recruiter to check candidates' know-how by requesting them to develop an application from scratch. Or the recruiter can choose to partially share an application feature and ask them to complete the rest as part of the assessment.
Benefits of using a Java Multifile Project are the following:
- It can be used to test hands-on programming skills rather than just algorithmic coding knowledge.
- Candidates can actually relate the problems to real-life scenarios, which makes problem-solving interesting.
- JUnits help in testing the entire code flow and not just I/O. Output matching is flawed and can even be achieved through brute force. JUnits on the other hand, if written properly, can test the entire code flow of the candidate.
You may have realized while reading this lengthy article that the best approach to assess a Java developer is not via conventional approaches but via new technologies for effective assessment.