Articles

Hiring Software Engineers? 7 Engineering Leaders Share Their Biggest Lessons

by
Carmo Braga da Costa
August 5, 2022

“If you look at an organization and study the root cause of everything that’s good and bad, it’s going to be the people. You have to hire good people in order to be successful.” - Erik Bernhardsson

We’ve spent many hours talking to engineering leaders on our Developing Leadership podcast. They are industry experts who have built high-performing teams and generously share their knowledge with other engineering leaders. 

It’s rare to go by an episode where our guests don’t mention the importance of hiring. So we’ve gathered some of the key lessons on building engineering teams, such as:

💡 Key mindsets to adopt and key questions to ask during interviews.

💡 The sort of skill sets you should prioritize when recruiting.

💡 Moments when it might be best not to hire new people (and what you should do instead).

This is not a step-by-step guide to hiring software engineers, but if you keep these nuggets of advice close by, you’ll improve your chances of success as you scale your engineering organization. 

Set expectations, quickly.

“What does it mean to successfully bring someone on board into my organization? It means that people come in with the right set of expectations. They know the job they’re getting into, and there won’t be any surprises.” - Dana Lawson, SVP of Engineering at Netlify

“I tell engineering candidates early on in the process: This is matchmaking. We want you to feel comfortable with the organization you’re joining. So we tell candidates who we are, how we operate, and how we think.” - Andrew Conner, Co-Founder and Engineering Leader at Levels

Hiring is like speed-dating. You’ll meet many potential matches in a short period of time, and you’ll only spend an hour (at best) with each candidate.

A short interview will never tell you everything about a person, but the opposite is also true. Most interviewees have no idea what sort of organization they’re joining. You expect nothing but honesty from candidates, and they should expect the same from you. 

It pays to be transparent as possible to find the perfect match for your organization. Be open and direct – tell them exactly who you are, how you work, and what you expect from them in this role. Be specific. As you build your engineering teams, this will set your organization up for success. 

Invest in technical conversations.

“I love a technical exercise that’s also a technical conversation. The most important thing for any software development team to have is collaboration and cooperation. How are they going to demonstrate how they contributed to a project effectively? And can they effectively communicate any impediments they encountered?”- Dana Lawson

Technical exercises are an integral part of most software engineering interviews. They help candidates prove that they can walk the walk and talk the talk.

But does the technical exercise in your job interview accurately reflect the job you’re hiring for? Because if it doesn’t, you might be testing for the wrong set of skills, and your new hire will feel disillusioned about their new job.

So, make your technical exercises technical conversations by:

1. Deciding which skills you’re looking for and what you wish to understand about your candidates.

2. Asking the right questions – perhaps about exciting projects they’ve been involved in – and inviting candidates to detail how they overcame challenges.

Technical conversations will help you hire a person rather than a skillset. As Dana Lawson says: “I’d rather have a strong engineer that everybody wants to work with than the most badass engineer of all time who everybody thinks is a jerk.”

So what qualities should you look for in your candidates? That brings us to our next lesson. 

Look for people with a “default-to-action” mentality.

“Software engineering organizations need people who see something and say, ‘this is probably not right. Maybe I can do something about it’. Hiring is critical for this.” - Andrew Conner

If your team is full of people who always do things by the book, your organization won’t reach its full potential. Inefficient or ineffective ways of doing things become habitual, and people become unhappy.

You individuals who take initiative.

Look for people with a default-to-action mentality. Skilled at seeing the bigger picture and unafraid of trying new things, their drive and initiative can take your organization to the next level. These will be the future leaders of your org, so watch out for them. 

Of course, not everyone on your team will have this default-to-action mindset. So what other skill sets should you look out for? 

Build diverse teams.

“I wanted a team of some junior people, some senior people, and some people from different backgrounds. A diverse team.” - Dana Lawson

“We wanted to work with people who we’ve never worked with before when we started putting together our founding team.”- Sam Alba, Co-founder of Dagger

Building a successful software engineering team requires diversity in skill sets and backgrounds. 

It helps to have individuals who take initiative, but you also need good communicators. You want people who can spot and communicate bottlenecks, so engineering leaders can help the whole team move forward. And, of course, you want highly technical engineers. 

You can get this essential mix of insight, instinct, collaboration, and communication by aiming to hire as diverse and inclusive a team as possible. So look for candidates from a range of backgrounds and with different levels of experience.

Create a great system, and you’ll have great engineers. 

