Original article was posted on Codesmith Dev
Experience is one of the most valuable traits in the job market–and for good reasons. Someone with more seniority wouldn’t need supervising and training. Rookie mistakes are not expected from someone with years in a particular industry, especially an industry like software engineering. Often, developers are working on mission critical tasks that can affect the future of the company. With all that said, hiring a senior engineer over a junior engineer seems like a no-brainer.
The issue is that there is a shortage of senior engineers, which means a handful of the best companies are bidding for the best talent. Though the idea of the software developer shortage has been claimed to be a myth, what many would agree is that there is a shortage of 10x developers. There was a great article, written by Yevgeniy Brikman, that tackled the concept of these seemingly mythical developers that you can check out in order to gain a better understanding of what they are. These developers are every HR Manager’s dream. Their output supposedly matches that of 10 of your worst developers. They’re the sort of developers that encourage job postings desiring 5 years of experience with a framework that is only 2 years old, just to be able to attract said unicorn.
With high demand and limited supply comes cost, if we’re to follow the basic principle of supply and demand. It goes without saying that staffing an entire team with senior developers is expensive. In many situations, the amalgamation of talent produces results that offsets salary overhead, but there is always the risk of turnover and a new hiring cycle.
The question then arises, how can one keep talent that will allow their company to produce at a consistent level if they’re not the Microsofts of the world or the hottest new startup on the scene? For smaller shops looking to maintain consistent production, the answer may be grooming Junior Developers. Robert C Miller, one of the authors of the Agile Manifesto, wrote a blog post 5 years ago highlighting the lopsided ration of programmers under 28 compared to those over 40.
What he concluded was that the few engineers with 10-15 years of could act as mentors to a young crop of engineers, saying,
"As a leader, that programmer can teach the team about principles, patterns, practices, and ethics. That leader can temper and curb the youthful enthusiasm that leads to premature decisions about frameworks and architectures. That leader can help to instill the value of refactoring and clean code, as a counterweight to the youthful thrill of gettingittowork. That leader can encourage the team to work hard for eight hours, and then to leave work so that they are fresh the next day. This would prevent burnout, resentment, the false sense that hours equals work, and the insidious dependence upon, and value of, heroics."
The key to instilling this team-first mentality within the development team is to change the common conceptions associated with hiring junior developers.
While experience is king, it is important to highlight problem solving experience as opposed to language experience. A language can be learned in a few months, but problem solving is a skill that takes years to hone. Weeding out applicants who may not have X amount of years spent with one language can be futile if that same person then has to learn a legacy language just to maintain code that may be poorly documented.
What you want is someone who can understand business logic and juggle multiple priorities. When looking at a potential candidate from this perspective, a company can instill a growth mindset within the team that fosters exploration.
How can a junior developer contribute to the team? What impact will they have besides draining precious time away from senior developers? These are questions that can be dispelled by the fact that work culture affects the well-being of workers. According to a study conducted by the American Psychological Association, about 60% to 80% of workplace accidents are attributed to stress. A Harvard Business Review article written in 2015 cited that, according to several studies, positive interactions between coworkers produces positive health results.
When junior devs are placed among senior devs, they have the potential of bringing a love for coding that may have been lost by some of the senior devs. The mentor/mentee relationships can build strong bonds between team members as senior developers may feel that their value within their company increase as they mentor up and coming developers.
The lost opportunity cost of having a senior engineer take time out of their schedule to mentor a junior dev may seem like a reason to never hire a junior dev, but the long term benefits should not be ignored. A junior dev who experiences mentorship from great developers may then become an evangelist for your company.
As their network grows, they may be able to refer talented engineers to your company. More importantly, you create a talent pipeline that allows you to promote within the company. Former junior devs that were mentored well will most likely return the favor and mentor new junior devs.
This is not to say that a company must hire a junior developer. There are some business models–like those of software development agencies–that cannot practically train junior developers.
Also, hiring a good junior dev isn’t much easier than hiring a good senior dev. There is always a list of pros and cons to weigh before making any decision. The point here is that, to those who may feel that junior devs are unhirable under any circumstance, there are legitimate reasons for focusing hiring efforts on junior devs.