Live data from Hacker News

People suck at technical interviews (2014)

seldo.com

301–310 of 315 posts

Re: People suck at technical interviews (2014)

#301
post #203
post #135

Earlier quoted context omitted.

My first tech job assignment required SQL. I didn't know it, didn't claim I knew it, got the job, read the O'Reilly book on SQL on the plane on my way to California. I learned about joins (although maybe not the JOIN keyword). This was about the time MySQL came out, and years before Postgres added SQL support, so at the time your rather pathetic argument might have had merit, because there wasn't actually a way to ge…

"If you don't know enough SQL to do a join, it's because you lack intellectual curiosity. " Or other things have grabbed your interest. Are you saying that one lacks "intellectual curiosity" because they have had other priorities than learning this one specific technology?

If you're a programmer of any kind, sooner or later, you need to understand the relational data model and normalization. They're useful to you in every field of programming; they're one of those magic technologies that can frequently turn 200 lines of code into 10 lines, converting a day-long task into something so simple you can do it off-the-cuff. SQL is by far the most accessible way to use the relational data model, whatever the merits of Tutorial D and Prolog, and once you start normalizing your data, you need joins.

If we were talking about cuckoo hashing, 386 assembly, or FIR filter design, I would agree that it's "one specific technology" that someone could easily pass over with little loss in many programming fields. But not knowing how to do a join is more like not knowing how to open a file or use floating-point math: it's a crippling deficiency in your skills as a programmer, one that will slow you down in a wide variety of tasks.

Re: People suck at technical interviews (2014)

#302

Earlier quoted context omitted.

5 years of SQL experience and no idea of what a join is? Isn't that like saying 5 years of C/Java/C#/... experience and not knowing what assignment is?

I don't thinks so. You don't have to use join, but you might end up with loads of queries instead of having just one, but the end result will be the same set of data.

Or you can use where a.id = b.id and you cover 90% of joins (inner join). I only once needed an outer join in the last 10 years all other cases and here inner joins. And I prefer the where syntax, it's cleaner for me than the join one.

Re: People suck at technical interviews (2014)

#303
post #66

Earlier quoted context omitted.

> They should however have told you that before the test. He should have been able to figure that out before the test. It was a test of his problem solving abilities, not his Google-fu.

He did solve the problem.

Only in the most literal sense. The developer who thinks that their job only consists of translating very precise literal instructions to another set of precise instructions will very soon be out of work. That is a thing that is easy to automate. The developer's value lays in being able to translate vague and very context dependent instructions to precise instructions. This guy clearly failed at this.

Re: People suck at technical interviews (2014)

#304

There needs to be a bit of a shift in understanding what 'category' of worker a programmer 'is', both by companies and more importantly by (some) individuals themselves. Programming is both technical and artistic. It's a creative endeavour that relies on technical skill to complete. The best analogy to another profession would be to those in the 'technical arts', those like photography, joinery, painting, sculpture,…

Except that the vast majority of programmers essentially say "I'm very good at taking pictures, but I can't actually show you any of them because they're all property of my previous employers, and I never take pictures just for myself". > I think programmers should create their portfolios of personal or paid for projects that showcase their technical and artistic skill and companies should take those seriously. 100%…

100% agree, and Github in particular is great for this

No, it's useless for this, because companies don't look at it. That would require the recruiters and interviewers to spend more than fifteen seconds prepping for the phone-screen call, and we can't have that.

Incidentally, after my last job hunt one of my new policies was that I hang up on any company that throws me into their fizzbuzz phone-screen after being the one to initiate contact with me. If they didn't think I had the skills they shouldn't have reached out in the first place, and if they do think I have the skills they shouldn't need to waste my time and an interviewer's time on the fizzbuzz question.

(I say this after multiple companies tried to recruit me with a "we want a Django committer, that's why we're contacting you" pitch and then put me into their fizzbuzz-esque phone screens)

Re: People suck at technical interviews (2014)

#305
post #212

