Hiring has consistently been the toughest challenge in any company. If you have been in a startup scene before, you will know hiring good talent with little resources is liken to an ask to walk on water. It is close to impossible but with the right mental framework and skillsets, you can set yourself up to luck’s way.
In this article, I will be touching on a few points:
- General Hiring Guidelines
- Questions you should ask yourself as the hiring manager
- What happens if your engineer is a fresh graduate?
- What technical question do you ask in an interview?
- 6 mistakes you have to avoid hiring software engineers
General Hiring Guidelines
- Dont just hire for what they already know
- Dont hire for what they can remember in an interview room
Whiteboarding is not an accurate test if you are testing for the ability for them to research, brainstorm and finding solutions that are already available in the market. It is easier to say, lets code this, than to find the solutions based on the extensive factors of considerations your business use-case have.
Be wary not to give techincal tests that are hugely irrelevant or does not actually have any more value beyond the test itself. If you are a medical tech company, don’t go about having a test on the travelling salesman problem (unless that is the business use-case).
Create a technical test people are actually excited to complete because you as interviewer was able to help them understand how this test could help them to understand the company’s problem and add real value beyond the test itself. If that are actual relevance between the test and the company’s problems at hand, getting the candidates to share their thought processes behind their code implementation can be of greater value as well.
- Dont hire for degree or their previous company
While individuals whom had held key positions in big companies are valuable because they were the ones to set up the system of success, you have to be wary not to label everyone from the big brands the same. Just because a company was successful doesn’t mean your candidate had anything to do with that. If you are familiar with the other company’s hiring process that you can be assured as a good selector of qualified people, you can use that to bump them to the front of the queue. Beyond that, look at what is infront of you and how he can contribute.
- Dont hire friends and family
The existing relationship creates bias and implicit power structures which may not prioritize the best interest of the company.
- Can they do the job?
You have to be clear what is the gap in the company’s process you are hiring for. It is not the same as “Can they do the job right now” but you need to be assured they can learn how to do the job
- Are you going to get better at this job?
Are you able to demonstrate your ability to learn quickly to a level of providing good value for the company? You cannot predicate the outcome of the hire in the future. Thus you look for close proxies on how they demonstrates that ability to learn and overcome their challenges before them.
- Relevant skills is a plus, not a requirement
Talk about the technology they are going to be working with. Find out how much they know about it. Get them to talk about a topic they know a lot about, and get them to talk about it, and ideally explain it. You want to understand their thought process, troubleshooting process and decision making process. You are looking for ability to grasp complex topics and the ability to communicate these topics clearly. It shows clarity in thought.
- Somebody who is constantly improvement is a requirement
Much more important than what they know is how they learn it and how quickly. Look for individuals with track records of learning new skills and applying them proficiently. Look for individuals with evidences of increasing responsibilities (not the same as seniority, but level of impact to the company). Everyone you hiring will expect raises every year, and thus anyone who is not getting better all the time is going to become less valuable
- Smart and get things done.
You want to look for candidates whom have shipped real software. Do they have real life experiences to lead or anchor an application deployment? Do they know the nounces of getting an app to work properly and predictably in production environment?
- Somebody who can intelligently discuss technology
There are two key aspects of an engineer: under complex concepts, and communicating these concepts clearly. The best products are not done alone. Other than Linus Torvalds. Im not sure how he did it. The job of an engineer is to build and ship products bigger than themselves. They need to work in a team, and that requires them to communicate effectively with his colleagues.
- Somebody who knows that they dont know
When interviewing, you want to try to find an area of expertise where you definitely know more than the candidate. It’s not to prove that you’re smarter. Its important to see how somebody reacts when they find themselves out of their technical depth. Do your engineer have an ego that may hinder his learning ? If so, that could be a potential red flag down the road.
Weakest candidates will try to waffle and make wild guesses which is a terrible sign. Firstly making these wild guesses never work, and secondly, they though it would. In Dunning Kruger terms, these people are in the bottom quartile, unable to accurately judge their won lack of knowledge. It could translate to other situations as well.
Strong candidates generally says “I don’t know” as soon as they hit their limit and may start asking questions. The very strong candidates say “But if i had to guess”, and then attempts to extrapolate. Those are great because it display intellectual honesty and a strong desire to figure things out.
- This is a conversation, not an interrogation
Set up the conversation to allow both parties to know more about one another. As the interviewer, you want to know the depth and breath of your candidates in the technology scene. You will bump into the edge or touch bottom of their knowledge, and that is the point. That helps you to have better sense on the value and competency they are providing onto the table.
You want your candidates to be relax and comfortable in your interview, because that is the state they will be in when they’re doing their job. Stress and panic are not sustainable states, so you risk hiring someone who may only performs when pressured to do so.
Questions you ask yourself as the hiring manager
Ask yourself some questions
- Do you want to work with this person?
There are no one question to answer this for yourself. Its more about how they answers the rest of the questions. When it comes to personalities or fit, please be wary about biases such as personal bias, implicit bias, and unconscious bias.
- Look for somebody to work with
That is the key question, do you want to work with them? Do not confuse it with, do you want to be friends with this person?
- No jerks
You want people with character to build an uplifting and empowering culture. Avoid the “genius assholes”, avoid the bitter and cynical, the bullies, the snobs. There is no level of productivity and brilliance that can compensate the poison of your team’s morale. Once a team culture is broken, it is very hard to fix. Hiring these people even to get you through crucial periods is not worth what its cost. And if you ever hire one by accident, fire them fast and without hesitation. You want people who can think for the team, and is considerate of others.
litmus test: Do you want to work with this genius directly? If the answer is no, then essentially noone would or want to.
- Do not hire for “team fit”
That is very similar to “Let your biases run free”. Here’s the key conclusion: somebody who is good for your team is not necessarily somebody you want to be friends with. You want to hire for the company’s good. To achieve a company milestone, you find a gap in your system and you hire for that. Check for red flags and if that candidate has the skillsets without any red flags, you might be good to consider further. Thus far, its fairly objective. (Keeping yourself aware of your biases)
- Homogeneity is disastrous
Lack of diversity is bad for your company. You need strengths across different persona. If the team is hugely similar, that could be an orange flag for yourself.
Getting some coverage from TechCrunch, or posts from Who’s Hiring in Hacker News. You could also use your own blog to source for potential users. Do not hire, if you are not sure about somebody. If you hire them already, then give them as much support and direction as you can afford to get them to turn around for the better. However, if you do not see any improvement, be ruthless and let them go.
What happens if your engineer is a fresh graduate?
If your candidates do not have relevant prior experiences, then you would have to lean on more traditional technical interviews
Generally anyone whom have coded for less than a year do not have enough time to know if they’re good at it. Fresh graduates do not know anything about interacting professionally. They are a clean slate in which whatever they experience could potentially set the definition of ‘normal’ for a long while.
If your company is large enough for engineers to deeply specialise, you may then need genius programmers who aren’t good at explaining what they do. You can then hire a manager to handle the communication between these engineers and rest of the company. Unless you are past 50 engineers, you generally want engineers whom can both code and communicate effectively.
What technical question do you ask in an interview?
- basic computer programming like binary search, stack, queue, quick sort…
- SOLID principles
- how do you structure your code file
- JS I will ask about the object, how to shallow clone, deep clone, what is closure, the async await and event loop
- How do you do auto search on input? debounce input when auto search
- Deep dive to nodejs will be the child process object and process.nextTick(), setImmediate things
- database, transaction and how to scale db horizontally
- FE I will ask about optimize image, using CDN, and how to avoid blocking render queue
6 mistakes you have to avoid hiring software engineers
- Test whatever that is relevant to your company’s technical stack
- You want somebody who knows enough to do the job right now.
- Or somebody smart and motivated enough to learn the job quickly. Then, you want to test their ability to learn quickly.
- You want somebody who keeps getting better at what they do; their pay will raise, and hopefully the value they can provide as well.
- Your interview should be a collaborative conversation and not a combative interrogation
- You want to enjoy working with this person
- Its important to separate “enjoy working with” and “enjoy hanging around with”
- Do not hire assholes no matter how good they are. They will make your work a lot more painful than it has to be.
- Have a diverse team! For the betterment of your company.
- Accept that hiring takes a long time and its super hard to accurately assess individuals. You got to make the best of whatever time or assessments you got.
- Thought process on hiring
- Companies that give take home tests before interview review
- Senior devlepers refuse interview coding challenges
- Why developers hate coding tests
- Quora how do startups hire software engineers
For more references
Hiring in a startup
One thing done right is to use the technical test similar to whatever we are doing here in the startup
So how do you do hiring in startup?
- cultural fit
- with the biz team
- with the beliefs of the engineering team
- technical test
- Take home test: close to whatever that we are doing here in the startup
- In interview testing with technical questions.
- Find out their style of working
hire to execute fast, but of lower quality or hire a good quality engineer you believe can empower you through to PMF or a strong product?
What about culture of the company
- how do large companies build their cultures with the WFH model?
When should you consider working in person (close proximity), working from home and using a hybrid model?
- what are your factors of consideration?