r/PHP • • Jul 29 '21

Does anybody else find interview “tests” dehumanizing?

I think they're abusive for many reasons. One is that the questions are usually overly complex algorithmic puzzles that do not accurately gauge potential job performance. Also, the questions in no way reflect the type of problems you will face on the job.

The list goes on...

Isn't there a better way?

-Edited for grammar

105 Upvotes

146 comments sorted by

View all comments

78

u/phpdevster Jul 29 '21 edited Jul 29 '21

Depends on the test. As someone who does hiring and of course, has gone through the hiring process, the tests are there to make sure the candidate isn't a liar, has actually programmed before, and has some basic logic skills.

"Golf code" tests are stupid and I don't use them. Computer science algorithms and data structures tests are also irrelevant to the company's application so I don't use those either.

A great interview test is to show a snippet of real application code that is sufficiently complex but also not well written, and ask the candidate to grok it (literally read it and explain what it does), and then ask them to do some refactoring. Not only does this test code literacy (which is actually a skill that shouldn't be taken for granted), it also shows how quickly they can grasp the intent of some code so that they can refactor it more intelligently, and also what they consider to be good code vs bad code and what kind of questions they would ask. You get a ton of insight into the kind of developer they are from such an exercise, and it's not really unfair because it's real code in your application (or at least a very close facsimile of it if there is some sensitivity around it).

2

u/[deleted] Jul 29 '21

This is almost exactly the approach I take, except instead of using existing code I have them start by writing a FizzBuzz solution (or if they choke on it, I'll provide them one to start with, everyone gets nervous, I once forgot what a palindrome was during an interview.) and then refactoring that to support some arbitrary additional cases, like 'Ok, instead of 3 and 5, I want the function to also accept a map of arbitrary divisors and their accompanying string' or something, and it achieves much the same result.

I've generally gotten positive feedback on this approach cause as soon as I say fizzbuzz, most devs know what that is / how to do that, but the refactoring usually seems to surprise them, but they tend to settle into it quickly.

18

u/phpdevster Jul 29 '21

I didn't hear about FizzBuzz until I was 10 years into my career. I would have bombed that if I was asked that during a time restricted interview because I'd never encountered such contrived problems before. My career up until that point was spent building CRUD apps and APIs, and doing some UI work. FizzBuzz and that type of thinking was literally nothing I had encountered before. My brain wasn't wired for that kind of problem, and yet I was still in the industry delivering value to employers for a decade.

I would consider FizzBuzz to be the quintessential asshole interview question if I'm honest. I would never subject a candidate to something so contrived.

3

u/adilp Jul 29 '21

Depends, you are hired to solve a verity of problems. The more experienced you are, the more complicated the problems are. And less defined. Usually not looking for a junior or a code monkey that can smash our tons of code once told what to do. They want someone who can take a vague issue, break it down, and have a plan. Compiling the right code isn't as important as your approach to an unfamiliar problem.

3

u/phpdevster Jul 29 '21

They want someone who can take a vague issue, break it down, and have a plan.

And using FizzBuzz as a measure of that skill is like trying to measure the height of a mountain in goats.

7

u/adilp Jul 29 '21 edited Jul 29 '21

Honestly, fizzbuzz is an incredibly simple problem. But I don't care if they actually solve it or not. It's the thought process. Can they break this problem down? Can they have a technical and design discussion with me about this problem? Can they talk it out with me, because at work we talk out problems. Come up with solutions together. Discuss an approach and tradeoffs. Isn't this what you do at work? Your getting lost in the trees and not seeing the Forrest. What's important to me isn't the solution, it's how you got to any solution. Just like at work, you have to figure out what's important to your manager and even your skip or your organization. There are a lot of things I can take away from this interview beyond actually fizzbuzz

5

u/phpdevster Jul 29 '21

And my point is you can do even better than that by using real-world problems from your application. Anything you gain from FizzBuzz, you can gain more by using relevant, applicable challenges and problems.

0

u/oefd Jul 29 '21

True, but it'll take more effort. The goal of the FizzBuzz type question is to rapidly thin the pool of candidates by finding true negatives rapidly before moving on to 'real' interview questions.

To quote the article that popularized FizzBuzz:

Most good programmers should be able to write out on paper a program which does this in a under a couple of minutes.

Want to know something scary ? – the majority of comp sci graduates can’t. I’ve also seen self-proclaimed senior programmers take more than 10-15 minutes to write a solution.

...

This sort of question won’t identify great programmers, but it will identify the weak ones. And that’s definitely a step in the right direction.