I'm curious. We're trying to hire for our startup and have no clue what sorts of questions to ask. An algorithm based interview doesn't make sense, nor does it seem appropriate to give senior engineers (8+ years exp) a take home project.<p>We ideally want someone who is<p>1. Adept at good architectural and design patterns.<p>2. Understands library internals and performance nuances.<p>3. Can scale a complex codebase with software engineering practices (Test cases, CI-CD, migrations, etc)<p>4. Can mentor the team to better themselves.<p>How do you test for all these?<p>Note : None of us currently on the Frontend team have over 4 years of exp. The person coming in will be leading the team.
Try the Ashley Madison approach to hiring:<p>First, accept that the vast majority of people you want to hire are already employed and normally couldn't be bothered with your startup. The leftovers are either really unlucky or not worth hiring.<p>Second, go after the top 98% and leave the others for the rest of the industry. Don't waste time trying to interview them beyond a quick phone screen on personality, because any time of theirs you ask for is extremely expensive to them and you need to acknowledge it from the start (or they'll not respond). Offer them _more_ than they're earning now. After you find one you like, and you're willing to pay them more than they're currently getting, and they're willing to jump ship for that, close the deal as quickly as possible.<p>This works because their current employer vouches for them (by employing them), and their current employer is presumably a better judge of technical skill than your team is. So leverage that skill instead of cobbling together some facsimile yourselves.<p>The downside for this approach is that if they're currently earning $200k and you have a budget of $120k for the position (or even $220k), you're not going to hire anybody. It's a shared delusion in the industry that everybody can lowball the senior talent and they won't wise up.<p>It's been said before, but it bears repeating. For senior talent, you're not buying the job, you're selling it. It's a buyer's market and you need to play motivated salesman and not choosy PITA customer.
I ask for basics.<p>Why? There is a lot of stuff happening in the top layer of everything (UI, full-stack, os/cloud/vm/container)... and it is impossible to evaluate properly knowledge in that area.<p>BUT... If I ask for basics (OS, Database, organization, how to isolate processes from each other, how to scale), I can see if the answer is solid technically, if the candidate can articulate an answer, how she/he communicates.<p>Also, I always ask for a projects candidate is proud of.<p>I want to hear what (s)he did, and why. Architects have to decide stuff, so I want to hear the whys and the why nots.<p>Then I ask what the would do differently now in the same project.<p>Reject the candidate if (s)he would do everything the same way: there is always room for improvement, and shit usually happens.<p>This is a sign other people did the work, or the candidate has a complicated personality that might backfire after hiring.<p>(edit: sorry if the answer looks a bit harsh)
The great thing about anyone who's working in their trade more than five years that you can actually ask them "what were the most interesting projects you worked on" and get a meaningful response. I would ask him about the experiences of what you just listed here and go with the flow. Also you may want to read about CAR (context action result) interview method to have a better understanding how should you structure your questions about these topics.<p>What was the worst problem erformance wise he had to overcome? What was the largest team he ever supervised, why did he get in that position? If you talk about these kind of questions for a good hour or two you already will feel something about this person. You then have to transorm this feeling to a yes or no as a team. As he will be your future mentor and technical leader I would interpret the "yes,but..." And "no, but..." Answers as "no".
Prepare a few questions for each trait you care about and then ask all candidates the same (or sample of) questions.<p>Grade the candidate on each trait based on how well they answered the related questions and pick the best one.<p>Because you know the questions you can prepare and not be intimidated to ask someone more senior.<p>For instance:<p>How to design an app that feeds from two radically different apis? (no need for detailed code)<p>What perfomance practices they used in library/framework/their own code and why?<p>What test cases they would write for (a simple) given spec?<p>Ask them about instances were they mentored/helped/coached teammates.<p>Good luck.
Hey, just posting an interesting blog post that was linked previously on HN and got 973 upvotes[1]:
<a href="https://hiringengineersbook.com/post/trouble-hiring/" rel="nofollow">https://hiringengineersbook.com/post/trouble-hiring/</a><p>(I am not affiliated with them in any way)<p>[1]<a href="https://news.ycombinator.com/item?id=18955731" rel="nofollow">https://news.ycombinator.com/item?id=18955731</a>
With senior engineers, you tell them what you do and ask them their opinion on it. Pay attention to their questions. Ask them what they think would improve the system. Pay attention to how they diagnose your system.