Planting seeds of the next generation of senior developers

Recruiting juniors and students is essential for a healthy R&D organization!

Shai Ben Or
Wix Engineering

--

Yes, I said it — recruiting juniors. And I will take it even further and say that undergrads are a must for a healthy organization. Some of you are probably thinking, that’s not true in my case: “I work on a super complex technology and need to have senior developers all around me”.
I will argue that not having the next generation of developers learn from those seniors is simply a missed opportunity to raise the next generation.
Allow me to take the next 5 minutes of your time, keep on reading and maybe it will end up being your best 5-minute ROI ever!

How the story begins:
Here’s my story: I’m a team lead at Wix.com, a leading platform of cloud-based web development services. About two years ago my R&D group decided to start screening candidates for a student position (I promise I’ll go back to how in a minute) and eventually recruited 2 students in their 3rd year of a 4-year bachelor’s C.S. degree.
A year later we did the same thing again and recruited two more.
Now 2 years later we have 4 mid level — yes, mid level — developers who are quickly becoming the pillars of the R&D Organization!

How did they become so good so fast?

In short: We first invested time in the screening process, examining & interviewing a lot of candidates and picking out the cream of the crop. Next, we invested lots of time of senior developers to mentor & onboard them.

Let’s dig a little deeper…

The advantages of recruiting a junior developer:

  1. Bigger talent pool — Great juniors are not as rare as desert roses. These days recruiting experienced developers is very hard. Finding someone who is talented and also a great person is nearly impossible, and yes, being a great person is a must! Finding these rare roses is much easier before they set foot in the industry.
  2. Passion — Junior developers are passionate about their first job, they are eager to learn everything they can and are excited to see their first features make an impact on users in production! Motivation of a junior developer is hardly ever an issue.
  3. Longer stay within the organization — I found that students who got their opportunity on my team constantly develop, therefore they tend to stay at their position longer than the average time in the industry. It became a common sight to see a senior moving to a more attractive position/offer after a short period of time.
  4. Fresh perspective — I love how an intelligent junior developer takes nothing for granted! I was asked countless times “how does this work?” and I was challenged to dig deep and see if I understood the essence of things in order to explain them. I was also asked a much better question: “Why does it work like this?”. This is a great question who led me and my team to improve things we do significantly! It is much easier for someone new to notice things like that since they are not worn out by the daily challenges.
  5. Longer onboarding process — since there is no expectation for high output delivery from a student, it is easier to take time and plan a very long onboarding plan for them and teach the fundamentals of the art they practice. (oh, how I wish I had the chance to learn what we teach our students at the beginning of my career).
  6. They will learn what they see and will go on to work in the same manner, meaning that they will work the way their leader showed them. For example, I like working without ego and try to create a pleasant working environment.
    I can see the students who worked with me are doing the same and practicing such habits even after they moved to different teams in the group.

How do we hire the right person?

Interviewing juniors with zero experience is more challenging than someone with hands-on experience. You can’t ask a junior to tell you about a challenging project they did or what their favorite part of the job was.
So what should we ask?
How can we know the person in front of us will be a passionate developer?

Here is how we tried to tackle these challenges:

  • Make them learn something new: We gave each student a coding task which required knowledge of React. They had a week to complete it — we assumed some of the time would be required to learn React itself. If they submitted the tasks successfully, we set an interview with them and asked how they learned and checked if they truly understood the ideas of the framework.The reason we did this was to check the most important quality of a junior developer — ability to learn something new.
  • During the interview, add a live coding task — see they understand the homework they implemented and the basics of software design.
  • Ask few algorithmic questions — this just checks if they master their C.S. knowledge and gives another perspective on their ability to solve problems.

What you shouldn’t do:

  • Don’t focus on actual hands-on experience if you find the occasional students with little prior programming experience — this might make you miss the gem you are looking for.
  • Don’t ask the usual algorithmic questions and give them the opportunity to do most of the work themselves — students have the relevant C.S. knowledge fresh in their heads and might outshine senior rockstar developers in this category — so don’t be blinded by their outstanding ability to solve bigO questions, many of them swim in these waters.
Choosing the right candidate is challenging.

I found the person I’m looking for, now what?

Most importantly take your time and invest in them.
When I start onboarding a junior developer I give them a long training program and assign a buddy/mentor to help them with their onboarding.
This is a rare opportunity to lay down the right fundamentals for them to grow tall and strong. For example a junior FED developer would start from the basics of a HTML course (there are best practices even in the simplest parts) from there they go on to learn Javascript, Typescript, React and our preferred state management library — I recommend incorporating all these materials into a project that would follow the entire training and would allow the trainee not to get bored.

After we lay down all the fundamentals we can start the training of the usual domain-specific knowledge as you would do for every new recruitment.

Regular feedback is the fertilizer for growth.

Growing juniors:

From my experience, junior developers, enjoy rapid growth in both technical and soft skills. It’s incredible to watch their growth.

The key to achieving this rapid growth is your mentoring and input. Regular feedback is the fertilizer for growth. Don’t keep positive feedback to yourself! Be sure to tell your juniors when they are doing great as well as when they could improve, as often as possible. Regular one-on-one meetings are a great framework for rapid and consistent feedback.

Some other tools that enhance growth:

  • Assign tasks in various domains sometimes even in different teams to enhance wide knowledge throughout the organization.
  • Next time you recruit juniors, assign your juniors as mentors. Mentoring is a great growth engine, plus the knowledge is fresh in their head.

Some pitfalls to watch for:

Looking back on the process of helping the students we hired grow, we see we had great success. But we also might have been somewhat lucky.
Things could’ve been a little less pleasant if after investing so much resources in the process and the growth, we would understand that things were not working out and thus we had to part ways.

To avoid this scenario we need to be mindful of several pitfalls:

  • Handpick the recruits that better fit the company culture — If they don’t fit and don’t enjoy the environment around them, it is likely they leave sooner than expected.
  • When matching developers to each other, try and make sure they “click” — it’s important both sides enjoy talking and working with each other.
  • Long onboarding process might get frustrating to some developers, adjust if your trainee is very eager to start coding. You can create a project to help practice the material.
An exciting journey awaits you when you hire a junior developer!

To sum things up:

  1. There is much more available talent in juniors than in experienced developers. You just need to know how to find it.
  2. You need to use a different approach to screening junior developers than senior ones.
  3. Give them constant feedback and attention.
  4. With the right investment and onboarding, junior developers can become the pillars of an R&D organization.

--

--