Hiring great developers is one of the top challenges cited by many technology startups, if not THE top challenge. It doesn’t have to be that way. Here is a technique that will help you put together a high-performing, cost-efficient, and loyal team of technical engineers. I’m writing this from the standpoint of software engineers, though I have been told it could apply to hardware engineers as well.
The premise is to have the right mix of junior developers to veteran developers (perhaps a 80/20 mix), because:
- New developers are relatively easier to find, especially from schools and development boot camps.
- New developers can be easily trained and don’t come with a lot of baggage.
- New developers can bring new ideas to the team that may challenge traditional ways of thinking.
- Veteran developers can act as mentors and share best practices.
From a recruiting standpoint, it is easier and less expensive to find and hire novice developers than experienced ones. A lot of large corporations already know this. That is why you often see Google, Facebook, and Microsoft on college campuses. Startups need to do this too.
Changes to Recruiting and Team Building
This has repercussions in the recruiting process and team dynamic though.
Recruiting Senior Developers
- Strong technical skills are of course required. System architecture and design skills may also important, though it depends on your needs.
- Interpersonal skills are especially important in this model, specifically the ability to coach others and communicate abstract concepts clearly.
- Including other developers on your recruiting team to help you attract senior developers will really help.
- This person does not necessarily need to be a manager or team lead. There can be separate manager/lead and senior developer on the same team, where the manager/lead handles more of the interpersonal tasks and the senior developer handles more of the technical tasks. The key is to have someone experienced enough to coach and guide the junior developers. This is both good for career progression and recruiting ease, because good developers are attracted to teams from which they can learn.
- A person that embodies the first two points well is not easy to find, though you will have an easier time having to find a few of them vs a whole team of them. If you find one, compensate that individual well. You can also train someone for this role with a combination of opportunities within your company and workshops outside of your company.
Recruiting Junior Developers
- Interviews need to be more about assessing potential, innate talents, and the ability to learn, than gauging existing skills. These are traits that interviews would assess anyways, but most technical interviews aren’t set up that way. Most interviewers may find it difficult to assess such traits, but this is an interviewing skill that can be learned.
- Include your senior developer on the recruiting team. Junior developer candidates will get to meet their potential mentors right away and both sides can ascertain if there is a good fit.
- As a startup, you won’t have the same salary and perks a large corporation can use to attract candidates, so sell them on your mission, impact, team, and learning opportunities instead.
- I should add that “junior” does not mean “young.” Age has little correlation here. Some of the best developers I know changed careers later in life and still share the same energy and ability to learn as recent college graduates.
Training Junior Developers
- Both the manager/lead and the senior developer (or the same person, if one individual has both roles) hold a key role in training the junior developers. Work with them to set up training plans for each of the junior developers.
- Establish an environment for constant learning and collaboration. This can include code reviews, paired programming sessions, informal brownbags, formal mentoring programs, etc. For informal brownbags, encourage the junior developers to host them and share something they learned, even if they aren’t considered the “expert” of that particular domain. Teaching a topic is a great way to learn that topic.
- Such an environment also requires a company culture to match. The culture needs to be supportive, open-minded, and willing to take risks. Setting such a culture needs to start with the company’s founders and leadership team.
- This also means giving junior developers opportunities to own aspects of the codebase while getting support on their system design and code. Don’t simply throw junior developers into new features all on their own. Have regular check-ins and code reviews to guide them along the way.
- Training doesn’t need to only be technical. If a junior developer aspires to be a manager one day, offer leadership opportunities and training. And if not, make sure your organization has a technical career path.
With the right environment and guidance, these junior developers eventually became senior developers that can help mentor other new developers and continue the cycle as your organization grows.