“Great engineers don’t make great teams. It’s the other way around. You become a great engineer by working as part of a great team. Being part of a great team allows you to absorb the best  techniques learned from hundreds of thousands of engineering hours. You become a high-performing engineer just by being around other amazing engineers.” - Charity Majors, Co-founder, and CTO of honeycomb.io

Software engineers work in incredibly complex systems. If any part of that system is slow or understaffed, or if anyone’s spread too thin or working overtime, you’ll have a working environment where it’s difficult for anyone to flourish.

Hiring a talented new engineer won’t magically make an underperforming team productive. You need to start by building an engineering-first company culture.

Create a system in which any software engineer you hire is bound to thrive, and your organization will thrive too.

Ask yourself if hiring more people is the best solution.

“I’m a fan of throwing money at problems. If you can throw money at a scaling problem to make it go away, great! Do it. Money is cheaper than time. But we’re not even doing that intelligently. It’s easier for you to get approval to hire ten engineers for $2 million than it is to get approval to spend $500k on a tool that would replace ten engineers.” - Charity Majors

Scaling is hard. You want your organization to grow cost-effectively and sustainably. And you might think that hiring more software engineers will solve all your problems, but adding more people won’t make your organization more productive. 

A lot of organizations get to the point where they're hiring new software engineers just to fix specific problems. Unfortunately, this will lead to  individuals working on a small selection of unrewarding tasks that give them no opportunity to be creative.

You’ll get the worst of both worlds: a stressed and frustrated workforce with no corresponding rise in output.

Take the time to assess the problems you’re facing, and explore all possible solutions before you resort to hiring someone new. Sometimes investing in the right tools can make your scaling much easier to manage than simply expanding your workforce.

Spend More Time Hiring.

"Unless you're spending like 40, 50%, of your time on it, don't tell me it's hard to recruit, just do more of it. To me, this is the number one lesson in recruiting: You just have to put a lot of time into it." - Erik Bernhardsson, Founder, Modal Labs

Why would we tell you to "spend more time hiring" right after we advised you only to hire when you need to? Because when it comes to scaling your engineering org, you need to give it your all.

Modal Labs founder Erik Bernhardsson speaks to many engineering leaders who've struggled with recruiting. The one thing all of these leaders have in common? They spend 5% or less of their time recruiting. Which is not enough. 

Software engineering leaders serious about building a fantastic team should spend 40 – 50% of their time recruiting. 

But wouldn't it be great if you already had a handful of supremely talented individuals in mind for every role you need to fill?

Adopt an “always recruiting” mindset.

"I don't particularly like to use Twitter. But it's an excellent funnel for a certain set of things. For every person I end up talking to, I ask myself: 'I'm slowly recruiting this person. What are they excellent at?' For nearly every single person I interact with, that's how I think." - Jason Warner

Some engineering leaders will build relationships with people – on social media, networking, consulting, and so on. And they adopt a mindset where any of these individuals could be the person to fast-track their organization's growth.

"I may never hire that person," Jason says, "But that's how you have to look at life when you're interacting with people."

We love this mindset, and as an engineering leader, you should too! 

If it’s not working out, move on as soon as you can.

“You should hire great people. But you should also ensure that you correct the problem quickly when you hire the wrong person. That’s tough. It’s not easy to fire people, but it’s an essential part of the job.”- Sam Lambert, CEO of PlanetScale 

What sort of people do you want working with your organization? You want people who share your vision and are committed to working towards your company’s goals. 

It might take some time for your new hires to find their feet. But you’ll learn pretty soon what sort of individuals they are. Are they the type who always has an excuse for why they underperform? Or are they the type who constantly tries new things, gives their best, and works tirelessly to overcome an issue?

The latter are keepers. The former? Not so much. And if they linger around for too long, they could bring your whole team down.

As an engineering leader, a massive part of your job is to hold people accountable and revitalize the parts of your organization that aren't doing well.

And when the time comes to let someone go, remember: it’s on you. Because it usually means your hiring process wasn’t foolproof.

Learn from the best engineering leaders

Every two weeks we bring industry experts to our podcast to talk about the ins and outs of managing software teams at different stages of their organization. Leaders from GitHub, DataDog, honeycomb.io, neo4j, and more!

We’re passionate about developing exceptional software engineering leaders, and our discussions with the best and brightest can help you on your journey.

If that sounds cool, subscribe to the Developing Leadership podcast!

If you want to find out how the right visibility tool can help scale your organization, let’s chat