Live data from Hacker News

Interviews Can Be a Terrible Way to Identify Good Programmers

thecodist.com

91–100 of 108 posts

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#91
post #59

Earlier quoted context omitted.

People make several mistakes when analyzing interview techniques: 1. The interviewer and interviewee are after similar and complementary things. Wrong. The interviewee is trying to find out if the work is interesting, whether or not this would be a good place to work, whether or not he or she could work in that environment with that team and so on. The interviewer (or rather the employer) is trying to fill a position…

The cost of a false negative is essentially zero as long as the employer can otherwise adequately fill the position. I couldn't quantify them exactly, but I don't think the costs are zero. For one, any candidate that you bring in and reject consumes (in the case of my company) about 4 man hours of developer time. And that's mostly senior/lead developer time. And that's not counting the time we spend discussing the ca…

adequately fill the position

It's better to think in terms of risks not just costs. Interviewers tend to higher people just like them, which means the team is often filled with people that think the same way and come up with the same types of solutions. On the other hand when you get someone in that can 'do the job' but has a radically different perspective they are more likely to bring something new to the table. To be overly simplistic in a team of world class programmers adding someone with a great UI background can be worth a lot more than yet another world class developer. The advantage being diversity does not require a larger paycheck.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#92
post #5

One of my favorite questions is: "What's the best bug you've ever found?" Usually I get a "Huh?" The really stellar folks will tell you about the bug that took two weeks to find and boiled down to a single missing comma in a vendor's library routine. Or /something/. But "Huh" is a bad sign. "Huh?" is not a fail, but it usually correlates with people who can't write a function to find the length of a string, and I see…

How do you know that those who tell you about such a bug are stellar folk, and those who don't aren't?

I think the question is great to see if somebody is on the same wavelength as oneself and probably a good conversation starter. I'm not sure if it helps with distinguishing between good and not so good programmers.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#93
post #75

Earlier quoted context omitted.

I can read just enough of that that it confuses me why it doesn't work. Care to explain?

The problem is, that (equal 1 1) -> t (equal '(1 2) '(1 2)) -> t (eq 1 1) -> t (eq '(1 2) '(1 2)) -> nil because eq tests for the same symbol, while equal test for the same list. Member uses eq, not equal.

If we are talking Common Lisp, the default test is actually EQL. ((eq 1 1) is not necessarily T).

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#94

No offense, but the only advice I've learned from all these "how to hire programmers" article, as a programmer, is that it doesn't make a damn bit of difference, because every person hiring as their own idea of what works. The best thing I can do to get hired somewhere is be myself. For every person who says not to bother with a resume, there is another person who wants them. For every person who denounces certain te…

Want to know why there's such a disparity? Because some companies are good at hiring, and others suck and don't realize it. Want to know how to separate the good advice from the bad? Look for good companies and learn what their practices are. Find out how their organization works. If they're a lean mean innovation machine that values quality work and ships amazing products at a maintainable scale, chances are better…

Some companies succeed in spite of their engineering teams, and some companies succeed because of their engineering teams. What exactly is a good company? Is a great engineering team backed by incompetent management a good company? Or what about a company that has the full package but is unable to mail out paychecks on time and has a HR department that runs off anybody who exhibits an iota of independent thinking. It's really hard to say until you really meet with the company and spend some time there... and even then it's imperfect.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#95
post #39

Earlier quoted context omitted.

One reason that interviewers ask the same question to many candidates (i.e., seem to have a "pet" problem) is because they have calibrated the question. A strong interviewer has asked that question to respected colleagues at various levels, and many tens or even hundreds of candidates. He knows all the ins-and-outs of the question, and more importantly, knows how to judge someone's effectiveness in that topic area ba…

Congratulations on marrying the interview process to a single question. I hope that question is very close to the core competency you are hiring for.

Maybe every company is unhappy with built-in string searching operations... :-)

