UPDATE 23/09/21: In the post I shouldn't have confused the developer and engineer titles. "Juniors" with a good engineering background tend to have professional maturity earlier and learn faster. Another caveat is the definition of "senior". Professionals with 5+ years experience who are opinionated, have difficulty to adapt to new environments, don't communicate easily with other teams and are bad mentors are not "seniors". They've just been in the job market for 5+ years. On the other hand, career changers with professional maturity but limited programming experience tend to thrive more easily.
The quick answer is no, or at least not until the tech team is mature enough in terms of product, team size and processes to make the most out of junior developers. Don’t get me wrong; I’m not saying junior developers will do a bad job or that unicorn interns (those that thrive without supervision) don’t exist. It’s just that for an early-stage startup, where product development is highly changing and uncertain, the math doesn’t make sense in terms of overall productivity.
For example, let’s assume the CTO of an early-stage startup has 200K€ to hire developers. With such a budget, they can have five junior developers (at 35K€ / year each) or three senior developers (at 60K€ / year each). First, junior developers take more time to code things since they’re constantly looking up examples, rewriting code and solving unnecessary bugs. So, in terms of pure productivity, one senior developer is probably at least 1,5X more productive than a junior developer. But that’s not all.
Since junior developers haven’t picked up good coding practices yet, each new project will require a significant amount of involvement from the CTO to help with problem-solving, project chunking, estimates, as well as maintainability and stability. To go through this upskilling, the CTO will probably spend 30 minutes to 1 hour per day with each junior developer answering questions or doing pair programming, code review and technical mentoring. So, compared with senior developers who need to get up-to-speed with the codebase, our five junior developers will require the CTO to spend around 10 hours per week just on training. That’s 25% of (valuable) productivity lost for the CTO, for a period that could go from 6 months to 2 years, depending on the junior developers' learning capacity. The senior team is now at 1,75X productivity compared to the junior team. And that’s still not all!
Are you a startup CTO looking to scale you engineering team, grow as a leader and join a community of ambitious CTOs?
Join the next session of The Unicorn CTO 🦄 💻
Lastly, programming is, as you know, more than just coding skills. Developers have to interact with multiple stakeholders like product managers, QA engineers, DevOps, and even salespeople to get their job done. Senior developers who have acquired good communication skills interact more easily with everyone involved. They know how to follow-up (“I sent an email but he hasn’t answered yet”), push back (“The product manager has already changed priorities three times”) and explain (“Let me try again to tell you why this is impossible”). It’s difficult to estimate the time lost by junior developers since every organisation is different. Still, at this stage, it’s safe to say that the senior team in our example is at least 2X more productive than the junior team.
There is one flaw in my reasoning: senior developers are much harder to hire than junior developers. With Europe now catching up with Silicon Valley in terms of startup funding, there is an unprecedented amount of financed companies fighting for the same amount of skilled developers, especially since some of them only hire senior developers. So, how to hire senior developers? Here are five strategies to attract senior developers, ranked by difficulty, if your startup is not a unicorn yet 🦄
1/ Ask their/your friends ⏳ If you are yourself an experienced developer, you have former colleagues and classmates. Spend time having coffee with skilled developers in your network and subtly sell them your vision. They shouldn’t spend their valuable time building useless products, and they should come to change the world with you 🚀
2/ Look everywhere ⏳⏳ Great talent is now available everywhere since a developer just needs a laptop and a good internet connection to work. Embrace the new remote revolution (especially in terms of communication processes and management) and start hiring developers everywhere in the world.
3/ Find honeypots ⏳⏳⏳ Where do great developers hang out? Most senior developers want to become better at their craft and leverage online and offline communities. Try to find the meetups, forums, Slack groups and other events and become immersed in them. Obviously, you shouldn’t go to one event and bluntly try to recruit everyone there (or worse, post a job offer on a tech forum). You’ll have to be consistently present and contribute to be trusted by other community members.
4/ Share your work ⏳⏳⏳ Great developers want to work with other good (or better) developers. Most probably, the tech you’re developing is impressive and the problems you solve interesting. Please don’t keep them all to yourself and start sharing through blog posts, meetup talks and more. It takes time, but it’s a great way to attract like-minded developers.
5/ Build your community ⏳⏳⏳⏳ As advised by Trello and StackOverflow co-founder Joel Spolsky, “the idea here is to create a large community of like-minded smart developers who cluster around your company, somehow, so you have an automatic audience to reach out to every time you have an opening.” This strategy is the hardest and longest and is especially relevant to companies working on open source software or cutting edge technology. It doesn’t have to be so fancy, though. You might just be using a less used programming language, like Haskell, and communicate enough on your challenges to be relevant to the overall Haskell community.
Last but not least, while I completely understand that startups need to go fast and the hiring of senior developers will take more time, it’s essential to anticipate the impact on your team in 18 to 24 months. Having only junior developers will most probably end up in a severe re-engineering of the platform and will create a skills glass ceiling since no one is there to guide them forward efficiently.
Building a Startup? Don’t Hire Junior Developers - Tim Hwang
Ask HN: Strategies for mentoring junior developers? - Hacker News