Live data from Hacker News

Why we don't hire programmers based on puzzles and tricks

37signals.com

391–400 of 460 posts

Re: Why we don't hire programmers based on puzzles and tricks

#391

As Cletus wrote in his detailed comment, "this is the issue that will just never die." We discuss company hiring procedures here on Hacker News over and over and over, because most of us have applied for a job at least once in our life, and those of us who are building up a start-up have to think about whom we would hire. The point in the submitted blog post by 37 Signals, "The only reliable gauge I’ve found for futu…

The claims about U.S. employment testing are completely wrong. This is how it works: there is an unconstitutional insurgency (called an antidiscrimination agency) that counts the number of negros on your staff, and if you come up short, they steal from you to prove how badass their homies are.

They generally leave high-tech alone. Firstly because high-tech will hire a pitch black Indian teenager with an outlandish accent if he can code. Secondly because there are not enough negro programmers from the projects to fill a bus.

In the unlikely event they do come after you for IQ testing, you what the large companies do: keep right on IQ testing, and appoint a director of racial sensitivity. His job is to use "sensitivity" and "nuance" to balance out the staff's "intangible factors". That's Newspeak for running the negro quota and making sure the quotees are selected for a pleasant personality and any sort of useful talent whatsoever.

Re: Why we don't hire programmers based on puzzles and tricks

#392
I have a long-winded blog post about this very subject awaiting some polish.

I've done my fair share of interviews. I still don't like them. I've narrowed it down to basically two things:

1. There is a lot of highly subjective, mystical advice about what "works," in a technical interview and what doesn't. Big problems, small problems, trivia, puzzles, white-boards, no white-boards... hardly any of it is thoroughly studied and built on solid theory. It's all conjecture and personal bias.

2. How the candidate is feeling and where their head is at on the day of the interview matters. I can go on about cache alignments, bus errors, segmentation faults, C++'s lack of order in evaluating function arguments, why template class declarations must exist in the same compilation unit as the definition, why CLOS is amazing and the computation model of recursion is brilliant (or at least why I think so). Yet on a bad day I can (and have) botched perfectly trivial, benign problems.

However at the end of the day you need some sort of process. I just think that the current practices are not good enough. It seems to me that companies are probably turning away perfectly fine candidates without realizing it. There's pros and cons to every approach I suppose. But I still think trivial problems are dumb.

Re: Why we don't hire programmers based on puzzles and tricks

#393
post #365

Earlier quoted context omitted.

Work is social. What do you when a couple teammates walk up to your desk out of nowhere, abruptly interrupt your coding zone, and ask you why the build broke when you changed the FoobarService to return X instead of Y when Z? They can't release the latest features until it's fixed! What you were doing isn't important anymore, you're holding up everything! If you want to work for a web services company: what are you g…

> What do you when a couple teammates walk up to your desk out of nowhere, abruptly interrupt your coding zone, and ask you why the build broke when you changed the FoobarService to return X instead of Y when Z? They can't release the latest features until it's fixed! What you were doing isn't important anymore, you're holding up everything! This should have been caught before it was an emergency, through standard pr…

> This should have been caught before it was an emergency, through standard processes such as integration and unit testing.

Things always go wrong in the development cycle. Problems happen. Conflicts between individuals occur. I was giving an example. Are you asserting these issues don't arise in the workplace? Or that my example is of a rare situation in software development?

> If your coworkers and managers are angry during an outage, or asking anything other than "what can I do to help", they're not helping.

People sometimes do unhelpful things. Sometimes people even make emotional decisions about what to say to others. Are you aware of the fallibility of man?

> Those coworkers need to be instructed in proper workplace behavior.

They likely will be. Have you met engineers? A lot of them could use some workplace etiquette training! Until then, you need to do your job - you can't just go home because it's stressing you out. This is something that happens in every single workplace. If you can't handle it, you aren't a very valuable employee.

> This strategy is how you prevent most failures, and make the ones that happen manageable. Your strategy is how you create failures, and then make them worse for everyone involved when they happen.

This, and the rambling before it, is completely off-topic. I have no idea why you're rambling on and on about software development practices when the issue I'm addressing is that social stress always exists at work. If you feel my examples are unsatisfactory, but don't have any issue with my core argument, then you aren't being helpful. If you have an issue with my core argument, please address it instead of nitpicking my examples.

Re: Why we don't hire programmers based on puzzles and tricks

#394

I have a long-winded blog post about this very subject awaiting some polish. I've done my fair share of interviews. I still don't like them. I've narrowed it down to basically two things: 1. There is a lot of highly subjective, mystical advice about what "works," in a technical interview and what doesn't. Big problems, small problems, trivia, puzzles, white-boards, no white-boards... hardly any of it is thoroughly st…

I agree that the hiring situation in our industry is less than ideal. The irony is that, for all of the data we use and tools we make for others, our hiring practices often rely on few tools, limited data, and lots of gut feelings about what is important.

Take the process of advertising a position and moving candidates through the hiring process - the tools there are almost universally crappy and haven't made a lot of progress in the last decade.

Also, as far as I can tell, very few companies attempt to record any kind of data about how candidates are hired and how they subsequently performed on the job (even tracking job performance is a tough problem) - and it certainly doesn't exist industry-wide.

There is a ton of money in this area - why hasn't there been much progress? Is it because it is an unsexy problem, or is it because it is genuinely impossible?

Re: Why we don't hire programmers based on puzzles and tricks

#396
post #365

Earlier quoted context omitted.

Agree. I have enormous social anxiety that completely wipes out my thought process... But give me a project to do with a due date (ex a school project due in 2 days) and the stress from that actually motivates me to get it done and does not mash my brain up like the stress of being in a social situation like a interview.