It's a rite of passage I think. Programming interviews remind me of rushing for fraternities in college. And once you get to the on-site, the hazing begins...

They probably ask questions similar to the ones that they were asked... so over time they select people more and more similar to themselves and their culture becomes homogenous and inbred.

What would happen if you just refused to answer the question and asked them for something more practical that would actually demonstrate your skill & experience level?

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#96
post #59
post #51

Earlier quoted context omitted.

Interviewing is a perennial topic because it doesn't make much sense. Case in point - over the past week I've interviewed for four positions. Three gave me offers within a day, with very little effort on my part. On the other hand, one told me that I had little idea of what I was doing and told me to study up and apply again next year. And, that was after wasting my time with 3.5 hours of interviews. Of the offers I…

People make several mistakes when analyzing interview techniques: 1. The interviewer and interviewee are after similar and complementary things. Wrong. The interviewee is trying to find out if the work is interesting, whether or not this would be a good place to work, whether or not he or she could work in that environment with that team and so on. The interviewer (or rather the employer) is trying to fill a position…

Interviewing skills and engineering skills are completely different. You should be an engineer if you want to interview other engineers, but it's likely that a great engineer isn't a great interviewer unless they've been specifically trained and coached on how to interview.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#97

No offense, but the only advice I've learned from all these "how to hire programmers" article, as a programmer, is that it doesn't make a damn bit of difference, because every person hiring as their own idea of what works. The best thing I can do to get hired somewhere is be myself. For every person who says not to bother with a resume, there is another person who wants them. For every person who denounces certain te…

Jason, you have a good point... I think that if you want to be HAPPY at a job you should try as much as possible to be yourself when you are interviewing with potential future co-workers. But that said, there are also nuances of the interviewing process that you can learn and then if you want you can choose to use them during an interview. The point isn't to try and get an offer from every company you interview with, since you can only work at once company anyhow. But it's an interesting challenge for hackers to try and hack the system and figure out a way for every company to want to hire them. But it's hard to do that without data.

I think that a lot of the frustration is coming from hackers who were rejected and find that they are left without any additional data to understand what that did or did not do that led to the rejection. Through recruiters you can sometimes hear a hint of why the rejection came, but if you work directly with a company they usually don't say anything except for "we liked you but ______"

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#98
post #5

One of my favorite questions is: "What's the best bug you've ever found?" Usually I get a "Huh?" The really stellar folks will tell you about the bug that took two weeks to find and boiled down to a single missing comma in a vendor's library routine. Or /something/. But "Huh" is a bad sign. "Huh?" is not a fail, but it usually correlates with people who can't write a function to find the length of a string, and I see…

Best bug I helped find was a flaw in some FPGA code for a special DAQ board for a muon detector I was building. When the board was in a temperature above about 74F, the FPGA would often (but not always) fail to initiate some ADCs correctly because some delays would cause part of the circuit to go out of sync, and when it was below, it always worked fine. So, testing in the office worked fine, but running the board ou…

heh cool story...

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#99
post #6

To fix coding interviews in this country, you need to insist on having a great coder do the interviewing. In 90% of the interviews I go on, I get evaluated by an HR type who could not write any program more significant than Hello World. What's funny is that the Non programmer interviewers are starting to administer coding tests, and they don't know what a good response is! So here I am doing a coding tests on a white…

Some good insights hm.

I think that the tests are very important, but it's hard to do them efficiently and to create good tests that test skills that are important to the job at hand.

The tests should have well-defined constraints and instructions, and once the tests are complete the code should be the basis for a discussion about why certain choices were made.

I've basically received the same type of coding test from 10 different companies for the Sr. DevOps roles that I'm looking at... and it's really sad honestly to see what they're asking me to do. It's basically high-school CS where I'm supposed to open one file and pull out specific parts of that file and then compare it with a second file and output only certain lines from the second file based on a comparison with the lines from the first file.

