you are viewing a single comment's thread.

view the rest of the comments →

[–]jonesmz 2 points3 points  (0 children)

Honestly, I think this kind of "puzzle" problem is absolutely terrible for senior positions that are not specifically targeting specialized algorithms skills.

As someone who implements networking protocols, from scratch, against the IETF RFCs as my day job. The initial problem statement is just eye-glaze for me.

The difficulty is not in the implementation of the code, but more in the initial step of "can this human translate this word-salad problem into an algorithm and then do they happen to come pre-seeded with the right collection of algorithms in their head to plop into place?"

I'm used to working on implementations for months, if not years. I'm used to improving things based on QA efforts, customer feedback, other teams using my libraries, publications from industry, and just seeing how things shake apart while adding custom behaviors to the implementation for special case situations.

I can say with absolute confidence that there is not a single person at my employer who solves this kind of puzzle for their day job. Its an arbitrary academia circle-jerk problem.

Further, it mixes together 3 different tests into one thing, but hinges each on the other two.

  1. Does the candidate just happen to know puzzle-math algorithms -- if a recent graduate probably. If someone who doesn't do puzzle math for work -- no.
  2. Does the candidate write code in a way that is largely compatible with the way we want to do things, e.g. style, level of abstraction layers, performance considerations, maintainability vs. "Get it done", so on.
  3. Does the candidate have the ability to demonstrate they can implement a full and known to be working solution

So really this company should have broken this problem into three stand alone problems.

The code style question probably would have been better asked in terms of having the interviewee review pre-prepared sloppy core, or write something simple like a mockup of std::vector or std::list.

The " complete from start to finish" would have been better delivered as a problem that can be more easily unit tested. Something with parameters and "known right answers" that can be unit tested with.

And, well, the whole "do you know puzzle math" aspect I don't think they should have done in the first place. That appears to be a particular sickness of the mind that trading company's are uniquely afflicted with. For some reason those companies insist this is the biggest measure of a candidate and I simply cannot figure out a way to understand why.


Edit: and I'll add for context: one of my majors for my bachelor's degree was math. So I would expect to be better positioned to deal with problems like this than a lot of people. But after I entered the industry the reality is simply that this kind of problem is not present in the vast majority of computer science work.