HACKER Q&A
📣 melenaos

Pre-Interview Programming assignment


I want to make my first hire and I have no way of testing undergraduate/graduate students since they don't have any professional experience or well thought code samples to review.

My thoughts are to ask them to make a simple program that they can demonstrate their coding style/skills.

I want to test the object oriented mentality they get from their Uni and whatever they solve the problem with messy code or they took their time to write comments and properly format the code and variables.

Do you have any suggestion? How much time they should invest? Are there any tools that can help them finish their task online/ test the result?


  👤 brudgers Accepted Answer ✓
Why are you hiring people with no experience?

👤 davismwfl
Don't. While I disagree with testing experienced candidates, new-grads it is ok if done correctly, but it is never ok pre-interview. You need to interview the candidate and talk to them first and then if you find they are a decent fit then do some further testing if it is needed.

Pre-interview testing is basically saying two things, 1. You don't respect the candidate or the candidate's time and 2. You don't know what you are doing.

Your most important job is to build a team, which starts with interviewing. Testing people like this isn't building a team it is starting the relationship off adversarially and telling the candidate you are more important than they are and you don't value their time. And frankly, whether the candidate articulates it or not, they'll have that feeling. Just because it has been somewhat common to do this, doesn't make it correct. I can't believe how many stupid mistakes the tech industry has to relearn every decade or two. We went through all this in the dot com boom/bust but many startups today still did not learn from our mistakes back then and continue to repeat them.

New grad interview method:

1. Call them on the phone (or video chat) and talk to them. Spend 10 minutes getting who they are and some background on them. Just talk to them as a human being not some "tester". Then spend 10-15 minutes and just ask a series of technical questions but vary the level of those questions randomly, e.g. ask something easy, something hard etc. Ask them some basic thought questions on design, this helps you see how they think. The most important part of this call is seeing how the person communicates more than anything else, and the small technical interview is just to learn if the candidate is worth a more thorough interview, and this is how you protect your time and not waste it interviewing a bunch of non-qualified people. In sales terms, this is qualifying your lead.

2. If they pass step 1, either bring them on-site (or do it over phone/video if they are remote) and complete a more in-depth dive into their thought process around design, more technical questions and get to the point you know whether they know their stuff you need or not (this may even be 2 different people calling and interviewing the candidate or doing it onsite). Don't ask useless questions here that the company isn't actually using today or in the next 6 months and be realistic with this. If you are writing a web page that 10 people might look at in the next month, stop asking how to write complex data structures, you might still ask about them to learn about what they know, but it isn't a deciding factor on interviews. The most important part is be realistic with what you need now, and who the person is. That doesn't mean settle for incompetent people, just that you need to be realistic with your expectations, especially if you are not offering market wages.

3. If they pass step 1 & 2, then have them interview with a non-technical team member(s), for small startups this would be a founder, for larger it would be project/product manager types. This interview is more to help confirm the feelings from the other interview that the team fit is good and the candidate adds to the company and can help it grow.

4. If there is still some question on this person, provide a small test or challenge to them, and tell them it is to help you solidify your decision. Make it 1hr or less and then make your decision.

For a small startup this process should be less than 10 days, ideally less than 5 from the first interview. If you aren't doing that you are wasting too much time and it should be a red flag you are not focused. This is also how you can get really good candidates before larger companies snap them up, because you move fast you can get the better candidate usually at a better price than the larger startup or enterprise.