TL;DR (too long didn't read):
- The candidate must have a demonstrated hunger to continually learn
- The candidate must be a culture fit
- The candidate must demonstrate humility
On with the background...
Throughout my years of hiring experience that began 20+ years ago, I have learned a thing or two. I've read many articles and books about hiring in the software industry and heard many opinions on the topic. The result of my years of experience is a set of principles that I follow when hiring. But before I get to these principles, let me explain what lead me to them.
Because I'm hiring from a management standpoint, I pay attention to aspects beyond just the candidate with the best technical skills and/or qualifications. I focus on team building which encompasses a myriad of aspects far beyond just technical aptitude. For me, team building requires the consideration of many different cross-cutting aspects beyond technical abilities. Below are just a few of the skills that candidates must possess:
- Exhibit the skills necessary for software development
- Demonstrate the ability to constantly learn and do it proficiently
- Want to work as a team and collaborate closely with teammates
- Communicate well
- Behave like a professional
- Manage their own work schedule
- Fit the culture
- Demonstrate empathy and humility
- Not be an asshole
- Etc.
- The candidate must have a demonstrated ability and hunger to continually learn
- The candidate must be a culture fit for the company, the environment and the people
- The candidate must demonstrate humility and empathy
These three principles serve as a litmus test for a broad set of aspects as I noted further above. Here is some explanation around each of these principles:
- The candidate must have a demonstrated ability and hunger to continually learn - I have met some engineers through my career who chose to go very deep with a very narrow skill set and no interest in spending time on things outside this narrow track. Without the interest to learn new topics and, the desire to do so all the time on an on-going basis, I have watched these people never move their skill set, never stretch themselves. For some positions, this approach is necessary. But for many/most positions, given the changing landscape in technology, I have found that the best candidates are always willing to make themselves uncomfortable to learn new things. Given the willingness to learn, a candidate must also be proficient at learning. If they find themselves pining away and making little progress, then they need consult someone they trust who can help them identify and conquer the hurdles they are facing. If you're willing to do this, it demonstrates a deeper sense of self which lends itself to things like helping others, being part of the collective, etc.
- The candidate must be a culture fit for the environment and the people - Culture fit can mean a many different things. But, as I mentioned above, for me this term embodies the behaviors, expectations, norms, thinking, values (what is acceptable/unacceptable), working time, work ethic, etc. During interviews with a candidate, I have found it to be invaluable to include folks from the team where the open position exists. Everyone should be coached to take note of both verbal and non-verbal cues from candidates as there are many signals to be picked out that inform you of their true nature. Then, assessing these signals after the interview with the entire panel of interviewers oftentimes winds up telling a much different story than any one interviewer can tell about a candidate. Also, the questions you ask candidates can help to reveal many things, so be conscious of what you're asking and why you're asking it.
- The candidate must demonstrate humility and empathy - This one is a bit odd for some people because it delves deeper into the psychology of a candidate, but it has proven to be very important measure over time. Anyone who has worked with people who have big egos will be able to recognize this -- the rock star developer who ignores input from others, the developer who sits in the corner coding away with zero communication, the developer who has high standards for themselves but does not want to take the time coach younger or newer team members, etc. When hiring members of a team, you are doing team building and this needs to be taken seriously. Teams of developers should operate like a team, not like a ship full of pirates who can't come together to deliver. This requires the ability to empathize with teammates, to assist one another, to exhibit a compassion for others, to be respectful, to be kind and to be humble. Without these characteristics, there may be serious disagreements on a team, even if those disagreements are not vocalized. Without an eye toward how one affects their teammates and how their teammates affect them, as a manager, you are just missing the boat.
While these principles have worked for me, they may not work for others for various reasons. In the past, I have read that people don't leave a company, they leave a manager. While this can certainly be true (I've had my fair share of bad managers), I have left numerous companies not because of my manager, but because of the culture or the processes within the company or the lack of career growth opportunities. The three principles that I have outlined above assume that your company culture is healthy, useful and not problematic. If they are problematic, then as a manager you should be working toward improving them so that they are not problematic. When the culture and/or the processes are standing in the way of good hiring, all the principles in the world will not help you.