There needs to be a bit of a shift in understanding what 'category' of worker a programmer 'is', both by companies and more importantly by (some) individuals themselves. Programming is both technical and artistic. It's a creative endeavour that relies on technical skill to complete. The best analogy to another profession would be to those in the 'technical arts', those like photography, joinery, painting, sculpture,…

Portfolios are a good heuristic, but you can't be sure the person actually wrote the code/took the pics, which is why you need some other way to verify they're actually capable of producing that work, not just copying it. Hence technical interviews. Even for a programmer with a portfolio, it's vital that you be able to probe them with questions about design decisions and expose someone who didn't actually write it. D…

Even for a programmer with a portfolio, it's vital that you be able to probe them with questions about design decisions and expose someone who didn't actually write it.

Repeating what I said in another comment: during my last job hunt I had multiple companies which contacted me, unsolicited, asking me to apply to work with them, because they wanted an "extremely senior" Django person, preferably a committer (I got my commit bit in 2007). Every company which contacted me like that also put me into a fizzbuzz-esque phone screen. There is no sense in this; my work is publicly verifiable and vouched for (sometimes in an extremely literal sense, as it's my PGP key that provided the signature on a bunch of release packages of Django), so either they believe I am who I am, in which case no need for a fizzbuz, or they don't, in which case they shouldn't have been contacting me in the first place.

My policy now is to hang up on any company that reaches out to me for a skill they know I have, and then fizzbuzzes me in spite of that knowledge.

Re: People suck at technical interviews (2014)

#306

Earlier quoted context omitted.

We were looking for statisticians. Still not a great question, maybe. But you grab whatever is in your bag.

1/6?

The question is a weird way of asking "do you know the definition of expected value?" Expected value is calculated by taking each possible outcome, multiplying that outcome's value by its probability of occurring, and summing the results. So to calculate for a six-sided die, where each outcome has probability 1/6, you simply multiple each possible outcome by 1/6 and sum those results:

(1 * 1/6) + (2 * 1/6) + (3 * 1/6) + (4 * 1/6) + (5 * 1/6) + (6 * 1/6) = 3.5

Of course no actual roll of the die will ever come up 3.5, but as you roll the die more and more times, the average of all results seen so far will begin converging on 3.5 (and given infinite rolls, that's where it would end up).

Re: People suck at technical interviews (2014)

#307

That companies now insist on running the Google-style whiteboard-algorithms-coding-skill-testing-question type of interview tells me that there is no shortage of programmers to hire. Because as far as I understand it we use that process at Google because we can afford a lot of false negatives because we are inundated with a lot of resumes. Smaller companies and startups surely are not, and finding candidates must be…

I would gather if companies like the ones you mentioned adopted new ways of interviewing, or at least randomized it in way that it couldn't be easily cloned, other companies would follow suit or adopt their own style. The challenge is that every companies wants the "best" engineers and believes they deserve it... So in their minds, they do what they think the "best" do. I have heard more than a handful of CTO's and c…

If there was really a shortage of qualified programmers, companies would be working to improve their interview practices.

From this thread, and my own experience, things are going the opposite way. Companies appear to be able to afford to use more and more arbitrary filters. Which indicates an excess supply of great candidates!

Re: People suck at technical interviews (2014)

#308

Hiring Manager Perspective: Everyone lies, sorry. As a candidate, I hate technical interviews. For the reasons above. As the poor schmuck asked to make the hiring decision, however, I've learned that I can't live without them. My technical isn't complicated. A very basic SQL assignment (delivered to an audience which claims to know SQL) that is followed by a few broader database design / data process QA questions. En…

> As a candidate, I hate technical interviews. For the reasons above. As the poor schmuck asked to make the hiring decision, however, I've learned that I can't live without them. Yeah, many of these kinds of blog posts strike me as being out of touch with what hiring is like. So don't ask about algorithms, don't ask to write code, don't ask to use a whiteboard and ignore if the candidate can't handle the pressure of…

How are you expected to weed out unsuitable candidates?

Here are my rules:

1. Phone screen coding is optional. If someone is vouched for by a reliable source, you don't fizzbuzz them.

2. The phone-screen question, if used, should not presume any type of formal university CS education (i.e., asking for algorithm regurgitation is right out). Not every good programmer has a university CS degree (many of the best don't), and even among those who do, the longer they've been out of school the less of that stuff they'll remember. Their brain has long since paged the CS 101 algorithms out or even cleared them entirely to make room for the working set of things that actually turned out to be relevant to coding for a living.

3. Good phone-screen questions have solutions in under ten lines of code. Ideal phone-screen questions have solutions in under five, or may even be one-liners in your company's preferred programming language.

4. Once a candidate is past the phone screen, or once you've decided they can skip it, you get to ask them exactly one more question that involves writing code.

5. The final code question must be realistic both as a problem and as a set of conditions. Your employees write solutions to real problems, in editors or IDEs, so to find out whether someone could succeed as your employee that's what you should test. Being able/unable to solve contrived problems by coding on a whiteboard is a completely unrelated skill and does not indicate or rule out ability to solve real problems in an editor or an IDE.

6. The final code question should be a "homework", designed to take a baseline-qualified candidate approximately an hour or two to complete, but to be completed at the candidate's leisure (i.e., set a deadline a day or two after you give them the problem). They should not have to solve it perfectly in 20 minutes on a whiteboard. They should be able to use common/standard libraries. They should be able to use Google or look things up in books they have lying around. They should be able to try running their code and correct errors that turn up when they do. They should be able to do those things because those are job-relevant skills and job-relevant skills are the things you want to test, remember?

7. The interview portion of the final code question should be a collaborative review of the code, discussing design decisions, tradeoffs, and areas where it could be improved/expanded/etc. Being able to present, discuss and review code with others is a job-relevant skill.

8. In a real dev job, at most 15-20% of a developer's time is spent in directly writing code to accomplish a task. The remaining 80-85% is spent in determining requirements, researching approaches to problems, making design decisions, soliciting feedback from peers, reviewing existing or new-but-peer-written code, writing tests, writing documentation, and performing all the other mental and bureaucratic tasks which accompany the act of coding. In light of which, time spent directly writing code to solve interview questions is not permitted to exceed 15-20% of the total time taken by the interview process. The remaining 80-85% should be focused on getting to know the candidate well enough to determine how they'll do with the tasks that will take up 80-85% of their time on the actual job.

I've done my best to phrase this politely. It's based on (as of this point) 15 years of getting paid to write code and having been on both sides of the interview at multiple companies and for multiple positions at multiple points in that time span. But if it helps, feel free to put it in terms the typical tech interviewer is familiar with and think of this as a sort of fizzbuzz for interviewers/managers: anyone who can't figure out how to implement these things may not be qualified to be an interviewer or manager.

Re: People suck at technical interviews (2014)

#309
so I seem to be alone in this.

although whiteboarding is not representative of Industry workflow, I feel that it can be used as a metric for communication. everybody knows that it's coming, and everybody knows how to practice it. if you perform poorly on whiteboarding that means you didn't practice it. it's a learned skill it's not a natural thing.

anybody I've met who complains about having trouble in whiteboarding has also never seriously practiced it.

Re: People suck at technical interviews (2014)

#310

Earlier quoted context omitted.

It's genuinely surprising what people don't know. "If I roll this d6, what will the average be over time?" I've asked this to loads of supposed graduates, and apart from the odd one who made the "WTF are these monkeys hiring me for" face, a lot of people can't figure it out from first principles. But a lot of people choke on it. Also I've had people choke on very basic general knowledge like "think of a large emergin…

I suffer, on occasion, from depression and anxiety. When I'm having an episode, my brain doesn't function. I don't mean that I can't solve problems. I mean I can't hold a conversation. I wonder if the reason so many people fail is because we've essentially put them in an artificial situation that shuts their brain down. (I have also been dumbfounded by the inability of recent CS graduates to do FizzBizz... I feel lik…

> I don't mean that I can't solve problems. I mean I can't hold a conversation.

That sounds really hard. I'm sorry.

But I can't imagine any interview technique which would work reliably if you're brain dead during the interview.

Post reply on HN