How To Hire & Lead Great Teams
I’ve been a people manager in the tech industry for almost 10 years now. I’ve managed small teams, large projects, direct reports and managers. Like most people my first few attempts at management were failures, thankfully they were mostly normal run-of-the-mill failures typical of first time managers. Nothing horrible, catastrophic or story worthy (sorry to disappoint!).
However through those failures and the successes I’ve had over the years I’ve developed an approach for building and leading teams in the technology industry that I’m going to share so that others can avoid some of my mistakes.
First I’d like to offer a word of caution I always share with potential managers — If you choose to be a manager or executive you must accept that a huge part of the career path you are embarking on is about serving others. It is not about ‘being in charge’ or ‘getting a raise’. Many horrible managers and executives I’ve worked with / for in the past misunderstand this. In order to build an excellent culture and team a leader has to assist and execute.
This means coaching, removing obstacles, helping people navigate politics and similar. Not just telling them what to do or blaming people when things go wrong.
Hiring & Building The Team
Assuming that you need to hire someone, or build a team from scratch this section is for you. If you just need help with how to manage a team jump ahead.
The biggest mistake most organizations make in technology is hiring for ‘current’ or ‘past’ expertise or pedigree. People are not dogs. In fact people are much closer to stocks than dogs, and as the saying goes — past performance does not guarantee future returns. Any manager or exec who has had to fire someone can attest to this.
As a hiring manager you should solicit input from any senior team members you have on job listings you are going to post. Make sure you pre-face this by letting them know that you’ll review but not accept all the feedback. This is important as most companies, states and countries have rules and laws around what can/cannot be in a job listing. However their input is valuable and worth the time to collect and reformat as it may give insight into their perception and hourly responsibilities that you might not have had.
This also gives them a sense of ownership and pride in the hiring process. Which makes them far more likely to assist with on-boarding and mentoring their new colleague and to provide referrals, which are usually the best source of new candidates.
Personally I try to stay away from ‘pedigree’ listings and rote requirements and write job listings which are more descriptive of the day to day expectations and skills needed.
Think of it like this “10 years of Python” is not a skill, its a duration. Further 10 years for you is very different from the 10 years someone else spent in a different company or market space. Instead write this as “Experience with Python 2 and 3 in an HPC environment including SciPy, NumPy, Twisted etc”. Include the stuff you really need, and highlight things you would like to bring in. Don’t expect 100% compliance on day 1. This is the single biggest reason many companies have hiring pipeline problems.
Bad job listings beget bad applicants.
Phone screens, Hacker Rank, resume selection and similar should thin the applicant pool quite a bit. After all those steps the in-person panel interviews are the best closing option. These are of very high value when the candidate and team has had time to prep.
Many in the industry (myself included) advocate you skip the whiteboard, powerpoint and big-O approaches and instead give the candidate a realistic amount of prep and ask them to answer a question or series of questions about how they would approach something that lines up with the job (again convey the ‘day to day’). For example “We had a problem with throughput using Node in the following scenario, how would you have worked / resolved this?”.
The goal of in- person interviews is interaction, not review of a persons resume or ‘on the spot’ skill checks.
Have the team ask questions and interact with the candidate on their approach. If they are just a little wrong it doesn’t usually matter. How can I say that? Because if the candidate did an okay job explaining their thought process and methods but lacks specific domain experience and the team wants to work with them then things will work out (this is why its a panel interview and you don’t just hire based on a resume).
If the candidate is abrasive or doesn’t mesh well you will likely have issues that impact further/deeper than a node.js scalability problem (for example). People are much harder and more expensive to fix and adjust than technology is, and this is why panel / team interviews are crucial.
I know what you are thinking and yes you absolutely should ask for references and follow up on them. I’ve had several people list fake supervisors and family members on their resume. Obviously this wont fly. For people who lack a robust resume ask for teachers, project leads or supervisors at places they volunteer to fill this role.
Also while I appreciate the usage of Github and similar as a review component do not make the mistake of thinking code on the internet is a substitute for a reference validating the candidates skills, professionalism etc.
Making a Hiring Decision
Get feedback from the team and review resumes, github, references and similar for all the candidates for an hour or so (depending on the size of the pool). See if there is a decisive winner. If there is this is easy. If there are a number of similar candidates things get a bit more difficult and you need to start considering other elements.
- Salary / compensation expectations. This is still a business. At the junior end there isn’t usually a large delta, but people 10–20 years into their career often have 20k+ salary differences from their peers. Our industry is remarkably non-standard here.
- Team chemistry and diversity. Do NOT hire someone just because they get along well with the team or have a specific pedigree, diversity (of any sort) is a huge benefit. While you want to ensure the candidate can do the job and make sure the team works well together (don’t hire someone everyone hates) you should consider taking the #1b candidate who has a different background. This will often help in ways you cant predict.
- Location. If the team is all remote then timezones matter. If the team is all local and likes to hang out near the office hiring someone with a 2hr commute has some risks affiliated with it. Not just for the existing team, but also for the person who now has 4 extra hours a day dedicated to getting to/from the office.
Leading A Team
So now that you have a team in place, or at least some parts of a team you need to figure out how to make them and the broader organization successful. This is much harder than it sounds, but below are some tips based on my experience in doing this. If you have any further idea’s or need advice please reach out, I’m more than happy to lend some guidance.
It sounds simple, but this is where most managers fail. The most common crutches I hear managers mention is that “communication is a two way street” followed by “I’m too busy” — basically being lazy and expecting others to carry the load. While nobody bats 100% here you must do the best you can.
People look for any excuse to avoid hard or awkward conversations. Rise above this behavior as a leader.
Make yourself available to your team via their preferred method of communication. Email, Slack, IRC, SMS. It doesn’t matter, be online and approachable just like you should be in real life. This is especially critical if you or your team are fully or partially remote.
Force regularly occurring communication, including the dreaded 1 on 1's. Your busy. Your people are busy. It doesn’t matter. Put the meetings on the calendar and make sure you prioritize them over other things. Too often this type of cadence gets pushed to the back burner. I’ve been guilty of this just as much as anyone, so I know its hard, but you have to make it happen.
Remember that communication doesn’t have to be limited to “up and down” the chain. One of the most powerful lessons I’ve picked up from working in Open Source over the years is that lateral / peer to peer collaboration is every bit as critical as boss-employee (or maintainer/lead to contributor) communication.
Peer collaboration yields the most rewarding and consistent results while helping to enforce a robust culture.
Setup team wide calls. Start internal team projects. Get people working together and growing together and let the team drive. The results of something this simple will impress you and have a larger impact than you expect. This is also a good way to let individuals test their leadership capacity and you can challenge people to put in the work to stand out in a less risky area than on a major client or release.
Build Loyalty and Improve Team Morale
Actions speak louder than words. This is especially true in management. Most people can see through a manager who doesn’t (or can’t) help / support them, and that ultimately results in employee churn and low productivity and morale. None of which is good. However that doesn’t mean that you should shy away from making bold, motivational and candid statements (more on this below).
Make sure your actions support the statements you make.
The reason sometimes loud and brash leaders have hordes of people supporting them is because they have built up the loyalty of those people over time by supporting them with actions. One of the biggest things you can do to build loyalty is support your people when they fail or make poor choices. Don’t let anyone make a mountain out of a molehill and ardently avoid anyone playing the blame game or acting like a seagull. Nothing kills morale and team chemistry faster.
Defend your people, especially when they fail.
Conversely in my experience the routine “job well done” emails / rewards are usually not as effective at building loyalty as defending someone when they make a mistake. This sounds counter-intuitive but most people know when they’ve done a good job and freak out when they mess up. Thus the simple positive gestures only provide marginal increases in happiness. Point being — you should still do the small ‘at a boy/girl’ stuff, but that should only be 1 tool in your arsenal, and the most important time for you to be available and making a difference is when things are going haywire.
Be Transparent & Honest
Hard times bring hard decisions and bad news. That is always true, but often we all make the mistake of skipping over the difficult decisions when things are going smoothly. After all who wants to rock the boat? I do, and so do you.
If you dump bad news on an already bad situation you are effectively turning a thunderstorm into a hurricane. If you dump bad news on a good situation you are an afternoon shower on a beautiful summer day. Now ask yourself — Which scenario sucks more?
You also need to ensure this is understood by your leadership team. People and teams can take only so many lumps in a short timeframe before things reach an irreparable state. Being transparent with people as decisions are happening can help pace the (potentially bad) news and give them more clarity. It also gives you as a leader a better way to present updates: “Remember a few weeks/months ago when we discussed funding for this project …” goes over a lot better than waiting for the employee to ask and replying back with “The project wasn’t funded”. Also as the old saying goes: bad news travels fast. Know that before you share.
Likewise if you forget something, apologize and be honest. You are human and your people will respect you more for your honesty than for glazing over something. Just don’t make forgetting things a habit, what seems small to you may be a world changing situation for someone else.
Lots of managers fail to socialize how good their people are. This is a problem because when your rock star engineer number 2 asks to attend a conference that will cost the company $5k you have to explain to your boss who this guy is, and why this is important (and this pattern repeats up the chain). Promoting your people is a 24x7x365 activity as a leader and makes your life much easier when bonuses and budget requests come around. Remember that bad news generally travels faster and ‘sticks’ much more than good news does, so in essence you need to be a cheerleader for your people as much as possible to offset this.
This is especially true if you are 2 or 3 levels up the chain, as the actions you take have a much more significant impact than team leads and similar first level managers.
This also means that as you move up throughout your career (either as a manger or as an engineer) you absolutely have to keep coaching people to socialize their wins and champion their peers. If you have a peer rewards system in place that is great, but make sure you encourage the team to thank each other and give accolades publicly as well. This is truly one of the most difficult things for introverts in the tech industry to do, so make sure you help them as much as you can.
Take Advantage of Passion
The last tip I’ll give you is to understand what people really want to work on, and get them lined up to do it. This starts with hiring, but extends forever, and people’s desires often shift so make sure you stay on top of it.
Sometimes what an engineer or manager wants to work on seems like a poor fit (eg an introvert recruiting people) or will require you to juggle resources on a few teams to make it happen. You should put in the effort to help them anyway. Even starting them with small side projects, getting them a mentor, make it a part time assignment. Outlining the steps they have to take to get there. Anything helps. You must capture their passion and interest.
Not only will this build an immense amount of loyalty it will also help diversify the skills and people on your teams — resulting in a higher level of capability and output from those teams.
Remember — happy people are productive people.