Live data from Hacker News

Dear Startups: stop asking me math puzzles to figure out if I can code

countaleph.wordpress.com

51–60 of 354 posts

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#51
It is a good strategy, if the company is interviewing freshers as programming is teachable and the assumption is that new inductee will take few months to become productive. If you can't wait, the best strategy is to give a live coding problem and test the person's proficiency in the required language/technology. I invariably do the latter as my requirements are always very specific. Most start ups I suppose, are themselves undecided on product/market/technology choice and thus the former strategy.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#52
post #41

Here is an interesting idea that I had reading this. As a startup, what if you were to create a simple computer language that looked different from most other computer languages, at least somewhat different. Alternatively, just use one of the many really obscure programming languages out there, just make sure the applicant does not know it ahead of time. Give the applicant a 10-20 page reference manual for the langua…

You would be testing them on the ability to learn a new language. You could test the same abilities using just a custom library. This is a test I used to use on intern candidates. I didn't even provide documentation, just examples of API usages, and was testing their ability to learn from example.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#53
post #49

Earlier quoted context omitted.

> What kind of IQ tests? Math thinking? Language? Other? Both. They're not perfect, but I'm going to be picky and look for people who can generally reason well (both mathematically and verbally). > but that doesn't mean they can code. That's why you pair it with work samples. The ideal hire would be an impressive GitHub + evidence of intellect. The GitHub shows they have coding chops, while an IQ test usually means t…

What if all your most relevant work is owned by previous employers? Restricting hires to people with decent personal projects and/ or extensive open source contributions isn't ideal either.

I'm fine with only hiring people who have done some work outside their workplace. If they're really great at programming, they have the drive to try new things outside work. Indeed, a couple good personal projects is probably the best predictor of skill you could find.

(Skill and interest tend to be highly correlated.)

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#54
post #6

Earlier quoted context omitted.

I think (1) is probably the primary reason, along with the fun factor I mentioned above. But honestly, why can't we just start giving IQ tests? Or at least asking for SAT scores? We shouldn't have to run through training puzzles just to prove we're smart enough to build a site.

> But honestly, why can't we just start giving IQ tests? It's illigal. Or at least very very legally questionable.[1] Theoretically good proxies could be attacked in the same way, but there's a difference between doing something that could conceivably be the basis of a lawsuit and doing something that the Supreme Court has specifically ruled on. [1] See Griggs v. Duke Power Co. (1971) http://finduslaw.com/griggs-v-du…

I meant that mostly rhetorically in that I think that was a poor decision, or at least applied poorly. (Correct me if I'm wrong, but if you can show a high IQ is necessary for the job, isn't an IQ test acceptable?)

Still, asking for SAT scores is still legal and they correlate decently with intelligence.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#55
> Spoiler alert: to solve this problem, you need to know how to enumerate the rationals.

This problem was addressed nicely in this functional pearl by Jeremy Gibbons, et al.: http://www.cs.ox.ac.uk/jeremy.gibbons/publications/rationals... . As interesting as the result is, however, it's a pretty well-made point that research-level ideas from the programming languages community are not really software engineering interview material in the vast majority of cases.

This is yet another example of "rockstar developer"-itis, wherein startups are given to believe that they need the best of the best when in fact they do not. This particular example is entirely egregious because they asked her about something that requires enumerating the rationals when what they really wanted was an iOS code monkey. Then they fired her, based on their own shoddy interview.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#56

Earlier quoted context omitted.

I think you don't get the point. Learning a new language after you programmed for 5 years in a variety of paradigms like assembler, object-oriented, purely functional, will take you between a couple of hours and a week. But if you have NOT had those 5 years of varied programming experience, then the new language is not your problem. Learning the concepts is, and that will take time.

I think you don't get my point: I expect a domain expert to be a domain expert, but I don't expect a trainee to know anything and I'll structure my interview accordingly. I'll ask the domain expert questions about his domain. But I don't expect a domain expert to know the programming language that we work with just because he's a domain expert. And seriously, I'll prefer the eager-to-learn math graduate with little c…

I also think that there might be a mismatch between hiring process and expectations. When you say "But if I have a couple of weeks more" then you obviously underestimate the time it takes to learn if we are actually talking about somebody without much programming experience. Try "if I have a couple of years more".

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#57
post #34

Earlier quoted context omitted.

Not really. Memorising the manual is the strategy of a surface learner. Surface learners can make pretty good PHP programmers, but they'll struggle with, say, passing Javascript closures. A deep learner will look for the underlying principles and abstractions. They can quickly get an overview that, even when it's fuzzy, is still accurate enough for them to know where the gaps in their knowledge are, so they can fill…

What I mean is that people who enjoy programming probably tend to be smart. I haven't done any statistical surveys, but the motivational feedback loop for learning programming rewards intelligence.

I haven't done any statistical surveys, in my undergrad years, I find math students are much smarter than the cs majors.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#58
IMHO, the post is more about the interviewers not understanding what is important for success in the job they are interviewing for than about anything else. If you need a person that will have to switch technologies, languages and paradigms, you have to test for that, make sure a candidate has done it before or is capable of doing it in expected time with expected depth.

If one is good and quick in problem solving or has high GMA, that does indicate that he has the capacity to handle new and difficult things in general, but says nothing about the speed with which he can handle a particular new thing. Author's example with JavaScript is very good illustration how difficult can it be to learn a new paradigm for the first/second time.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#59
post #29

Hiring engineers is hard, and companies haven't really figured it out yet. Even the best companies rely on puzzles and gimmicks that often have little to do with day-to-day programming. At one company I interviewed with, I was asked to implement a queue using two stacks. At that time in my programming career, I had worked with C, C++, Obj-C, Lua, Python, JavaScript, SQL, and a handful of DSLs developing games, game d…

If you're wondering, the "two stacks queue" is an easy way to write a simple immutable queue for a functional programming language. You use one functional stack for enqueueing and one for dequeueing. When the dequeue stack is exhausted the enqueue stack is "flipped" into the dequeue. Amortized runtime is O(1) per operation.

Re: Dear Startups: stop asking me math puzzles to figure out if I can code

#60
post #7

I actually like asking math questions on interviews. It shows how people approach a problem. Asking code questions in an arbitrary interview setting shows just about nothing - no access to a reference doc, somebody peering over your shoulder. Heck, I couldn't code my way out of a wet paperback in that setting. Certainly, asking only math questions is stupid as well, people should know at least a little about the stuf…

Asking math questions might exclude some good candidates. I know more than a couple very productive programmers that did not go through a formal CS education. Asking math questions to those candidates could even scare them for no reason. I hired people who had no idea about Lagrange Multipliers but were able to ship code in various languages and even learn new paradigms when necessary.

There are not only smart people and persons referencing reference manuals. Being a programmer often means solving bugs in messed-up codebases, build web apps using the technology du jour, or making data go from one place to another, and asking math questions does not help a lot to find people able to do this. This blog post resonates with some people I met.

I have been programming for a while, and went through a CS education, but my experience with hiring made me realize that being good with maths and being a productive programmer are not necessarily two things that always come together.

Post reply on HN