How To Hire A Java Developer
Taking the traditional approach to hiring Java developers—relying solely on CVs and coding tests—is an outdated method doomed to fail. It overlooks creativity, passion, and fit, integral factors that indicate a developer’s true potential. My experience in building award-winning tech teams across multiple continents has taught me a different approach. Look beyond the CV and code, and focus on in-depth behavioral analysis, project management skills, and cultural fit.
Thank you for reading this post, don't forget to subscribe!Java is a computer programming language similar to C++, but it was created later and is considered to have the advantage of being easier to use while enforcing an object-oriented programming model. Java can be used to create everything from android apps to websites and even complete self-contained applications that may be distributed among servers and clients.
The current demand for Java developers is huge and there are only so many skilled Java developers available in the marketplace. Average salaries of a Senior Java Developer around $110k per year in the USA however that can vary per region.
Hiring the right Java developer can add an important asset to your company. While hiring the wrong developer can not only be a costly mistake but harm the morale and productivity of your whole team.
There are a lot of Java developers on the market, as is still a very popular programming language today. Around 15% of all computer developers are currently programming In Java.
Java is used in everything from open source solutions to large-scale proprietary enterprise systems employed by blue-chip technology companies and banks.
However just because there are a good number of Java developers available does not mean they are abundant! Although there are a sizeable number of developers programming in java, the demand for good Java developers is also higher than ever. Below we are going to provide you with 4 important steps to give you the best chance of hiring the right developer.
How big should your funnel be?
The Java programming language has been around for a long time so to find the true java experts you will have to have a multistage approach.
The first step in your interview process after reviewing each CV should be to consider whether to send them a technical test. The first inclination of most recruiters is to give as many people a chance as possible and send a lot of technical tests out.
However, the first inclinations of recruiters are not always the best for your company as a whole!
Each interview you give will likely incur time and cost to your business and team. For this reason, you will want to plan out your interview funnel well in advance. Incurring too many technical tests on the developers already productively working on your product can distract from your development effort.
Consider the following scenario
Your company is hiring a new developer to add capacity to your team. This is to get a product finished for a launch that has already been announced to be 3 months in the future. During the hiring process for the new role which lasts 2 months, the development team is tasked with doing the code reviews for potential candidates. This results in the attention of the team constantly being diverted from the main effort of completing the product. At the end of the 2 months, we have haven found the perfect candidate! But straight away the very rational business decision is taken not to hire the candidate is taken. The reason for this being that the two-week training and on-boarding time will take up too many resources away from the current team at this critical time.
To avoid such a waste of resources as illustrated above, start by asking yourself how many people you should send technical interviews to. When considering this question, you should ask yourself what exact set of Java skills are required of a developer to work on your project?
It is usual to conduct multiple interviews for each candidate, and there’s no telling how many candidates you will end up finding. Therefore, filtering down candidates at the CV level will save you significant effort, so how should we do this?
Decide on your requirements for a java developer
Java can be used in anything from simple IoT devices to complex banking platforms. Depending on the application domain your product is for, the java frameworks and technologies required will be different.
It is important that before you consider hiring any developer you fist take time to investigate what are the technologies and frameworks you currently use or plan on using? Once you know this you will know what skill sets to look for in a potential hire.
Every developer you add to your team should add value however you will find some developers add more value than others. So, by looking for people who are already familiar (ideally expert) in the frameworks and technology your team needs they will require less training and hopefully hit the ground running.
For those that already have an in-house development team, you will probably know what parts of your team need support and what skills will be required.
If you do have a team and don’t know what skills are required for a new hire, reach out to your existing team and ask them to list the main frameworks used in your project and rank them by importance. This need not be an exhaustive list however it should include the main tools and frameworks a new developer would have to know before he becomes a productive member of your team.
In the case that you’re building a new development team from scratch, as soon as you have hired a technical architect or lead developer set up a meeting with them. In this meeting list the technologies and frameworks that will be used in the project.
This may pose a challenge if you have a new project where no code is written. However, to resource the project properly you will need to have a rough idea of a tech stack and know what knowledge and skills will be needed. This list does not need to be exhaustive and includes everything at this stage, as some requirements may change.
Having a list of the main technologies used in your project will be valuable when you come to hire your other team members. As you can use this list to seek out these specific skills, reducing training time and development inertion from the day you start coding.
For example, a new Java developer on your project would likely need to know at least one of each of the following type of frameworks
-
An MVC Framework – To create the user interface (such as JSF, Play, Struts, or Spring)
-
Hibernate or JPA – to interact with databases
-
Dependency Injection – for database testing
-
Restful Web Services – to create an API
-
A Build tool (such as Ant) – to build your project
-
JUnit (or similar) – To write software unit tests with
-
Version Control – to allow the team to work on code collaboratively
-
Application deployment tool – to deploy the software on the server or cloud
A web developer should also be expected to know at least some of the following technologies
-
JSP
-
Markup Languages like HTML, XML and JSON.
-
Servlets
-
AJax
-
JNDI
-
Frameworks like Struts / Spring
-
Services
-
Web Technologies like CSS, Javascript, and JQuery
Advanced Java Skills for Enterprise applications may include
-
AI and machine learning
-
Blockchain Development
-
Web Services
-
Hadoop/Big Data
-
Mobile technologies (Android or OS)
-
Cloud Services and Deployment (Amazon AWS, Microsoft Azure, Google Cloud, etc)
-
Microservices
Filter applicants by their CV and ask questions before committing to a technical test!
Now that you have decided on and listed the main technologies and frameworks that will be used in your project you can now compare your requirements to that of skills offered by potential hires.
Many developers list their skill-sets on their CV but do not usually tell you their competence or experience. If there is a particular skill or technology your team requires you can always ask the developer to describe his previous experience.
Another approach uses the fact that today it is common for most developers to have a GitHub account. If you don’t know the developers GitHub you may find it on their CV, LinkedIn or simply ask them for a link. A GitHub account will give you access to the source of previous projects a developer has worked on, and from this, you can see what technologies and frameworks the developer commonly uses.
You may find that you are using only popular Java frameworks that most developers know. If this is the case great, you probably won’t have an issue finding potential candidates! In this scenario, you may even start to think about additional desirable skills you could look for to add capabilities to your team.
On the other hand, you may find that you are using niche frameworks connected to a specific industry or new frameworks and technologies that have not been available long. In this case, you will likely find yourself having to expend more effort to find the few developers who have experience in the skills you need.
If you cannot fill your hiring pipeline with enough good candidates, consider people without all the desired skills you ideally wanted. It may not always be possible to find candidates with the exact combination of technologies that you are using in a specific project. In this case, it’s often best to just find someone who almost matches your listed skill requirements and once hired give them the time and support to learn the additional skills required.
Simply ticking the boxes in their technologies and frameworks list on their CV should only be the first step. Before allowing the promising candidates into the next step, you will want to ask them how they have used these frameworks and technologies previously. Find out what previous projects they have worked on and what their role was within that project to get an idea of their experience.
Now that we have filtered out the best candidates its time to ask them to do a code test.
Code test potential developers
It is important to look beyond a developer’s CV to see if they have the skills to enhance your development team. After all, anyone could enhance their CV beyond their real capabilities so this technical part of the interview will verify their skills and hopefully highlight any weaknesses.
No matter how good a developer sounded in the previous steps if they cannot complete your technical task to a high standard, they may not be what you are looking for.
Every Java developer you hire should have the skills to create, deploy and manage code effectively. Testing these abilities will allow you to see how experienced a coder they are.
It’s also to important to include several problems to be solved within your test as this will allow you to determine their problem-solving ability. It is often said a software engineer is a problem solver first, and a coder second. Programming languages and frameworks can all be learned by studying. Solving problems is often thought of as a natural ability and is complicated and hard to learn other than through long practice.
When creating your code test its best to choose a challenge in a similar domain to that your company operates in.
For example, if your business is booking restaurant seats design a basic restaurant booking challenge or even better if you have a live test server let them connect to your API and serve up table options. Another example would be if your company is an eCommerce company, ask them to build a shopping basket or checkout. By keeping the challenge within the domain your company currently operates in, will not only educate the potential hire on what you do but showcase his skills in this domain.
The feedback we have received from developers is that this is an important factor that has kept software engineers interested and motivated to tackle your challenge. When given generic algorithmic challenges the developers can easily see it as an uninteresting chore and find their motivation lacking.
Doing multiple code tests for different interviews can be very time consuming and tedious for developers. When candidates do not find your code test interesting, they will likely not do their best and may not even complete it. When the challenge interesting and in the same domain as the role, they are applying for you will get a better response. It will also help them to understand the industry they are applying to work in and hopefully get them to engage with your brand.
However, if you take this domain-specific problem too far requiring prior industry knowledge without explaining new phrases and terminology, you will alienate many developers. The result will be a code test only suitable for people who already work in your industry. So don’t take this too far and avoid demanding a high level of specific industry knowledge in your test. Although you can include a glossary of terms where appropriate, the test should be open and written with all developers in mind.
Try to include all the major features that a software developer on your team will be expected to know in the code test. For example, it’s very unlikely that your company development effort is simply to design a function with required inputs and outputs. More likely your system will require some kind of basic GUI and API calls to retrieve data. So the more of these things you can touch on in the test the more informed you will be about the skills of your prospective Java developer in all areas.
As a general rule of thumb Code tests should at least fulfil the following two requirements
-
The test should challenge the developer to solve a problem
-
He should be free and not overly directed in how to go about tackling and solving the problem described
Keep the problem definition simple and clear, if you do not you will likely receive a great number of questions after sending your test out.
Don’t set a time limit rather set a time suggestion. You are asking people to do unpaid work for you and if they need to take a break or to respond to something, they should not feel like they are under extreme time pressure.
The result of the code test should be reviewed by a human Java developer and not a machine. People are not binary and machine testing is not able to evaluate all possible solutions to a problem a human may produce.
Make sure any new hire fits your company culture
Even if you find a developer that has the specific skills and experience you need you must also look for human skills. For example, if a developer doesn’t have the mindset to fit with your team culture company ethos it’s unlikely that they will feel motivated and happy working in your company.
A Java developer that may have demonstrated the correct skills and done well in the interview may not necessarily function well when placed in your existing team. One of the best ways to filter the developers you are considering hiring and find the best fit is to have them meet with other members of your team. If they do not seem to get along and complement each other then they might not be the right person for you.
Finding a developer with a good cultural fit for your company should be paramount, as these are the people that will integrate well and make an immediate impact on your existing team.
If you hire someone who may be a skilled and experienced developer but has bad interpersonal and team skills can prove toxic for your team. The last thing you want is to find your existing and experienced talent leaving because you made a bad hire.
But remember that securing the services of a developer who matches the culture of your business isn’t just vital for a new permanent hire, it’s also something you’ll need to consider in the contract market. As with any other employee a contractor with a disruptive attitude or someone who moves companies frequently could influence your other team members to act similarly.
By taking the time and due diligence to make sure you have a good cultural fit for your team you may find a developer who will stick with you for long-term and have a permanent positive impact on your company.