Hacker News new | ask | show | jobs
by segmondy 2611 days ago
You can judge programmer's ability in 60 minutes. Can someone program? 60 minutes is way more than enough. How great of a programmer are they? You're going to need more than 60 minutes, unless already had a chance to look at their prior code base.

What's difficult to judge is, are they organized? are they hard working? how do they handle stress? how's their communication and attitude? do they write great documentation? do they test their code? are they a great team player? how creative are they?

Due to time constraint of an interview, someone might be more sloppy than usual. Their might be the interview stress which is different from regular work stress, interview stress can impact their communication, etc. But if we focus plainly on technical skills, you can flush that out in 60 minutes.

I'm a hiring manager, and I have never failed in hiring someone who didn't have the required tech skills. Technical ability I can always hit spot on, the tough one is determination and soft skills. Some of the folks I took chance on, who displayed terrible soft skills during interview turned out to be champs, communicate great, work hard, etc. A few that were very eloquent during interviews were a disappointment, sloppy in development, poor communication in practice, etc.

People also grow, so someone that was a bad fit/interview for you, could in a few years grow and become great. Potential is also difficult to spot.

6 comments

The thing that gets me about coding challenges restricted to such a short time frame is that what might seem like a simple problem can actually be pretty nuanced. This gets even more tricky when the interviewers encourage you to be "creative", which can be interpreted as meaning that one should try to be less conventional with how they code, which may mean they address an issue in a less than pragmatic way.

Last year, I interviewed with a well-known media company, and they gave me a take-home coding challenge which was essentially about building a notes application in Rails that philosophically replicated a file system; notes could exist in any part of a hierarchy of directories, but no same file could exist in multiple directories at once.

Seems pretty simple, right? Anyone with a fair amount of experience with Rails would probably whip up some models for folders and notes, folders would has_many :folders and has_many :notes, and notes would belong_to :folder, etc. A solution along those lines would probably have sufficed for the coding challenge, as it would demonstrate knowledge of Rails.

But I couldn't just leave it there. That kind of solution would have been extremely crappy in a situation where there is a huge amount of notes in deep directories. After a few hours of careful thought, I came up with a solution similar to how Amazon S3 works, where directories are really just keys in a database and the stored files(or notes in this case) are the values of those keys.

My solution had the advantage that directories and their files could be queried through simple string matching, meaning that queries scale linearly with deep and complex directory structures rather than exponentially. The only case where things might be less optimal is during directory renames, in which case all sub-directories and files would have to be found and updated, but I considered that a compromise since renames happen less often than reads and writes.

They liked my solution enough that they flew me out for an on-site interview, and they said that nobody else came up with that solution.

Would I have come up with that solution if I was given 60 minutes and had someone looking over my shoulder? Probably not. Such limitations prevent taking time to think and letting the mind ponder, which is valuable.

If that challenge was done in 60 minutes, they would have assessed that I knew Rails but probably wouldn't know how I actually approach problems.

Great example. I was doing a sudoku solver for practice recently and I spent a lot of time thinking and writing small functions, to the point where I was done but without implementing backtracking (for hard puzzles). I believe readability is a top 1-2 trait and my solver code looked fantastic. I don’t think I could do that under stress of an hour interview.
> You can judge programmer's ability in 60 minutes. [...] What's difficult to judge is, are they organized? are they hard working? [...] do they write great documentation? do they test their code? [...]

You answer in the affirmative, but then go on to clarify that you're excluding 95% of the job. I would simplify this to say "no, you can't".

> Can this person code at all? How well?

He's trying to draw the distinction between these two questions.

The distinction is meaningless. No company wants someone who can merely code (as determined by their ability to solve fizzbuzz-type stuff). They want someone who can code well.
I think you're missing the point.

The purpose is to Filter out people who can't code at all.

If you've ever hired developers you know how many people show up to interviews and genuinely cannot program to save their life.

>>The purpose is to Filter out people who can't code at all.

You shouldn't need a 60-minute in-person interview to figure out that they can't code.

what about someone who can code FizzBuzz well?
Thank you.
> Potential is also difficult to spot.

I think that’s true, but I also think that hiring managers rarely try to look for it.

I was on an interview, and one of the reasons I didn’t get the job was because in my current position I manage a “small team.” That team is 5 people. They had 8 people to manage. I understand that each extra person adds extra challenges, but 8 is only a little bigger than 5.

I think you can filter out people who suck in 60 minutes. I think there's little chance you can differentiate between "competent" and "good+"
> How great of a programmer are they? You're going to need more than 60 minutes

That's clearly what the OP was saying.

What's your false negative rate?