When it comes to scaling your software engineering team, there are many advantages to hiring junior developers, whether they come from an academic background or are self-taught.
However, your organization must be prepared to bring on these sorts of resources. Plus, interviewing junior developers can be challenging. Here’s an overview of how best to make use of the skills of a junior software engineer as well as what to look for in candidates.
The Role of a Junior Engineer Within an Organization
There are many good reasons why companies should hire junior developers.
You may want to expand your team to include less experienced developers, despite the difficulty in identifying potential candidates and the time you need to sink into hiring them. You may even find that hiring good junior developers is easier than hiring good senior developers, who are often more comfortable in their current roles.
Although they may need guidance, overall these sorts of developers are eager to learn and develop their skills. They can add a lot to an organization through their energy and the enthusiasm they have for growing their skillset in the interest of advancing their career.
Offload Less Complex Tasks
Hiring junior developers allows your team to offload more menial tasks and simpler projects from senior developers. This frees up those senior resources to focus on more difficult issues and think about the overall design and architecture of your product. Junior developers can take on tasks such as troubleshooting bugs, working with support, or general maintenance.
Additionally they can work on less mission-critical tasks for engineering such as helping to develop internal tools or supporting company web pages. For more ideas on tasks for junior software engineers, take a look at this list of junior software engineer responsibilities and this job template for junior software developers.
Build Out Your Infrastructure and Processes
Often building out your operational infrastructure gets neglected because of the overhead of putting them in place and the impact on short-term deliverables, especially when you only have a handful of developers. However, such processes will have many long-term benefits on the stability of your code base and ability to deliver on a predictable schedule.
Having more resources allows you to build out things like the instrumentation of your CI/CD or implement more in-depth unit, functional, and automation testing. Moreover, you can institute more processes around development such as code reviews and pair programming. All these should be well within the capabilities of more junior programmers to help implement, given the proper guidance.
Are You Ready to Hire Junior Programmers?
As you consider the possibility of hiring junior programmers, there are a number of factors you should consider.
Does Your Team Have the Necessary Management Skills?
First, you need to have resources with lead/management skills and understand that some of their time will be dedicated to assigning tasks, tracking progress, and answering questions about the code base or general programming issues.
Some of the management skills that are required to keep projects on track may not be in the bailiwick of your more senior developers. You may not even want them spending cycles on those sorts of tasks, so dedicated project managers will be necessary. At the very least, you will want to ensure your lead developers have appropriate management training. This sort of training comes in terms of tools (creating Gantt charts or organizing code sprints), but also developing interpersonal skills that allow them to keep the resources working under them focused and productive.
For more ideas related to management, check out our article on 5 Ways to Manage Young Developers.
Do You Have Employees That Can Act as Mentors?
You should also have senior developers who can guide development and mentor junior programmers on best practices. While those more seasoned professionals come at a cost, you will benefit greatly from their expertise and their ability to steer the greener recruits in the right direction.
Even if a junior developer costs less at an hourly rate, you still don’t want them spinning their wheels or spending both development, QA, and management time reimplementing code. At a minimum, you will want to make sure your senior developers are conducting code reviews and ensuring that conventions are enforced, but there are many approaches on how to mentor junior developers.
Types of Junior Developers
When you’re hiring junior developers, keep in mind that these sorts of candidates may come from a variety of different backgrounds. You can think of them as falling loosely into one of two broad categories.
Being mindful of these two types of developers can help you adapt your screening process and interview questions.
As another option, you may also want to consider hiring tech interns — see our 5 Tips for Recruiting Tech Interns.
Recent Graduates
One common type of junior developer you may be hiring are recent graduates from academic institutions. These candidates should have mastery of computer science concepts such as data structures and algorithms. This sort of knowledge can be important for writing efficient code that is more robust and less likely to force you to deal with performance issues.
However, you may find this sort of recruit lacks practical experience and projects they have worked on may have been lacking in complexity. They may also be less used to working with a team of engineers, especially within an Agile environment.
Self-Taught Developers
You are likely to also come across more self-taught developers during your hiring process.
Programming has always been an area where enthusiasts and hobbyists have excelled, and you do not necessarily need to hire someone with a degree in computer science (Bill Gates was, after all, famously a drop out). You may even find a more advanced degree does not necessarily mean a higher quality candidate.
There’s an ever growing set of opportunities for individuals to develop code mastery outside of more traditional academic institutions through online learning. Coursera, for example, allows access to online courses and CodinGame allows developers to test and build their skills.
Candidates with this sort of background are likely to have great enthusiasm for programming. They may also have much more practical experience from engaging with open source projects — which could give them a leg up on practical issues such as branching and merging code. Still, you should be mindful of the fact that these candidates may have gaps in their knowledge on theory and best development practices.
What Every Junior Programmer Should Know
Even though you’re interviewing them for a more junior programming position, your candidates should still possess some essential knowledge and skills. You’ll also want them to have the more standard traits you typically look for in any hire, such as strong communication skills.
Fundamental Programming Knowledge
For a start, your prospective hires should be familiar with the basics of the languages with which you are primarily developing. While you should expect that some “on the job” training is necessary, candidates should still have a core knowledge base that allows them to read and write code in that language or a close cognate. Just be sure your screening process and interview questions are oriented towards covering these fundamentals and don’t automatically disqualify candidates for lacking knowledge of more advanced concepts.
Your potential hires should have some knowledge of common problem domains such as web development. Fluency in web technologies such as HTML should be a “must have” for instance. The more they can speak to other technologies such as CSS and JavaScript, the better.
Aptitude for Troubleshooting
You should probe candidates’ experience with troubleshooting bugs and knowledge of development processes such as continuous integration and deployment. If nothing else, you will want to gauge their interest in these sorts of tasks, as that’s often the type of work you will want to have them start with as you get them up to speed on your codebase.
Most importantly your candidates should have strong problem solving skills and be able to think logically. This includes having the ability to break down problems into smaller component problems.
The Interview Process for Junior Programmers
Screening Junior Candidates
As you evaluate candidates, a great time saver is to perform an initial screening using CodinGame. Our tool allows you to tailor your questions to the programming languages you use.
You can cover the basics in your developer interview questions to validate candidates’ skills. Moreover, you do not need to take time away from your other developers and instead have them focus only on interviewing candidates that meet certain threshold criteria.
Once your pool of candidates completes their screening you can see a report on them and their relative rankings.
Interactive, Live Coding Interviews
After you’ve selected candidates to interview you can then conduct interactive, live coding interviews using CoderPad.
Live coding interviews are considered the best option by both candidates and recruiters — 78% of developers and 79% of recruiters say that a live coding interview is their preferred interview format.
Additionally 74% of developers think live coding interviews are the best way to showcase their skills. This sort of interview allows your team to get a sense of how they interact with the candidate.
Best Practices for Live Coding Interviews
While in-person interviews come with their own lot of problems (candidates finding the location and so forth), there can also be issues with online interviews. These can range from technical glitches to misinterpretations.
Avoid Technical Glitches
You need to be prepared to deal with technical struggles (such as unstable internet connections, unreliable tools, etc.). In fact, “technical difficulties” is in both developers’ and recruiters’ top 3 of difficulties when interviewing online (CodinGame & CoderPad Tech Hiring Survey).
One tip in ensuring a reliable and fluid experience is to communicate to your applicant well in advance that they need access to a reliable internet connection. Other technical difficulties can be avoided by using CoderPad. Candidates don’t have to download or set up anything on their computer, they just need to access a URL to the CoderPad sandbox.
Assess Soft Skills
A more difficult issue is how to make sure you adequately manage to assess a developer’s “soft skills.” According to our 2022 tech survey, 30% of developers find it difficult to demonstrate their personalities and soft skills remotely. In order to get around this problem there are some strategies you can employ during the interview itself.
Choose Good Example Problems
In general you need to provide the candidate with the opportunity to demonstrate how well they understand a problem and can explain it back to you, both in terms of its context and the expectations for how it should be solved (e.g. the expected output and handling error conditions).
One thing that helps is to find ways to add some levity to the examples being worked. Don’t make the scenarios too dry — give the interviewee a chance to show their personality. It also helps if examples are concrete and grounded in terms that will be familiar to the interviewee. While it’s important to see if your potential hire can grasp the concepts that are important to the problem domain they will be working within, for the purpose of testing their mastery of programming concepts like abstraction and inheritance, it doesn’t hurt to throw some fuzzy animals into the mix when defining your problems.
Gauge How Well You Work Together
While you engage with the candidate, make it clear you are working to solve the problem together. This is particularly important when hiring junior developers, for whom you must feel comfortable playing a mentoring role. You are missing an opportunity to learn what sort of working relationship you could have together if you simply watch the candidate struggle.
Provide hints and ask the candidate about their thought process, especially when they appear stuck or seem to be going astray in their approach. They may be nervous about asking for you to clarify something that may not have been communicated clearly, so it’s also a chance for you to improve your own interviewing technique.
Make Your Interview Dynamic
To get a full assessment of a candidate, it helps to be adaptable during the interview process. Within the context of the problem they are working on, offer alternative paths to see how the candidate adapts to changing circumstances. Try to suss out if they can account for edge cases and error handling as well as “the happy path.”
If they appear to be going down a rabbit hole, see if you can get them to understand why the solution they are working on might not be ideal by giving hints about the issues they might encounter as a result. Often a question that starts with the phrase “what if?” is a useful prompt, but also be prepared to jump in and write a line of code yourself as if you were peer programming.
Give Your Candidates Some Homework
Finally, it’s good to provide the option to candidates to do a take-home assignment as well to evaluate how they manage a problem that may be larger than can be handled in a live interview session. You can also see if the candidate does better without the pressure of a live interview, where they may be overly concerned about making a good impression.
For more ideas on how best to approach remote hiring, please see our article on Remote Hiring.