Here at Test Double, we have the privilege of working with teams whose members range from fresh out of school to 30+ years in the industry. As consultants with a sneak peek into a large number of companies, we see the general preference to hire only senior developers. We've also seen the benefits our clients get from hiring people with wider ranges of experience, especially early-career developers, often referred to as "juniors."
Working with junior developers, I'm always energized by their passion to learn, optimism around what code can do, and questions I would never have thought to ask. There's an energy that gets lost after decades of writing code. Years of navigating a constantly changing landscape can be disillusioning for many. A new perspective can help even the most grizzled of software veterans regain some of that (relatively) youthful optimism. This is why I will always encourage clients to hire junior developers.
We'll talk about how not to treat new developers and how amazing these entry level employees are, but first...
Defining terms
It's important to get on the same page about what "junior" means.
We've all seen the memes about what junior positions look like in 2021:
- 5+ years JavaScript
- 3-4 years C++
- 10+ years Docker/Kubernetes
- TDD/BDD/REST/DRY/CUPID/SMART/ETC
- Familiarity with every cloud provider a plus
- Can knit a sweater
- Makes a mean ratatouille
- This is an JUNIOR LEVEL position
These memes reveal both a frustration on the side of actual junior developers and a reluctance companies have to take a chance on those with less experience. A junior, however, is really someone with less than 2 years of experience. Someone fresh from school or bootcamp. Someone who is probably still trying to figure out if this whole "software development" thing is for them.
Even in this limited group, you'll have a HUGE range of experience. You'll have the kids who grew up writing Minecraft mods in their spare time, but have never seen a Kanban or Scrum board. You'll have Project Managers who want to take the leap to a new career, but for whom TDD is a foreign concept. You'll have Quality Control Testers who are extremely familiar with all the ways code can go wrong but have never actually opened an IDE. All of these people bring something new and special to your team.
Now once you have some junior devs hired...
What not to do
There's one giant mistake I've seen companies make over and over again–hiring a fresh, eager junior only to give them the worst, most boring work available. Doing this is pure waste for a few reasons:
- They will remember this. When they get a few years experience and recruiters come knocking, they will definitely answer.
- You don't learn doing grunt work. Expanding tests can help someone ramp up quickly, but to be excited enough to want to do that learning it's best to start with a small feature.
- Assigning grunt work violates autonomy and isolates juniors. The entire idea of having a sprint ready is for the team to pick up work as they are able and self-organize. If you're telling your juniors exactly what they'll be working on, what you're really telling them is that they aren't real team members.
If you embrace your new developers and give them opportunities to shine, they will definitely benefit your team. After all...
Diversity is a superpower
The first thing you get when you hire a junior developer is a brand new perspective on everything you've built. One of the quickest ways to improve code quality and clarity is to start having early-career developers, on day one, actively participate in Peer Reviews. Someone new to programming is going to ask the questions your most senior people will never have thought of.
Juniors, if given the opportunity, will shine an ugly light on your assumptions. If you can make your team a safe space to ask any and all questions, you will hear some absolutely brilliant ones. Your junior developers don't know "how it's always been done," they don't know what's broken that can't be fixed, and they usually don't have an ego needing to be appeased.
There's another advantage to posting junior positions when it comes to diversity. There are reports that women tend to only apply to positions if they match or exceed the requirements, meaning positions with lower requirements are likely to see more women apply. You'll also open the door to those normally shut out of tech–people with disabilities, LGBTQ+ individuals, and those from various backgrounds that don't normally get selected for opportunities and promotions.
Speaking of opportunities...
Mentoring
If your junior developer is fresh from school, there's a good chance they've been exposed to the bleeding edge of languages, computer science, AI, you name it. While some seniors find the time and energy to keep up on all the trends, many won't be able to. You can help your seniors learn and your juniors develop their public speaking and technical presentation skills by having them do lunch'n'learns or talks on the knowledge they desperately want to share.
You'll also want to have your seniors start mentoring juniors as soon as possible. Teaching is the best way to retain information, and your seniors are constantly learning more about the software they're creating. Walking a junior through test driven development, functional decomposition, and the nuances of whatever tech stack you happen to be using is the best way to reinforce best practices in your seniors.
Speaking of seniors...
The call came from inside the house
You need a senior developer who knows your tech stack, can fit in easily to your culture, and, magically, already has knowledge of your company's business domain. Luckily, if you've been smart and lucky enough to keep junior developers for more than 3 years, there's a decent chance you've already hired this person!
Whether or not a developer is ready for a bump in responsibilities this early in their career is going to vary wildly. If you've played your cards right—encouraged lots of training, mentored consistently, provided leadership and technical opportunities—you might be one of the lucky few to have a ready-made senior already working for you!
It's rare for developers to stay in one place for more than 2 years, often because a developer is far more likely to get a raise or promotion by leaving than by staying. You might lose your investment if a junior leaves. You'll definitely lose your investment if you don't give them a reason to stay.
PRO TIP: The secret to keeping your developers after a promotion? Don't scale salary based on the salary they had as a junior. Match their new position's market value when they get promoted.
Speaking of pro tips...
Junior developers can be a great injection of fresh ideas and new perspectives. They can help build leadership skills across your org through mentoring, and improve your software quality through their questions. Treat early-career developers as full members of your team from day one, mentor them, advocate for them, and you'll reap the benefits.
As people who have had the privilege of working with and training junior developers, we can't speak highly enough of the benefits junior developers add for our clients. Passion, diversity, and eagerness to learn are keys to great, productive teams. Hiring junior developers is a great way to get an injection of these qualities into any team.