OK, so, my continuing saga to find a job…
I keep looking for a web dev job. Now I’m expanding the search nationally – as long as they pay enough (which most more than do) it would be enough to compensate for the move and the loss in my current job, and a year or two long distance wouldn’t be the end of the world for us – we’ve had to do it before. If it gets us the future we want, it will be worth it.
Anyway, to the issue – employer tests. I’ve commented on a few of my employer tests. Here are two new ones that annoyed me.
OK, the first one was for a freelance site. It was 45 questions on JavaScript. OK. The problem was that they were all “JavaScript ninja” questions. Forgive me, but is 45 questions like:
let a = (('foo'+false)/5)?(typeof{}+7):7**true%4-1
console.log(a)
the best way to evaluate someone’s ability to build web sites? I don’t mind having some questions like that, but it just seemed too much. I mean, at least 4 of the questions involved unusual edge case of the return of the delete
operator. Is 10% of a web developer’s job dealing with what the delete
operator returns? Again, I wouldn’t mind some questions like this, but why not some practical JS questions? Or different sections of different difficulty?
The kicker? When I got done, it told me my JS rating was “beginner”. Hmmm. How would they know? All they know is that I’m not good at answering JS ninja questions. Then I look down and it says that I am above average. WTF? Are you kidding me? How can I be beginner and “above average”? That’s nuts. How can you even rate someone with a test like that?
OK, from one extreme to the other. This other test asked me no questions about JS but instead was algorithms. Ninety minutes for 3 algorithms. Now, I consider myself pretty good at algorithms, not a ninja, but pretty good. When I go to meetups that do algorithm challenges, I usually do very well compared to my peers, some of whom are CS grads.
But each of the algorithms fall into what I call the “trick algorithm” category. They aren’t straightforward and since the complexity expectations make a brute force solution impossible, you need to figure out the “trick”. The first algorithm was pretty straight forward, just some trig, that was the trick. The next one, I tried to solve with set theory, but that didn’t work so I tried to at least build a quasi brute force solution with some optimization but ran out of time. I should have used a graph with some recursion. The third, ughhh, I think I finally understand what it was asking, but have no idea how to build an algorithm to solve it – I can’t even begin. It was an algorithm to rate another algorithm, both of which were a little off. I knew how to brute force it, but not a clue about an elegant solution.
The kicker? When the score came back, I only got 15% on the first one. Hmmm. How can it pass every test and only get 15%? I know the math was sound. I have to assume that they had a slew of test cases with a bunch of edge cases, but I understood the problem very well so I can’t even imagine what they were. I met the time and space complexity guidelines so it isn’t that. The only thing I can imagine is if they hit it with some data that pushed it to the limits of precision of JS and there was a rounding error.
That’s one of my pet peeves and one of the things that drove me from sites that gamify algorithms – people try to design problems that trick you. And they provide test conditions that don’t accurately represent the range of the problem before slamming you with the real test of unexpected (and sometimes unexplained) limits.
Anyway, just venting. Don’t get me wrong, I think these kinds of problems have a place. It’s just odd to me that some people will put so much weight on them. I’m usually the one defending learning algorithms and things like that. I’m not a “why do I have to learn algorithms?” guy, quite the opposite. But there is a lot more to building web sites than arcane algorithms and obscure JS tricks.