Get More Stuff

How to hire & assess Java developers accurately ?

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.

Why Java?

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.

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.

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.

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.