The instructions are poor, and I'm expected to clarify each time with these kinds of questions: "Ok do I need to worry about memory?" "Does this need to work for files of arbitrary sizes?" "Does this need to handle error checking?" "Is it important that the code is readable & documented?" "How long do I have to complete this test?" etc...

But in DevOps, I am given a specific situation that I know a lot about... and based on the situation I am used to answering these questions myself. I should be given a specific and relevant situation... and then create a solution to solve it based on my experience and knowledge of what the constraints are when dealing with that kind of situation...

If I'm given a situation that compares the /etc/passwd file with the /etc/group file, I'm not assuming that it's reasonable/possible in even a system set up by the most bumbling sysadmin that those files would be millions of lines long each... And if they're blank or corrupt we definitely have other issues... If this script needs to run unattended for a long period of time it should have error checking and logging. But if it's just run once I wouldn't need to do everything in software as long as I: 1) make backups of the files 2) 'less' into the files and take a quick look to make sure that there aren't any surprises. 3) Run a test on copies of the files...

Wayyy back in CS 101 did it ever really matter if a one-time piece of code executes in 0.0000000001 seconds versus 0.000000000099999 ? If that is important to you, then please give me a real-world example that requires optimization. Or just specify that the solution needs to be as fast as possible. My recollection was that highly optimized code often needed to be rewritten when future assignments built on the code written in the earlier assignments.

Also fyi for interviewers... if I'm using a scripting language there might be some behind the optimizations that alters the typical CS understanding of the performance characteristics of sets, hash maps/hash tables, and arrays. (See php and python for example) It seems that any question that CAN use a hash map probably should use one in a programming interview... Scripting languages can also handle errors in a pretty amazing way that interviewers may not be familiar with. For example, splitting a string a="a:b:c::::::::::" in python by using b=a.split(':') works just fine and results in b=['a', 'b', 'c', '', '', '', '', '', '', '', ''].

Which brings up a final point... in the real-world, writing a first version of your code in a more generic and unoptimized way leads to code that you can more easily adapt in the future when you rewrite or refactor due to changing requirements. And less optimized code is generally more readable and for other coders who may actually need to read your code and make future changes it can be easier to spot problems or make changes many months or years after you finish your version. But in a coding interview, always assume that they want the most optimized version of the code... but make sure to ask anyhow just in case. Some people may actually care to see if you can code in a way that balances between speed and maintainability.

Testing is important, but it is extremely important to design tests in a way that helps reveal the characteristics that are important to the job you are hiring for. And if something is a google search away and not something that is necessary for the job, it's not something that an experienced coder will keep in their valuable brain-based memory storage.

Re: Interviews Can Be a Terrible Way to Identify Good Programmers

#100
post #6

To fix coding interviews in this country, you need to insist on having a great coder do the interviewing. In 90% of the interviews I go on, I get evaluated by an HR type who could not write any program more significant than Hello World. What's funny is that the Non programmer interviewers are starting to administer coding tests, and they don't know what a good response is! So here I am doing a coding tests on a white…

"That's not how the best coders code, we offload most things to google searches" If that's really what you think, you may want to reconsider who the "we" you're talking about are.

I interpreted his statement as meaning that google searches replace the requirement to memorize minute details of things that aren't commonly used or necessary to commit to memory. For example, I may know about php's preg_match, but I haven't used it in 2 years... so if a project calls for it I can just do a quick search for preg_match and see all the details that I need to know. I didn't have to have everything in memory since I wasn't using it. We have a built-in garbage collector in our minds that slowly clears out things that we don't use. But when we do learn it for a second time it comes back very quickly.

Good coders are clever problem solvers and well-organized thinkers. They don't need to have photographic memories that store every possible command and instruction, even ones that they have never ever used and find no use for. As long as you know what is relevant for the current task and have a peripheral awareness of what else exists, you can do your current tasks and know what to search for in books or on google if something out of the ordinary is required.

Post reply on HN