You Are Bad at Hiring Good Engineers
You Are Bad at Hiring Good Engineers
Hiring the best engineers isn't just about seeing who can pass coding tests the quickest, and many good engineers get excuded by these practices.
Join the DZone community and get the full member experience.Join For Free
I have never asked a puzzling or a trick question to find some obscure algorithmic approach. It had always been, instead, me asking them to come up with design solutions and creative implementation for real-world problems.
But when I got to the other side as a candidate, I have never been so lucky — not even once. It’s always some shitty puzzle or a whiteboarding exercise about some obscure algorithm that no one does on a typical day job. The software industry has a long way to go to be even considered “mature.”
Take the famous fizzbuzz test: why make people waste their time writing a test if you can simply ask, “Are you aware of the modulo operator?”
Whiteboard and coding interviews routinely ask people to re-implement some common solution or low-level data structure. This is the opposite of good engineering. A good engineer will try to maximize productivity by using libraries to solve problems. Why would you ask a senior engineer something that a student would be better at doing it? Those are academic problems and only new-grads are ready for it.
Imagine doctors and pilots being hired based on those tests rather than real experience. There is no value to memorizing the details of algorithms that are not part of most systems and, if ever needed, can be Googled in 15 seconds.
It seems I am not alone on this.
Don’t hire based on what they can remember in an interview room! Prioritize operational experience. You don’t just need a tech team that can solve problems as they arise, you need them to be able to identify problems earlier than your customers. You need a team that can identify areas of growth and work proactively. In other words, you need problem-solving, innovation agents and efficiency improvers.
When hiring, look for the candidate who has made mistakes, participated in different challenges and spent a decent amount of time in the trenches. This is the best way to know that someone has the operational intuition needed for success.
As Steve Jobs once said, “People with passion can change the world.” And I believe that great engineers are passionate about resolving problems with technology. So if a professional has the experience and loves what he does the performance in the bubble sort algo has no importance for me.
Much more important than what they know is how they learn it, and how quickly. You are looking for somebody with a record of learning new skills and applying them successfully. Talk about their career path, and look for evidence of increasing responsibilities. Try to find out how engaged is your candidate with the software development industry and his view about what is to deliver quality software, then explore the extents of their expertise.
Remember when interviewing, your role is to find the strength rather than the weakness. Companies do not need rockstar individuals, but strong teams.
Be the Company that Says, "We are mentoring."
Today, companies create ridiculously complicated multi-step interview processes that filter out candidates that are “not good enough.” We rarely give an opportunity to candidates spoiled by shitty companies and bad influence. We forget that some candidates weren’t lucky enough to meet an inspiring mentor or work in a supportive team.
Instead of trying to predict future performance by asking tough questions and sending candidates through long circles of hell, you can hire candidates with a growth mindset and grow them.
Every successful founder talks about how at a certain point in a companies history, people become your best capital and your biggest asset. So be smarter when hiring and don’t treat your candidate as a machine. if you get it wrong, it is can be the difference between success and failure.
Opinions expressed by DZone contributors are their own.