You’re reading an excerpt of The Holloway Guide to Technical Recruiting and Hiring, a book by Osman (Ozzie) Osman and over 45 other contributors. It is the most authoritative resource on growing software engineering teams effectively, written by and for hiring managers, recruiters, interviewers, and candidates. Purchase the book to support the author and the ad-free Holloway reading experience. You get instant digital access, over 800 links and references, commentary and future updates, and a high-quality PDF download.
When compiling a list of competencies needed for an open role, an obvious starting point is to define what technical skills are needed for the job. Technical skills relevant to software engineering positions most commonly include familiarity with or mastery of a software-related domain (like machine learning or cloud infrastructure), a coding language (like C++), or a tool or framework (like Apache Kafka). Technical skills more broadly involve actionable knowledge related to math, science, finance, and project management, technical writing, and many other fields.
A list of desired technical skills also flows from the outcomes and responsibilities you determined for the role. What technical skills are necessary for success?
These skills may not be strict requirements, but the more concrete they are, the better you or your team can judge them from a candidate’s profile (for instance, when screening resumes) and assess them in interviews or work samples. A good list of skills will also help candidates better understand the role and whether they should apply.
It’s important to think about which technical skills are strict requirements and which are skills that can be easily picked up on the job. For instance, for an entry-level engineering role, you might expect a candidate to have good working knowledge of at least one programming language, and will likely want to assure yourself that they’ll be able to learn other programming languages on the job. It might be worth splitting out which skills the candidate must have to succeed in the role, and which skills would be nice to have—preferred, but not required. Google calls these minimum vs. preferred qualifications and uses them pretty consistently in its job descriptions. It’s tempting to think that all the skills you think you need are must-haves, so it’s helpful to list out all the skills and push yourself to prioritize them.
I believe that you should always hire people who are looking to ‘punch above their weight class,’ which means to hire people who want to be one league above where they are today.Mark Suster, Managing Partner, Upfront Ventures*
Generalist vs. Specialist Candidates
You need a balance between hiring an expert in the area and a great athlete who is flexible and can adapt to your domain.Vinod Khosla, founder, Khosla Ventures*
Typical wisdom says that earlier-stage startups (where teams are small and the nature of the work is ambiguous and variable) tend to hire generalists, while larger companies tend to need specialists. But there’s more to it than that. A small startup in a heavily technical space (like autonomous vehicles) may need specialists from the outset. Some large companies, like Google, try to hire as many smart generalists as possible because they’re better suited to handle the dynamic, changing conditions of the tech industry. Jonathan Rosenberg, former SVP of products at Google, refers to them as “learning animals.”
Of course, it’s not an either-or choice for each role. Indeed, the ideal skill set for many roles is a T-shaped skill set, with both depth in one area and a degree of breadth. For example, a backend engineer working on a critical analytics system may need depth in databases and quantitative skills as well as some basic proficiency in fullstack web engineering.
It’s useful to think about what level of flexibility and specialization your team and company need. Will your team’s needs—and the role—evolve over time? Do you value the ability to move people between roles and teams over time? Depending on your answers and your current needs, you might value generalists or specialists, but ultimately any company ends up with a mix of both.
startupIn addition to preferring to hire generalists at early-stage startups, Dharmesh Shah, founder and CTO at HubSpot, advocates for hiring for talent versus specific skills: “The best people are problem solvers and like to build elegant solutions and are not hung up on specific languages or technologies.”*
Considering “Step-up” Candidates
If you directly map a role’s required responsibilities into skills, you might end up trying to hire people who have performed that exact same role before. That might make sense since they’ve proven they can succeed in that role, and assessing their skills might be easier and more direct. In fact, they may have learned vital lessons doing this task before and may be able to perform even better the second (or third) time around. It sounds like a safe bet, but it might not always be the best approach.
When hiring it is tempting to employ someone who has done it before. You actually don’t want that person. You want someone who is about to do it. After all, if they’ve done it before, why would they do it again? Either they’re not ambitious, not growth-oriented, or weren’t that good in their previous role. No matter which it is, you don’t want ’em.Andy Dunn, co-founder, Bonobos*
No one wants to hire someone who’s clearly under-qualified. But the up-and-comer who wants a “stretch challenge” has something to prove. And in some cases, they might be ready for the role but just haven’t been promoted into it for various reasons—for instance, maybe their old employer doesn’t have room to promote them as long as their boss is around.
You should still be aware that this is a risky strategy. Make sure your stance on taking such risks with external candidates is consistent with your internal processes. If your internal promotion strategy is to only promote people to a new role after they have shown that they can perform it, but you’re taking risks on outsiders, your team will likely feel frustrated.
Common Engineering Roles by Skill
Which of the needs you and your team identified can be grouped together into a set of tasks and attributes that can be accomplished by a single person while keeping that person excited and fulfilled by their work? For example, can you actually make do with one fullstack engineer, or will you need both a frontend and a backend engineer? While the role you ultimately describe may not fit neatly into one of these categories—and the ideal person may not have a rigid or even focused area of expertise or experience—it’s helpful to know what are considered common engineering roles.
Desired Nontechnical Skills
Nontechnical skills (or soft skills) are cognitive, social, and personal abilities that contribute to an effective work environment but are not always easy to measure. They include communication, situational awareness, emotional intelligence and self-awareness, creativity, persistence, adaptability, teamwork, leadership, and time management.
caution It’s easy to focus primarily on technical skills, especially when engineers are hiring other engineers. In reality, it takes a lot more than technical skills alone to succeed in the modern workplace.
Here are some examples of nontechnical skills to consider when defining roles:
You’re reading a preview of an online book. Buy it now for lifetime access to expert knowledge, including future updates.