Work is social. What do you when a couple teammates walk up to your desk out of nowhere, abruptly interrupt your coding zone, and ask you why the build broke when you changed the FoobarService to return X instead of Y when Z? They can't release the latest features until it's fixed! What you were doing isn't important anymore, you're holding up everything! If you want to work for a web services company: what are you g…

You're just lumping two different things together.

Everyone has performance anxiety at times - whether rare, mild, common, or occasionally overwhelming it's something everyone deals with. Something like public speaking to a room of strangers or flirting with a super model really doesn't share many physiological triggers with diagnosing code you wrote while people you're friends with look on anxiously.

Assuming that because something's easy for you (and most people) that anyone who has trouble with it is likely to be broken in lots of ways isn't too safe a bet.

If someone gets overwhelmed by vertigo on a skyscraper does that mean you won't be able to trust them to drive in rush hour traffic? If a guy pisses his pants when he gets a gun pulled on him does that mean he can't be trusted to be an airline pilot?

Those are exaggerated to make the point, but interviewing is an art. You have great latitude in terms of making people comfortable or uncomfortable depending on your goals. With enough effort I'd be willing to bet you could engineer an interview that would send almost anyone over the edge.

So now that it's just a case of degrees, all you have to do is decide whether you're hiring someone that needs to be able to solve programming puzzles in front of a stranger that's actively critiquing them.

Re: Why we don't hire programmers based on puzzles and tricks

#397

Earlier quoted context omitted.

Sorry that you feel I was obtuse - it's a quirk and my editor side doesn't always step up. Poor communication aside, I was attempting to make a finer point than you read to it. Stress is an extremely broad term medically, and used broader still colloquially. Medically defined stress may include anxiety, but frequently will not. Anxiety, or technically in this case "performance anxiety" is a much more narrowly defined…

Propranolol's patent expired decades ago, it is dirt cheap, and 80 mg is a huge overdose for most people. Other than that you are right. Propranolol is an excellent calming drug.

Thanks for correcting me - I was working off second hand memory

Re: Why we don't hire programmers based on puzzles and tricks

#398
post #44

Sigh. This is the issue that will just never die. Let's just summarize the points: - Not everyone can produce real-world code. Most of what we do for a living belongs to our employer. Side projects, particularly in the US, can be an issue for IP reasons (California is somewhat of an exception here); - Side projects, even open source projects, can be of questionable "real world" value; - I've personally encountered ma…

One thing you're testing for is how well their brain works with an excess of adrenaline floating around in their body. All of the best interviewers I've known take great pains to make the interviewer feel comfortable and chatty - after all, they aren't going to be filled with interview anxiety when they're actually working there. A minority of your applicants are going to perform badly in that situation because the a…

>One thing you're testing for is how well their brain works with an excess of adrenaline floating around in their body.

Unless you are specifically hiring people for a death march kind of project (which I find unwise anyway), targeting people good at high-stress situations doesn't seem very productive.

If your programming projects are a series of high-stress, high-adrenaline runs, either you work for NASA or you're doing it wrong.

Re: Why we don't hire programmers based on puzzles and tricks

#399
post #24
post #14

Earlier quoted context omitted.

Logic puzzles are definitely useful ... how else can the interviewer feel superior (after all, he/she already knows the answer and has probably forgotten how they came by that answer).

If I was given a logic puzzle I would ask them "so how many times in the last year this company had to solve this particular puzzle here?".

And you would have gotten an instant fail on the "cultural fit" criteria.

Re: Why we don't hire programmers based on puzzles and tricks

#400
post #142

Earlier quoted context omitted.

I do something like that. My first test is ask to reverse a string (not using the reverse function!) in any language and/or pseudocode. Is incredible how badly the test goes with the people! I interview for myself or others more than 100 people (of any background, including university, tech schols...) and I think only 10/12 people do it correctly - barely- To make it more fair, I always let them alone. And give inter…

Reversing a string is actually an incredibly common interview question. It's a bit like FizzBuzz (IME even more common, but I can't really speak about the world at large).

It might be an incredibly common interview question, but it's not an incredibly common day-to-day task, particularly when there are methods built in to classes that perform this function. An interesting task? Perhaps. But not reflection of the dev's skills, per se.

You're not asking about syntax with this. It's a problem solving question and at the end of the day, the only real metric here is not whether a dev could code this up, but whether he can code it up quickly, under time constraints, while being stared at, under pressure, with rent or a mortgage on the line, and maybe kids to feed.

I am hard pressed to think of even one real life dev task I had in my entire career where I had to solve a problem under those circumstances. For most devs, we take ownership of the problem and solve it at our desk under reasonable time frames without the spotlight. For bigger problems, we might think about it in the car on the way home. We might sleep on it over the weekend.

That doesn't apply to reversing a string, of course. But you have to consider that, depending on the dev's background and skills, he may be spending time in jQuery, maybe Spring and Hibernate (for Java guys), maybe even some CSS. Maybe he's a GWT guy? Maybe he was assigned to a team dedicated to (God forbid) EJBs. In other words, he may be multifaceted and spends more time working with an API than "just" raw language coding. The language is just a means for working with the API.

And the one thing you want to measure is not something he does daily. Now, if he can't use a for loop, feel free to mock him. But reversing a string? That's clearly a puzzle.

EDIT: I can't get this part out of my mind: "Is incredible how badly the test goes with the people! I interview for myself or others more than 100 people (of any background, including university, tech schols...) and I think only 10/12 people do it correctly - barely-"

So you continue to use that question? Despite the results? So that when you do hire a guy that passes, he won't ever do this on the job because you know you damn well he should use the reverse() method? Because you won't pay him to code it raw and waste time and money when there is a 1.5 second solution to this? That's sadistic. :-)

Post reply on HN