You Are Bad at Hiring Good Engineers
Why would you ask a senior engineer something that a student would be better at doing?
Join the DZone community and get the full member experience.Join For Free
I have never asked a puzzle or a trick question to find some obscure algorithmic approach. It had always been instead asking 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 lucky — not even once. It’s always some shitty puzzle or a whiteboarding exercise about some obscure algo that no one does on a typical day job. The software industry has a long way to go to be even considered “mature”.
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 updated real experience.
There is no value to memorizing the details of algorithms that are not part of most systems and if ever needed you can google 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 only 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 works proactively. In other words, you need problem-solving, innovation agents, 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 performs the bubble sort algo, they have 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 straight rather than the weakness. Companies do not need rockstars 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 allow 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.