Hiring a junior developer can be a win-win situation. You give a chance to a young person to improve his/her skills and you get an eager employee.
Make Sure You Are Ready For This
- More expensive in the beginning: if you think hiring someone with no experience can help you save money you are wrong. To teach a junior developer requires a lot of time and you have to pay for the lessons.
- Slow down the team: Teaching requires experience. Of course, your senior developers will be teachers. Don’t be surprised if the development speed drops because some of your senior developers have to help the new guy.
- Acclimatization: Don’t forget these guys might not have worked for a company. They need time to get used to the working hours, the meetings, the bureaucracy and so on.
- Loyalty: As you can see working with juniors is not an easy job (especially in the beginning) but the juniors know that too. Because of this they will appreciate it and they will become extremely loyal. These guys can stay up for long nights to satisfy you, until your team can keep them motivated and acknowledge their performance.
- Lower cost: Junior developers are cheaper as a long term investment.
The Recruitment Process
The secret of finding a good junior developer is the bulk interviewing. Why? The density of the good developers in the universities is dropping. As Igor Markov said in Forbes ”…there are definitely many students signing up for CS majors who aren’t prepared enough…”. A lot of students don’t know the expectations of this profession. They just want to be the new Zuckerberg and started learning programming. Of course after a short period of time, and many unsuccessful interviews they find another profession. Or if you are lucky one of your competitors hire them.
My experience shows you have to contact at least 100 junior developers to hire 1 or 2 talented candidates.
The more candidates the higher chance to find a talented one. Always hire slowly and say no quickly. It is cheaper to say no to a good candidate than hire an inappropriate one. This approach can help you to save a lot of money and collect the best employees.
Weed Out The Weak
If you advertise well the junior job vacancy you will have about 100 CVs. These CVs consist of 5% real rock star developers, 30% average developers and about 65% desperate trolls who apply each job positions they find. Your task is to find that 5% as effective as you can.
By asking the developers to solve a medium complexity programming task you can eliminate 100% of the trolls and you will have a new dimension to use to compare the candidates.
Do not rely only on reading and judging their CVs. Don’t accept any application without making the candidate write a code.
Try the interviewme.io‘s automated tests to screen out the weak developers without involving any additional human resource.
Screening The CV
As I am sure you already know the juniors’ CVs are short and mostly contain details about their study which is normal.
I believe the education history doesn’t matter a great deal. In my career I have seen really good programmers without Master degrees or even without Bachelors and I have seen plenty of bad developers with GPA > 4. But there are some elements that you should take under consideration.
Let’s start with the overall structure of the CV. Possibly these are the fist CVs that the candidates have ever created as a result they won’t be perfect. However, the internet is full of services, instructions and how-tos on how to create a CV. If you see the CV isn’t well organised and seems pieced together it is probably because the candidate isn’t exigent and won’t be able to satisfy your quality expectations.
Continue by looking at the student work history. If the candidate worked for McDonald’s or packaging milk in the dairy factory it is definitely a bad sign. You are looking for somebody who likes programming. The good candidates use their talent to earn money instead of wasting their time in factories or preparing patty for hungry customers, they might create a website for the cousin’s grocery shop or an accounting application for the local butcher.
Juniors should have some experience. If you cannot find anything related to programming in their CVs you should reject the candidate. Their assignments during their education are not relevant.
Talented candidates are usually quite active during their studies. They often seek opportunities to further their knowledge by entering competitions or becoming a member of a science group.
Let me remind you. Interviewing is an expensive process. At this point you should have weeded out most of the inappropriate candidates by using our automated tests, screening the CVs, phone interviews, etc. Obviously the technical interviews must be done by your senior developers, wether it is a personal or a remote interview.
How does the junior interview differ from the other interviews? While in the regular interview process you are trying to find the talented candidates with the best experience. However in a junior interview you are trying to find the candidate who has the most potential. In the first case you can contact references and check previous projects. There are many ways to check the candidate’s previous performance. In the second case you have to predict what kind of developer the candidate will become. Because of this you should use different interview questions. Using the following techniques you can precisely forecast the candidate’s further performance.
The Perfect Candidate Possesses These Abilities:
- Is able to get things done.
- Is smart
- Is eager to learn new things
- Can write a code
Ask The Following Questions:
- Programming questions. Never ever hire anybody until the candidate has proven his/her coding ability. I think it is not a good practise to start with the coding questions. In the beginning the candidates are usually a little nervous (especially the juniors). Give them some time to get in the mood. But after 5-10 minutes they are usually ready to prove their skills. Your coding questions should include a simple question (that seniors would be able to solve in 1 minute), some recursion and OOP. Ask them about Big-O complexity. It is surprising, but many candidates don’t know what Big-O is.
If you want to make the interview go smoothly try out interviewpad.io, wether it is with a personal or remote interview.
- Maybe the most important question to ask: `What was the biggest project you were involved in?’. With this question you should get the answer to the earlier question about being able to get things done. In addition, this helps to you determine the experience and entrepreneur mindset of the candidate.
You should hear something like this: “I created mobile reminder app”, “With my friends we developed an accounting program for a friend of ours”, etc. Something useful, something for other users. If you have a chance you should check this application. Is it finished, how many users use it, how many visitors does it have? It indicates that the candidate has already finished something, knows how to overcome obstacles, likes and knows how to create something valuable. These are very important skills and attitudes to possess.
Consider the candidate’s emotions. The good candidates are enthusiastic, they proud to talk about their creations.
- Ask `What was your role in that project?’. You need to know whether the candidate is a good team player. The best thing you could hear is that they took the leadership position in the team.
- Ask them to explain to you something in terms that your grandmother would understand. It is both an unusual and funny question. Although it gives you the opportunity to relax a little, it is also an important question. I usually ask the candidates to explain me how the internet works or perhaps what OOP means. 90% of the candidates start to talk in jargon. Tell them your grandmother doesn’t have an MIT degree so she cannot understand, ask them to use standard language. If they continue the jargon, it is a red flag.
Why is this question important?
A junior developer usually has a lot of questions and ideas. The ability to share thoughts or doubts is crucial.
- How do you improve yourself?
Self improvement is important. The good candidates are eager to learn and able to find the solutions to the upcoming problems and as a beginner in a new team she/he is going to have a lot of obstacles to overcome.
From the good candidates I usually hear something like this: “I read XY blog and forums”, “I attend XY meetups, presentations.”, “Follow XY on twitter”. The excellent candidates have their own blogs, followers, meetups.
- Usually I close the interview with this question: `What are your future plans?’.
It is important to understand the goals of your potential co-worker. Most of the time I hear something like this: “I want to become a team leader/project manager/tech leader”. If your company can support his/her goals you are going to have an excellent employee.
Sometimes you will hear really strange answers. For example: “I just need some experience to find a job abroad.” or “I also want to create a similar company”.
If you hear answers like these you can be sure this guy only wants to use your company as a “jumping board” to boost his/her career.
As you can see these questions are mostly about how to determine the attitude of the candidate. Look for somebody who enjoys developing and always make sure you have presented the job vacancy to a huge number of candidates to increase your chances of success.
If you have any questions please don’t hesitate to leave a message here or on twitter.