As an engineering director, I experienced an epiphany moment at one point in my career. I realized that developers shouldn’t be expected to do it all. In fact, most of them simply can’t do it all. Full-stack developers are great at getting a project started, but most lack the depth of knowledge required to truly make a project successful. I have seen amazing designs from very talented designers implemented into lackluster features from “full-stack” engineers. On the other hand, I have seen too many front-end engineers design terrible database structures for a back-end data processing system.
Skill Depth versus Breadth
Not all developers are created equal. I actually think it’s better that way. Recently, I had to decide whether it was worth forcing my entire team to learn a specific technology or hiring someone with that specific skill. After merging a few teams into my broader team, I became responsible for projects utilizing WordPress and PHP. My back-end engineers are C# developers while my front-end engineers are React and NodeJS developers. As I started to dig deeper into the WordPress tasks, I realized it only required half of a developer’s time. Did it make sense to spread this work out across the other 9 other developers? Of course not, that would result in more randomization and ramp up. I prefer to have the knowledge of how to use WordPress contained within only one developer on my team.
Building a team of developers who specialize in a diverse set of skills is more impactful than building a team of developers who all dabble in a variety of different skills.
Hiring for Skills
All developers are not created equal — they each have their own strengths and weaknesses and as a hiring manager it is my job to identify any skill gaps on the team and fill them appropriately.
Once the skill gaps are identified, and the budget for the position is approved, we follow these five steps to find the perfect candidate.
- Write a very targeted job description that outlines the required skills for the job.
- The recruiter performs the first phone screen. This is an opportunity for both the recruiter and candidate to verify interest on both ends — is this role the right fit?
- Issue a coding challenge through HackerRank, or any software that can remotely test skills. We might skip this step for more senior candidates, but we typically send out a coding challenge to verify that yes, this person has the skills they say they have.
- The hiring manager performs a phone screen. During the phone screen, I look for their ability to talk through their resume, show deeper knowledge of the work they’ve contributed to and show interest in the actual job description. Many times I have posted a front-end engineering position, only to hear that they eventually want to move to back-end or vice versa. If the candidate is only using the job as a stepping stone it can lead to a very unhappy employee much sooner than anticipated.
- Schedule the candidate for an on-site interview. Put together the best of the best to interview the candidate. This is the true test and we want to make sure we’re testing them for the skills they’ll need on the job. It’s a mix of whiteboard or laptop coding, system design and meeting with various people across the company to evaluate alignment of values and passion.
Providing a Strong Offer
Once we find the perfect candidate with the right skills, we want to present an unbeatable offer. In order to make the best offer possible, we work with HR to determine the proper salary range based on the required skills for the job. These skills can have a big impact on the pay range based on how valuable those skills are in the market. It is not unusual for a hot skill to move a salary by more than 25%.
In 2017, I had conversations with the other engineering managers about the difficulty in sourcing Senior Front-End Engineers with React experience. React was initially released in 2013, so you can imagine how hard it was to find engineers with React expertise and 6+ years of industry experience when the technology itself was only 4 years old. With demand high and supply low, the premium for knowing this skill needed to be accounted for when pricing this job.
Sometimes, skills that are valuable to your company are not always valuable to the entire job market. Let’s say you have legacy code written in C++ that’s core to your business. Even though there may not be premium for C++ developers out in the world today, it’s vital to the survival of your organization. Thus, it’s important to work with HR to ensure that the impact expected of the employee is reflected in the offer, regardless of how valuable the skill is in the market.
Determining The Value of a Skill
Any organization that competes for technology talent in today’s market needs to have a strong understanding of how to properly compensate employees for their skills. Fortunately, at PayScale, we are uniquely positioned to do just this. PayScale has been collecting data on the relationship between compensation and skills for over a decade. Aware of the growing need for this data, we have created a new product that surfaces the impact a skill has on compensation. PayScale’s Skills Differential Engine will provide its customers the ability to see both the skill differential for a given job and prevalence of that skill in that job.
My experience as an engineering manager has taught me that the best teams are made up of specialized engineers. My experience as a hiring manager has taught me that you will lose the best talent if you don’t take skills into account when compensating. And my experience as a PayScale employee has given me a leg up when determining how much a skill is worth in the market. As the market for technology talent continues to get tighter and tighter, companies need to tap into PayScale’s wealth of skills data to help them compete in the market.