Was I too harsh?

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Wed May 23, 2012 7:14 am UTC

Oops. I've been away and didn't realize what kind of discussion this had generated.

Ben-oni wrote:Be kind: the five years was probably the time she spent getting her undergrad.

Nope. Five years professional experience in Java software engineering positions.

Ben-oni wrote:@Pesto: What would you have thought if someone presented this solution during an interview?

Partial credit for correctness, but now do it without creating new Node objects.

Carnildo wrote:I've got 25 years' experience with programming, and I can't guarantee I won't mess up the end case on the first try.

Almost everyone screws it up on the first try. The problem is that she couldn't debug it once it was almost correct, at which point she rejected her initial (mostly correct) approach and proceeded to fall apart.

b.i.o wrote:It seems like she can mostly code, but made a couple of mistakes. I'd want to have another person (or two) interview her if at all possible.

Four people interviewed her. Three down votes, one up vote.

Steax wrote:When it comes to things like linked lists, I think I'd pass anyone who could at least explain how they work and what they're for.

IMO, this is a recipe for hiring bad programmers. Describing data structures and programming with them it are two very different things, and you don't hire programmers to just talk about programming.

I've also seen a lot of people saying that she shouldn't be docked for unfamiliarity with the language. I can tell you, she had no problems with Java as a language. What she had trouble with was reasoning her way through the algorithm, which was the whole point of the test.
Last edited by Pesto on Wed May 23, 2012 7:24 am UTC, edited 1 time in total.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Wed May 23, 2012 7:21 am UTC

Sorry if I was unclear. By "explain what they do", I assume they can mention various methods and properties they have, with minor bits of code. I just mean I don't tend to demand actually fully functioning code.
In Minecraft, I use the username Rirez.

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Wed May 23, 2012 7:31 am UTC

I stand by what I said. One method of one of the simpler data structures is about as minor a bit of code as I'm willing to accept.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Wed May 23, 2012 7:37 am UTC

I think that's an acceptable test, yes. Where I differ is in my opinion that she performed well enough, despite failing the full task. Just being able to work through the code and determining the basics of what she needed to do, while only failing at one particular bit, is acceptable for me.
In Minecraft, I use the username Rirez.

HungryHobo
Posts: 1708
Joined: Wed Oct 20, 2010 9:01 am UTC

Re: Was I too harsh?

Postby HungryHobo » Wed May 23, 2012 7:48 am UTC

Steax wrote:It's fine if their point of view is within our reach. The problem is when they're immutable blueprints made by someone we don't know, can't argue or discuss with, and can't communicate well with. Interviews that set in stone an exact task down to unnecessary details are planning for this sort of behavior, and I think it's not necessary. It's why I encourage interviewers to discuss and argue with their counterparts.


Way I see it: part of the test can be to see, when faced with an unreasonable or impossible requirement, whether you can express your concern clearly and talk through changing things rather than just ignoring the spec or coming up with something that's not quite right.
Give a man a fish, he owes you one fish. Teach a man to fish, you give up your monopoly on fisheries.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Wed May 23, 2012 7:52 am UTC

HungryHobo wrote:
Steax wrote:It's fine if their point of view is within our reach. The problem is when they're immutable blueprints made by someone we don't know, can't argue or discuss with, and can't communicate well with. Interviews that set in stone an exact task down to unnecessary details are planning for this sort of behavior, and I think it's not necessary. It's why I encourage interviewers to discuss and argue with their counterparts.


Way I see it: part of the test can be to see, when faced with an unreasonable or impossible requirement, whether you can express your concern clearly and talk through changing things rather than just ignoring the spec or coming up with something that's not quite right.


Sounds like a valid point to test, yes. But it'd be best done separate from the actual coding test.
In Minecraft, I use the username Rirez.

HungryHobo
Posts: 1708
Joined: Wed Oct 20, 2010 9:01 am UTC

Re: Was I too harsh?

Postby HungryHobo » Wed May 23, 2012 8:10 am UTC

Steax wrote:Sounds like a valid point to test, yes. But it'd be best done separate from the actual coding test.


that would defeat the point, you have to be able to do so when there's also a little voice in the back of your mind saying "but what if there's actually a way of doing this I haven't thought of".

They're not going to turn around and say "and now on to the section on dealing with unreasonable requirements"
Give a man a fish, he owes you one fish. Teach a man to fish, you give up your monopoly on fisheries.

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Wed May 23, 2012 8:11 am UTC

Steax wrote:I think that's an acceptable test, yes. Where I differ is in my opinion that she performed well enough, despite failing the full task. Just being able to work through the code and determining the basics of what she needed to do, while only failing at one particular bit, is acceptable for me.

Not for me. Most people I interview complete this task, and even if they do, I still might turn them down. Not completing it is pretty much an automatic disqualification.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Wed May 23, 2012 8:14 am UTC

HungryHobo wrote:
Steax wrote:Sounds like a valid point to test, yes. But it'd be best done separate from the actual coding test.


that would defeat the point, you have to be able to do so when there's also a little voice in the back of your mind saying "but what if there's actually a way of doing this I haven't thought of".

They're not going to turn around and say "and now on to the section on dealing with unreasonable requirements"


No, you just present two different tasks, one to challenge their problem-solving skills and communication skills, and the other to challenge their programming language capabilities. Turn around and say "time for a your second assignment."

Pesto wrote:
Steax wrote:I think that's an acceptable test, yes. Where I differ is in my opinion that she performed well enough, despite failing the full task. Just being able to work through the code and determining the basics of what she needed to do, while only failing at one particular bit, is acceptable for me.

Not for me. Most people I interview complete this task, and even if they do, I still might turn them down. Not completing it is pretty much an automatic disqualification.


Ah. In that case, I concede. It really does depend on how everyone else does.
In Minecraft, I use the username Rirez.

HungryHobo
Posts: 1708
Joined: Wed Oct 20, 2010 9:01 am UTC

Re: Was I too harsh?

Postby HungryHobo » Wed May 23, 2012 8:27 am UTC

Steax wrote:No, you just present two different tasks, one to challenge their problem-solving skills and communication skills, and the other to challenge their programming language capabilities. Turn around and say "time for a your second assignment."

Fair enough.
Give a man a fish, he owes you one fish. Teach a man to fish, you give up your monopoly on fisheries.

User avatar
Zamfir
I built a novelty castle, the irony was lost on some.
Posts: 7604
Joined: Wed Aug 27, 2008 2:43 pm UTC
Location: Nederland

Re: Was I too harsh?

Postby Zamfir » Wed May 23, 2012 9:06 am UTC

@Pesto, that 'harsh' remark from your boss is the core of your problem, right? If I were you, I'd go to your boss and ask why they said you were harsh, and listen carefully to the response. Even if you stand behind your conclusion, you still need to know why you sound harsh.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Wed May 23, 2012 12:57 pm UTC

Pesto wrote:
Ben-oni wrote:@Pesto: What would you have thought if someone presented this solution during an interview?

Partial credit for correctness, but now do it without creating new Node objects.

Ah. I think I may have to have disqualified the interviewer at this point. Java is garbage collected, and object oriented. Creating and eliminating objects is one of the things it's meant to do efficiently (whether or not it does being a separate matter). Regardless, it's still O(n) in both execution time and memory consumption. Anyone can do the standard in-place reversal. The elegance (if it can be called elegant) of the solution I proposed indicates a different mode of thinking. Regardless of whether or not I would use it in production code, an interviewer who fails to appreciate it isn't someone I would generally like working with. On the other hand, if it were presented by my interviewee, I would snap them up. Especially if they used reflection to implement fold and passed it the Node constructor (despite the fact that reflection decreases execution speed by a couple orders of magnitude in Java).
Last edited by Ben-oni on Wed May 23, 2012 1:48 pm UTC, edited 1 time in total.

User avatar
freakish777
Posts: 354
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: Was I too harsh?

Postby freakish777 » Wed May 23, 2012 1:42 pm UTC

Zamfir wrote:@Pesto, that 'harsh' remark from your boss is the core of your problem, right? If I were you, I'd go to your boss and ask why they said you were harsh, and listen carefully to the response. Even if you stand behind your conclusion, you still need to know why you sound harsh.



This.

Again, valid concerns are valid. Now say them with tact to make sure you don't come across as insensitive.

ImagingGeek
Posts: 380
Joined: Fri Aug 06, 2010 6:41 pm UTC
Location: Canada

Re: Was I too harsh?

Postby ImagingGeek » Wed May 23, 2012 2:25 pm UTC

I am not a computer programmer, so I can offer no inside information, but I do hire a lot of people for technical (i.e. scientific research) positions. IMO, the ranking of the candidate was to harsh, and moreover, the test was poorly designed and rather pointless. One of the skills I do look/test for is the ability to use "programming-language" like scientific software (matlab, SPSS, etc), which require a similar skill set to bona-fide programming.

Firstly, the candidate clearly has some ability to code (otherwise she would have failed the test completely), meaning your assessment was wrong, even by your own standards. All you can really surmise from her 'test' was that she either cracked under pressure or needs to reacquaint herself with some forgotten methods. If you really wanted an example of her coding abilities, asking for examples of past projects/codes, or a "take-home" mini-project would have been far more indicative.

Secondly, the test itself doesn't test for anything useful - any half-brained moron can be taught the basics of coding; what makes someone good at it is the ability to design, implement and troubleshoot code that meets the projects requirements. Asking someone questions about syntax, or to write a basic script in a unfamiliar/not recently used language, under extreme pressure, doesn't even approach testing for those qualities. A more structured set of questions would be far more useful - i.e. 'how would you approach design problem x', or "you write code to do y, but get the following error; how would you identify the source of the problem', will tell you far more about their abilities than a simple "write code to reverse this list". Even the most experienced individual will make mistakes - what really matters is their ability to firstly to plan/implement the program, and then to find and fix the inevitable errors that will occur.

The above is true for non-programming jobs as well - asking someone to preform a specific task on the spot rarely informs you of their skills; unless working under extreme pressure is a mandatory component of the job. There are far better ways to structure an interview. I do not know of any comp-sci specific examples, but the book "At the Helm" by Kathy Baker provides some great examples of these kind of interview strategies (aimed towards the biological sciences). Similar books likely exist for most technical disciplines.

Bryan
I have a new blog, on making beer.

Not that anyone reads it...

User avatar
Yakk
Poster with most posts but no title.
Posts: 11129
Joined: Sat Jan 27, 2007 7:27 pm UTC
Location: E pur si muove

Re: Was I too harsh?

Postby Yakk » Wed May 23, 2012 2:55 pm UTC

Ben-oni wrote:
Pesto wrote:
Ben-oni wrote:@Pesto: What would you have thought if someone presented this solution during an interview?
Partial credit for correctness, but now do it without creating new Node objects.
Ah. I think I may have to have disqualified the interviewer at this point. Java is garbage collected, and object oriented. Creating and eliminating objects is one of the things it's meant to do efficiently (whether or not it does being a separate matter).
No, the efficiency of the language under actual cases does matter to what implementations you use. Being able to do manipulation of things like linked lists without allocating new nodes is a useful skill. Asking for it to be demonstrated is not a trivial thing to ignore.
Regardless, it's still O(n) in both execution time and memory consumption. Anyone can do the standard in-place reversal.
No, actually, anyone cannot. That is a problem.
The elegance (if it can be called elegant) of the solution I proposed indicates a different mode of thinking.
What it is is more robust than the pointer juggling case. It is easier to show/prove it is correct. Which is a massive, non-trivial advantage.

But being able to deal with the pointer juggling if you had to is also important. And if the codebase you are working on has lots of pointer juggling, being able to write robust code (like your post contained) isn't a sufficient skill. You'll have to interact with pointer juggling to be able to do your job.
One of the painful things about our time is that those who feel certainty are stupid, and those with any imagination and understanding are filled with doubt and indecision - BR

Last edited by JHVH on Fri Oct 23, 4004 BCE 6:17 pm, edited 6 times in total.

User avatar
Xeio
Friends, Faidites, Countrymen
Posts: 5101
Joined: Wed Jul 25, 2007 11:12 am UTC
Location: C:\Users\Xeio\
Contact:

Re: Was I too harsh?

Postby Xeio » Wed May 23, 2012 3:35 pm UTC

Ben-oni wrote:Regardless, it's still O(n) in both execution time and memory consumption.
Uh, the in-place implementation requires no extra memory (or probably more accurately O(1)). Creating new nodes requires O(n) extra memory.

Also, just because a language is good at garbage collection is not an excuse for poor memory management. There are always worst cases for the garbage collector, and you should know and avoid them when possible (taking into account performance\memory requirements as necessary).

User avatar
Xanthir
My HERO!!!
Posts: 5426
Joined: Tue Feb 20, 2007 12:49 am UTC
Location: The Googleplex
Contact:

Re: Was I too harsh?

Postby Xanthir » Wed May 23, 2012 7:31 pm UTC

ImagingGeek wrote:I am not a computer programmer, so I can offer no inside information, but I do hire a lot of people for technical (i.e. scientific research) positions. IMO, the ranking of the candidate was to harsh, and moreover, the test was poorly designed and rather pointless. One of the skills I do look/test for is the ability to use "programming-language" like scientific software (matlab, SPSS, etc), which require a similar skill set to bona-fide programming.

Firstly, the candidate clearly has some ability to code (otherwise she would have failed the test completely), meaning your assessment was wrong, even by your own standards. All you can really surmise from her 'test' was that she either cracked under pressure or needs to reacquaint herself with some forgotten methods. If you really wanted an example of her coding abilities, asking for examples of past projects/codes, or a "take-home" mini-project would have been far more indicative.

Yes, definitely. If you're harsh on minor mistakes, then for many people you're actually grading them on their ability to keep a cool head during an interview, not their skills on the job.

You can't even justify it with "well, they need to perform under pressure on the job too". Interviews are, for many people, very uniquely stressful in a way that a powerful deadline isn't.

It's just bad organization psychology, is what I'm saying.

Secondly, the test itself doesn't test for anything useful - any half-brained moron can be taught the basics of coding; what makes someone good at it is the ability to design, implement and troubleshoot code that meets the projects requirements. Asking someone questions about syntax, or to write a basic script in a unfamiliar/not recently used language, under extreme pressure, doesn't even approach testing for those qualities. A more structured set of questions would be far more useful - i.e. 'how would you approach design problem x', or "you write code to do y, but get the following error; how would you identify the source of the problem', will tell you far more about their abilities than a simple "write code to reverse this list". Even the most experienced individual will make mistakes - what really matters is their ability to firstly to plan/implement the program, and then to find and fix the inevitable errors that will occur.

Here, though, your inexperience with hiring programmers shows through. As others have said, you get a *ton* of bozos who interview for programming positions despite literally being unable to code. A trivial, stupid test like the FizzBuzz program is basically necessary in programming interviews to avoid wasting time.
(defun fibs (n &optional (a 1) (b 1)) (take n (unfold '+ a b)))

ImagingGeek
Posts: 380
Joined: Fri Aug 06, 2010 6:41 pm UTC
Location: Canada

Re: Was I too harsh?

Postby ImagingGeek » Wed May 23, 2012 7:42 pm UTC

Xanthir wrote:Here, though, your inexperience with hiring programmers shows through. As others have said, you get a *ton* of bozos who interview for programming positions despite literally being unable to code. A trivial, stupid test like the FizzBuzz program is basically necessary in programming interviews to avoid wasting time.

Fair enough, but there are far better ways to screen for that, other than the "pop-quiz" format used by the OP; likewise, the ability to write code is a far cry from being able to design/produce a complete, functioning, and (relatively) bug-free piece of software. And, to be realistic, if you're asking questions intended to test a persons ability with those "higher level" skills, a lack of coding ability will be quite noticeable. After all, if you cannot code, how could you ever know how to plan/link modules, ID bugs, etc*.

*And if someone magically had these skills without knowing how to code, IMO, it would often be worth training that individual to code. Even among trained individuals, these sorts of "higher functioning skills" are rare and hard to develop.

I am actually rather familiar with the applicant who claims (though-be-it matlab/SPSS) coding experience, without actually having that experience (maybe 20% of the applicants for positions which say "matlab/spss experience is required"). They simply cannot handle the higher-level questions.

Bryan

EDIT: did the FizzBuzz test (in matlab) in just over 1.5min. Do I get the job ;-)
EDIT II: according to your own article, my approach (requesting previous examples) is common in comp-sci as a pre-screening tool (rather than as an at-interview tool): At Vertigo, we require a code sample before we even proceed to the phone interview stage
I have a new blog, on making beer.

Not that anyone reads it...

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Wed May 23, 2012 9:36 pm UTC

ImagingGeek wrote:If you really wanted an example of her coding abilities, asking for examples of past projects/codes, or a "take-home" mini-project would have been far more indicative.

This is what we use for a pre-screening. One of the problems with this approach is Google. Example solutions are available on the internet and are not hard to find. While this is useful for weeding out the worst candidates, it is not sufficient to demonstrate programming ability.

Secondly, the test itself doesn't test for anything useful - any half-brained moron can be taught the basics of coding; what makes someone good at it is the ability to design, implement and troubleshoot code that meets the projects requirements. Asking someone questions about syntax, or to write a basic script in a unfamiliar/not recently used language, under extreme pressure, doesn't even approach testing for those qualities.

I asked her to implement a method that reverses a linked list. She failed to implement it correctly, and when she identified the bug in her implementation, she failed to correct it. Most people will have a bug or two in their first draft, but most people eventually fix it.

I will concede that screwing up the SQL operator was a minor mistake, but she had five years of professional experience writing Java. Asking an experienced professional to solve a freshman/sophomore level programming problem in an interview using a language they have five years professional experience with is far from what I would call "extreme pressure".

I will also concede that "She can't code" is likely too harsh an assessment, but the test is definitely useful, and she unequivocally failed.

User avatar
Bubbles McCoy
Posts: 1106
Joined: Wed Jul 09, 2008 12:49 am UTC
Location: California

Re: Was I too harsh?

Postby Bubbles McCoy » Wed May 23, 2012 9:46 pm UTC

Ben-oni wrote:Ah. I think I may have to have disqualified the interviewer at this point. Java is garbage collected, and object oriented. Creating and eliminating objects is one of the things it's meant to do efficiently (whether or not it does being a separate matter). Regardless, it's still O(n) in both execution time and memory consumption. Anyone can do the standard in-place reversal. The elegance (if it can be called elegant) of the solution I proposed indicates a different mode of thinking. Regardless of whether or not I would use it in production code, an interviewer who fails to appreciate it isn't someone I would generally like working with. On the other hand, if it were presented by my interviewee, I would snap them up. Especially if they used reflection to implement fold and passed it the Node constructor (despite the fact that reflection decreases execution speed by a couple orders of magnitude in Java).

Wouldn't your solution fail if the list nodes were not private? Besides, I would not be so quick to dismiss the space characteristic of a function, it's probably the most important efficiency consideration after the algorithmic complexity.

In general, you seem to have a tendency to treat every language as a chance to treat it as a perfect abstraction of lambda calculus; this requires more justification than simply stating that's the best way to go about things. I can definitely understand wanting to test the kind of thinking a candidate is capable of, but I'm not really convinced list reversal in Java is the right kind of question to test their functional skills. Different problems are better suited to different kinds of thinking, and trying to re-frame every problem as a functional one can indicate a limitation in thought process in it's own right. There are definitely problems where the candidate should let loose a volley of maps & reduces to solve it, and I'm very sympathetic to wanting to work in a language that can reverse a list with an elegant two-line fold operation, but that doesn't mean you should refuse to consider the possibility you can be working in a different environment.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Wed May 23, 2012 10:38 pm UTC

ImagingGeek wrote:After all, if you cannot code, how could you ever know how to plan/link modules, ID bugs, etc*.

*And if someone magically had these skills without knowing how to code, IMO, it would often be worth training that individual to code. Even among trained individuals, these sorts of "higher functioning skills" are rare and hard to develop.


They can. I've seen them do it. They can talk endlessly about how they worked with software X, how new technology Y is so important, how they can use Z techniques to track down bugs (and file them, and manage them straight from version control), and so forth. They'll happily start a coding test, but then start freezing as they start to write, and make excuses for it, even if it's a really, really easy thing (as in "print out 1 to 10" easy). Sometimes they'll flood you with buzzwords and tool names and website references in an attempt to make it appear they know how to solve the problem.

More often than not, these people are actually "good" people, in that they're better than those who can neither talk nor code. They're usually more willing to learn. But not every company can afford to hire people like this, especially when better people are behind them in line.

Pesto wrote:I will also concede that "She can't code" is likely too harsh an assessment, but the test is definitely useful, and she unequivocally failed.


In the spirit of having clear conclusions to threads, yes, I think we're all in agreement that "she can't code" was too harsh, but the test itself was valid and generally not flawed.
In Minecraft, I use the username Rirez.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Thu May 24, 2012 12:45 am UTC

Bubbles McCoy wrote:
Ben-oni wrote:Ah. I think I may have to have disqualified the interviewer at this point. Java is garbage collected, and object oriented. Creating and eliminating objects is one of the things it's meant to do efficiently (whether or not it does being a separate matter). Regardless, it's still O(n) in both execution time and memory consumption. Anyone can do the standard in-place reversal. The elegance (if it can be called elegant) of the solution I proposed indicates a different mode of thinking. Regardless of whether or not I would use it in production code, an interviewer who fails to appreciate it isn't someone I would generally like working with. On the other hand, if it were presented by my interviewee, I would snap them up. Especially if they used reflection to implement fold and passed it the Node constructor (despite the fact that reflection decreases execution speed by a couple orders of magnitude in Java).

Wouldn't your solution fail if the list nodes were not private? Besides, I would not be so quick to dismiss the space characteristic of a function, it's probably the most important efficiency consideration after the algorithmic complexity.

You mean if someone were holding onto Node references? I don't think so. In that case, I'd say the in-place reversal would fail, because their references change unexpectedly. By not changing any nodes, their Node references still mean exactly what they meant before.

As for space complexity, if you consider the space complexity of the list instead of the function call, a common thing to do, then O(n) = O(2n), so there's really no cost. Alternatively, another instruction to set the front of the list to null before the loop would allow the GC to collect nodes as they're encountered, so the cost really would be O(1).

In general, you seem to have a tendency to treat every language as a chance to treat it as a perfect abstraction of lambda calculus; this requires more justification than simply stating that's the best way to go about things. I can definitely understand wanting to test the kind of thinking a candidate is capable of, but I'm not really convinced list reversal in Java is the right kind of question to test their functional skills. Different problems are better suited to different kinds of thinking, and trying to re-frame every problem as a functional one can indicate a limitation in thought process in it's own right. There are definitely problems where the candidate should let loose a volley of maps & reduces to solve it, and I'm very sympathetic to wanting to work in a language that can reverse a list with an elegant two-line fold operation, but that doesn't mean you should refuse to consider the possibility you can be working in a different environment.

Guilty as charged. You see, I find that functional programmers have no trouble thinking through problems imperatively (or iteratively, as you will). Mutation and state changes are easy to conceptualize, because that's how we perceive the world. But for a programmer, higher levels of abstraction are always more powerful. Those who understand the benefits of passing functions will always be the better programmers. On the other hand, when I sit down to do some coding, it's usually in either Matlab or C (though I wouldn't consider the former to be real coding) and I do think through the problems imperatively. Tight and efficient code for inner loop processes. And because the design was considered functionally first, design flaws don't happen.

I drank the koolaid and it was full of stars.

User avatar
Bubbles McCoy
Posts: 1106
Joined: Wed Jul 09, 2008 12:49 am UTC
Location: California

Re: Was I too harsh?

Postby Bubbles McCoy » Thu May 24, 2012 2:25 am UTC

Ben-oni wrote:You mean if someone were holding onto Node references? I don't think so. In that case, I'd say the in-place reversal would fail, because their references change unexpectedly. By not changing any nodes, their Node references still mean exactly what they meant before.

As for space complexity, if you consider the space complexity of the list instead of the function call, a common thing to do, then O(n) = O(2n), so there's really no cost. Alternatively, another instruction to set the front of the list to null before the loop would allow the GC to collect nodes as they're encountered, so the cost really would be O(1).

If there was an external node pointer set to an item in the list, than pointer juggling would leave the reference unchanged. Can you be more specific as to why in-place reversal would fail here? Otherwise, your solution isn't particularly bad, I just don't see a problem with asking for a rewrite because there are situations an in-place solution would be necessary.

I have never heard of a function's space complexity being described by the size of the structure it is being called on. I mean, would you say finding an item in a sorted list takes O(log(n)) time and O(n) space? It's ridiculous. The space of the input to an algorithm is completely different than the space the algorithm consumes. Where have you seen it defined differently?

Ben-oni wrote:[Guilty as charged. You see, I find that functional programmers have no trouble thinking through problems imperatively (or iteratively, as you will). Mutation and state changes are easy to conceptualize, because that's how we perceive the world. But for a programmer, higher levels of abstraction are always more powerful. Those who understand the benefits of passing functions will always be the better programmers. On the other hand, when I sit down to do some coding, it's usually in either Matlab or C (though I wouldn't consider the former to be real coding) and I do think through the problems imperatively. Tight and efficient code for inner loop processes. And because the design was considered functionally first, design flaws don't happen.

I drank the koolaid and it was full of stars.

There's absolutely nothing wrong with loving functional programming. However, Java just isn't designed for functional programming, and even if there is a way to shoehorn a given problem into something resembling a functional approach doesn't mean you should when presented with a problem in Java. If a functional programmer has no problem thinking of a problem imperatively, then they should be able to just answer the damn question in an imperative style, even if there'd be a better solution in Scala. Like I said, I can definitely see wanting to give the interviewee a problem that lends itself to this approach. But the grading metric on a Java question shouldn't be "how likely is this person an expert in functional programming," but "how good of a solution is this in Java." To test the former, just let them work in pseudocode and see what they come up with. By the time you're placing language constraints on the solution it follows that you're no longer testing pure aptitude in programming, but contextual engineering skill as well.

EvanED
Posts: 4331
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: Was I too harsh?

Postby EvanED » Thu May 24, 2012 2:45 am UTC

Bubbles McCoy wrote:I have never heard of a function's space complexity being described by the size of the structure it is being called on. I mean, would you say finding an item in a sorted list takes O(log(n)) time and O(n) space? It's ridiculous. The space of the input to an algorithm is completely different than the space the algorithm consumes. Where have you seen it defined differently?

There was a decent lesson on how much faith you should put in algorithmic time complexity that Yakk shared a couple months ago, from an article by Bjarne Stroustrup. Stroustrup gave an operation -- a linear traversal of a container followed by a removal -- then looked at real-world performance of a linked list vs vector. The traversal was linear in both cases, but the removal was linear for the vector and constant for the list. The question which is natural to ask then is "for what size does the list outperform the vector?" considering that switching from a vector to a list replaces an O(1) operation with O(n).

Turns out the answer, even when you adjust for a bunch of biases in favor of the vector a naive implementation has, appears to be "never". The reason is that the constant on the list's linear traversal is so much bigger than the vector's that both O(n) operations of the vector put together is still faster than the list's O(n) operation.

The lesson then is that you should look at the algorithmic complexity of the algorithm as a whole -- replacing one part of an algorithm with something that is even asymptotically better may not be a good idea, even if you plan on working with large sets.

Now things are a bit different in the case of reverse, because in some sense you have the constant factors and the applicative (functional) reverse definitely takes twice the memory. But now imagine putting that reverse operation in the larger program. What's the change in space complexity of the whole thing? None. It takes more memory, but only by a constant factor. How much that matters... depends on your application area. Much to most of the time, it won't.

Yes, the complexity theorists measure the space complexity of an algorithm by considering only the extra scratch memory you need. This lets them investigate (presumably) sub-linear space complexity classes like L and NL. (For linear and higher, counting the input size doesn't change anything of course.) But I'm less convinced that this is useful. It can be sometimes -- e.g. if you have datasets larger than memory and need to do external sort and stuff -- but in terms of practical applications when you're just working in memory anyway? I don't buy it.

User avatar
Yakk
Poster with most posts but no title.
Posts: 11129
Joined: Sat Jan 27, 2007 7:27 pm UTC
Location: E pur si muove

Re: Was I too harsh?

Postby Yakk » Thu May 24, 2012 3:00 am UTC

When you analyze the space complexity of an algorithm mutating an O(n) data size input, you analyze the extra data created.

Because using O(lg(n)) extra data is ridiculously different than using O(1) extra data and O(n) extra data, but without first subtracting the input data size you cannot distinguish between them.

The standard Quick, Merge and Tree sorts have massively different space requirements in reality.
And because the design was considered functionally first, design flaws don't happen.
That presumes a perfect functional design. Unless you are claiming that functional algorithms are immune to design flaws. In which case, good joke?
One of the painful things about our time is that those who feel certainty are stupid, and those with any imagination and understanding are filled with doubt and indecision - BR

Last edited by JHVH on Fri Oct 23, 4004 BCE 6:17 pm, edited 6 times in total.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Thu May 24, 2012 3:14 am UTC

Yakk wrote:
And because the design was considered functionally first, design flaws don't happen.
That presumes a perfect functional design. Unless you are claiming that functional algorithms are immune to design flaws. In which case, good joke?

Perhaps never happen would be hyperbole, but the odds of a functional design working correctly on the first try is considerably greater than that of other design approaches. If it type checks, it's probably correct.

EvanED
Posts: 4331
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI
Contact:

Re: Was I too harsh?

Postby EvanED » Thu May 24, 2012 3:30 am UTC

Yakk wrote:When you analyze the space complexity of an algorithm mutating an O(n) data size input, you analyze the extra data created.

Which in many cases is fairly ridiculous, for reasons which I posted (while citing you!) :-)

Ben-oni wrote:Perhaps never happen would be hyperbole, but the odds of a functional design working correctly on the first try is considerably greater than that of other design approaches. If it type checks, it's probably correct.

My experience with that (admittedly, particularly with SML which has atrocious tool support) is more along the lines of "the difference between something that can go wrong and something that can't possibly go wrong is that when something that can't possibly go wrong goes wrong it usually turns out to be impossible to get at or repair." :-) I.e. when it type-checks and fails, it's basically impossible to figure out why.

User avatar
Aaeriele
Posts: 2127
Joined: Tue Feb 23, 2010 3:30 am UTC
Location: San Francisco, CA

Re: Was I too harsh?

Postby Aaeriele » Thu May 24, 2012 4:09 am UTC

Bubbles McCoy wrote:If there was an external node pointer set to an item in the list, than pointer juggling would leave the reference unchanged. Can you be more specific as to why in-place reversal would fail here? Otherwise, your solution isn't particularly bad, I just don't see a problem with asking for a rewrite because there are situations an in-place solution would be necessary.


This is correct and is a major flaw with Ben-oni's implementation (and in fact demonstrates the flaw in trying to write imperative code based on functional design, because mutability and references are issues, unlike in functional code).


As far as the original question goes, yes, I would consider it too harsh to say that the described person "can't code." By my definitions, "can't code" is someone who can't write FizzBuzz. Someone who can't reverse a linked list properly, but gets close, is someone who "does not code sufficiently well for our needs." See the difference there?
Vaniver wrote:Harvard is a hedge fund that runs the most prestigious dating agency in the world, and incidentally employs famous scientists to do research.

afuzzyduck wrote:ITS MEANT TO BE FLUTTERSHY BUT I JUST SEE AAERIELE! CURSE YOU FORA!

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Thu May 24, 2012 4:50 am UTC

Aaeriele wrote:This is correct and is a major flaw with Ben-oni's implementation (and in fact demonstrates the flaw in trying to write imperative code based on functional design, because mutability and references are issues, unlike in functional code).

Well it depends, doesn't it? Why are Node's public? What is the contract associated with making them public? What should correct behavior be when a node held externally is removed from the list? Should it still be valid? Or should the .contents and .next be emptied? Or should the node represent a part of the list at the particular time it was retrieved? If I hold a node, should I expect that the .next element can suddenly change?

As far as the original question goes, yes, I would consider it too harsh to say that the described person "can't code." By my definitions, "can't code" is someone who can't write FizzBuzz. Someone who can't reverse a linked list properly, but gets close, is someone who "does not code sufficiently well for our needs." See the difference there?

"Does not code sufficiently well for our needs" is the same as "Does not code sufficiently well for anyone's needs", which is the same as "can't code." Or are you arguing that there's someone that would be willing to hire her, given this knowledge?

User avatar
Dason
Posts: 1311
Joined: Wed Dec 02, 2009 7:06 am UTC
Location: ~/

Re: Was I too harsh?

Postby Dason » Thu May 24, 2012 4:55 am UTC

Ben-oni wrote:"Does not code sufficiently well for our needs" is the same as "Does not code sufficiently well for anyone's needs"

I don't agree that those are the same
double epsilon = -.0000001;

User avatar
Aaeriele
Posts: 2127
Joined: Tue Feb 23, 2010 3:30 am UTC
Location: San Francisco, CA

Re: Was I too harsh?

Postby Aaeriele » Thu May 24, 2012 5:03 am UTC

Ben-oni wrote:
Aaeriele wrote:This is correct and is a major flaw with Ben-oni's implementation (and in fact demonstrates the flaw in trying to write imperative code based on functional design, because mutability and references are issues, unlike in functional code).

Well it depends, doesn't it? Why are Node's public? What is the contract associated with making them public? What should correct behavior be when a node held externally is removed from the list? Should it still be valid? Or should the .contents and .next be emptied? Or should the node represent a part of the list at the particular time it was retrieved? If I hold a node, should I expect that the .next element can suddenly change?

They don't even need to be public. One nice feature of linked lists in many languages' implementations is the ability to insert an element between two existing elements. Doing this in less than O(n) time requires a way to (even if it's internal to the List class) have persistence references to nodes.

Ben-oni wrote:"Does not code sufficiently well for our needs" is the same as "Does not code sufficiently well for anyone's needs"

Bullshit. There are plenty of places that can hire even crappy programmers and be fine. Yes, the places you're likely to work are probably not among them, but don't overgeneralize.
Vaniver wrote:Harvard is a hedge fund that runs the most prestigious dating agency in the world, and incidentally employs famous scientists to do research.

afuzzyduck wrote:ITS MEANT TO BE FLUTTERSHY BUT I JUST SEE AAERIELE! CURSE YOU FORA!

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Thu May 24, 2012 5:10 am UTC

Aaeriele wrote:
Ben-oni wrote:"Does not code sufficiently well for our needs" is the same as "Does not code sufficiently well for anyone's needs"

Bullshit. There are plenty of places that can hire even crappy programmers and be fine. Yes, the places you're likely to work are probably not among them, but don't overgeneralize.

Where, for instance? What kind of company can thrive with unskilled programmers? Not even javashops will survive on that kind of "talent".

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Thu May 24, 2012 6:01 am UTC

One.

Pesto himself noted that the issue was that other candidates were able to complete the task.

I think that is the only honest measure of "our needs." They need a good programmer. The others could do it, she couldn't. Therefore their needs was someone who could've done it.

Two.

There are places where less experienced programmers can fit in perfectly well. Some people even prefer to take them under their wing and teach them as mentors. Especially true when they're short on money, or looking to expand their network.

Three.

The inability to write code as according to one test doesn't mean they simply can't write code. Pesto's company might need people skilled in manipulating data structures. Mine sure doesn't. Therefore "sufficiently well for our needs" is dramatically different between our companies.
In Minecraft, I use the username Rirez.

Ben-oni
Posts: 278
Joined: Mon Sep 26, 2011 4:56 am UTC

Re: Was I too harsh?

Postby Ben-oni » Thu May 24, 2012 7:29 am UTC

Steax wrote:There are places where less experienced programmers can fit in perfectly well. Some people even prefer to take them under their wing and teach them as mentors. Especially true when they're short on money, or looking to expand their network.

This may very well be true, but I don't understand it. I certainly enjoy mentoring and seeing the understanding dawn in someone's mind as they really start to learn. But I would never pay someone for the privilege of doing so. And getting the company pay for it sounds unethical.

The inability to write code as according to one test doesn't mean they simply can't write code. Pesto's company might need people skilled in manipulating data structures. Mine sure doesn't. Therefore "sufficiently well for our needs" is dramatically different between our companies.

Maybe. It's certainly possible, perhaps likely, that the person in question reviewed the problem afterwards and would now fare better given the same task again. It's certainly one of the ways in which skills (in all fields) improve.

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Thu May 24, 2012 7:51 am UTC

I've seen several situations where people would happily hire intelligent but inexperienced people. Startups, new technologies, people with radical new ideas, people on short budgets... Granted, these people tend to have some other special performance other than "failed coding tests", but they exist.

A personal tidbit from myself: I actually very rarely hire/select people based on their programming skills, likely because, as a web development team, we have to cover a huge area of expertise and it's less "come, code, get paid". We judge people on communication skills, their thirst for knowledge and adventure, creativity, popular culture, sciences, and basically fitting into our social norms. We like people who can talk about recent events or analyze big companies, dig into code together or just plain out cook dinners. We don't want the world's most brilliant programmer to suffer because they don't fit in.

Ben-oni wrote:
The inability to write code as according to one test doesn't mean they simply can't write code. Pesto's company might need people skilled in manipulating data structures. Mine sure doesn't. Therefore "sufficiently well for our needs" is dramatically different between our companies.

Maybe. It's certainly possible, perhaps likely, that the person in question reviewed the problem afterwards and would now fare better given the same task again. It's certainly one of the ways in which skills (in all fields) improve.


Or it could be because Pesto needed, say, a database developer, while I need something else. We're both programming teams, we both want our people to "code", but we want very different skillsets and we don't expect people to cover each other's areas.
In Minecraft, I use the username Rirez.

ImagingGeek
Posts: 380
Joined: Fri Aug 06, 2010 6:41 pm UTC
Location: Canada

Re: Was I too harsh?

Postby ImagingGeek » Thu May 24, 2012 1:20 pm UTC

Pesto wrote:
ImagingGeek wrote:If you really wanted an example of her coding abilities, asking for examples of past projects/codes, or a "take-home" mini-project would have been far more indicative.

This is what we use for a pre-screening. One of the problems with this approach is Google. Example solutions are available on the internet and are not hard to find. While this is useful for weeding out the worst candidates, it is not sufficient to demonstrate programming ability.

If you give her a broken program to debug, I doubt she'd be able to google the solution. Likewise, you can easily use google to screen for turned-in code; detecting plagiarism isn't exactly hard.

Pesto wrote:
Secondly, the test itself doesn't test for anything useful - any half-brained moron can be taught the basics of coding; what makes someone good at it is the ability to design, implement and troubleshoot code that meets the projects requirements. Asking someone questions about syntax, or to write a basic script in a unfamiliar/not recently used language, under extreme pressure, doesn't even approach testing for those qualities.

I asked her to implement a method that reverses a linked list. She failed to implement it correctly, and when she identified the bug in her implementation, she failed to correct it. Most people will have a bug or two in their first draft, but most people eventually fix it.

So in a limited amount of time, under high pressure, she:
a) produced code,
b) ID'd a bug in it

Sounds like she may be far better at coding than you think.

Pesto wrote:I will concede that screwing up the SQL operator was a minor mistake, but she had five years of professional experience writing Java. Asking an experienced professional to solve a freshman/sophomore level programming problem in an interview using a language they have five years professional experience with is far from what I would call "extreme pressure".

For many, interviews is about as extreme as pressure gets, regardless of the content. One of the best people I've ever hired broke down & cried during one of her interviews - good thing I didn't take that as a sign of her abilities.

Pesto wrote:I will also concede that "She can't code" is likely too harsh an assessment, but the test is definitely useful, and she unequivocally failed.

But what did she fail - a test of skill, or a test of handling pressure? I'm guessing you haven't done much hiring; I'd talk to your boss some more about your approach and assessment criteria (or read a book on the topic, etc). All you're current system is going to do is drive away potentially good candidates who have difficulties preforming under the duress of an interview. That serves neither you, nor your company, any good.

Bryan
I have a new blog, on making beer.

Not that anyone reads it...

ImagingGeek
Posts: 380
Joined: Fri Aug 06, 2010 6:41 pm UTC
Location: Canada

Re: Was I too harsh?

Postby ImagingGeek » Thu May 24, 2012 1:39 pm UTC

Steax wrote:
ImagingGeek wrote:After all, if you cannot code, how could you ever know how to plan/link modules, ID bugs, etc*.

*And if someone magically had these skills without knowing how to code, IMO, it would often be worth training that individual to code. Even among trained individuals, these sorts of "higher functioning skills" are rare and hard to develop.


They can. I've seen them do it. They can talk endlessly about how they worked with software X, how new technology Y is so important, how they can use Z techniques to track down bugs (and file them, and manage them straight from version control), and so forth.

I think you've mis-understood what I was trying to say. Anyone can use buzzwords, or put on a front of intelligence when faced with a general question. But if you put forward a specific verbal example, its doubtful a non-coder will be able to bluster their way through. I have a few standard questions for screening (again, matlab, not real programming); none are particuarily hard, but they do require that the interviewee know the general syntax & workflow used within matlab; you're not going to bluster past those types of questions with buzzwords and claims of past experience.

EDIT: I removed & re-inserted this bit 2-3 times, but what the hell - it sounds rude, but its not intended to be rude. Please don't take it as an insult/attack/etc. If you're interview process can be usurped by someone who knows some buzzwords, than you have a serious flaw in your interview methodologies and/or interviewer(s). A properly designed/implemented interview should have no trouble excluding these individuals. There are a lot of resources out there to help in the design/implementation of interviews - they also cover the pitfalls of poor methods like in-interview tasking (testing), etc.

Steax wrote: They'll happily start a coding test, but then start freezing as they start to write, and make excuses for it, even if it's a really, really easy thing (as in "print out 1 to 10" easy). Sometimes they'll flood you with buzzwords and tool names and website references in an attempt to make it appear they know how to solve the problem.

But, again, this could merely be due to pressure - in-interview tasks are notoriously poor tools (I'd direct people, again, to the book I posted in my first post, it covers this issue in some detail). You end up testing for the ability to deal with pressure, not for the skill(s) in question.

Steax wrote:More often than not, these people are actually "good" people, in that they're better than those who can neither talk nor code. They're usually more willing to learn. But not every company can afford to hire people like this, especially when better people are behind them in line.

If there are better people in-line, then hire them. But if the choice comes down someone who can code, but lack the "higher level" capacities, verses someone with clearly demonstrated "higher abilities" and a questionable ability to code, I'd take the latter. Learning a programming language/syntax/etc will occur much faster than learning the higher-level stuff; assuming the inability to code was real, and not merely an artefact of a poorly designed in-interview test. I hire people at two levels - for a academic/science lab which I run (in a uni), and for a biotech startup in which I am a partner. We are faced with the exact same issue - a world filled with people whom have a mediocre skill base, and little/no higher-level capacities. Nearly every failed employee I've seen were the ones who had skill base but no higher-functioning capacities. At the end of the day, if someone is smart enough to do the high-level stuff, they'll be able to figure out the low-level stuff - assuming they didn't know it in advance.

Bryan
I have a new blog, on making beer.

Not that anyone reads it...

User avatar
Steax
SecondTalon's Goon Squad
Posts: 3038
Joined: Sat Jan 12, 2008 12:18 pm UTC

Re: Was I too harsh?

Postby Steax » Thu May 24, 2012 2:10 pm UTC

ImagingGeek wrote: If you're interview process can be usurped by someone who knows some buzzwords, than you have a serious flaw in your interview methodologies and/or interviewer(s).


Indeed, that's why mentioned the use of FizzBuzz testing. I think I'm resting on a middle ground between no code and complex code, while you're more towards high-level complex code.

Steax wrote: They'll happily start a coding test, but then start freezing as they start to write, and make excuses for it, even if it's a really, really easy thing (as in "print out 1 to 10" easy). Sometimes they'll flood you with buzzwords and tool names and website references in an attempt to make it appear they know how to solve the problem.

But, again, this could merely be due to pressure - in-interview tasks are notoriously poor tools (I'd direct people, again, to the book I posted in my first post, it covers this issue in some detail). You end up testing for the ability to deal with pressure, not for the skill(s) in question.


That's why fizzbuzz questions are those any sane programmer could do in any level of pressure. You could probably ask a programmer in their sleep about how to echo the numbers 1 to 10, and they'd be able to mumble out "a for loop, start at i=1, increment i till it hits 10, print i each time". Well, not exactly, but you get the idea.

Steax wrote:More often than not, these people are actually "good" people, in that they're better than those who can neither talk nor code. They're usually more willing to learn. But not every company can afford to hire people like this, especially when better people are behind them in line.

If there are better people in-line, then hire them. But if the choice comes down someone who can code, but lack the "higher level" capacities, verses someone with clearly demonstrated "higher abilities" and a questionable ability to code, I'd take the latter. Learning a programming language/syntax/etc will occur much faster than learning the higher-level stuff; assuming the inability to code was real, and not merely an artefact of a poorly designed in-interview test. I hire people at two levels - for a academic/science lab which I run (in a uni), and for a biotech startup in which I am a partner. We are faced with the exact same issue - a world filled with people whom have a mediocre skill base, and little/no higher-level capacities. Nearly every failed employee I've seen were the ones who had skill base but no higher-functioning capacities. At the end of the day, if someone is smart enough to do the high-level stuff, they'll be able to figure out the low-level stuff - assuming they didn't know it in advance.

Bryan


I completely agree with you. Hence I explicitly mentioned "not every company"; Pesto's seemed to be one of those who can't hire them.
In Minecraft, I use the username Rirez.

ImagingGeek
Posts: 380
Joined: Fri Aug 06, 2010 6:41 pm UTC
Location: Canada

Re: Was I too harsh?

Postby ImagingGeek » Thu May 24, 2012 4:01 pm UTC

Steax wrote:
ImagingGeek wrote: If you're interview process can be usurped by someone who knows some buzzwords, than you have a serious flaw in your interview methodologies and/or interviewer(s).


Indeed, that's why mentioned the use of FizzBuzz testing. I think I'm resting on a middle ground between no code and complex code, while you're more towards high-level complex code.

I cannot do it now as I'm at work, but when I get home I'll dig up the refs (out of the book I keep pushing - no financial interest, just a happy customer) about how poorly in-interview testing works. I agree that your fizzbuzz example is about as simple as simple gets, but (assuming I recall things correctly) its not uncommon for even highly experienced individuals to flunk such simple tests under the auspices of an interview.

ImagingGeek wrote:
Steax wrote:That's why fizzbuzz questions are those any sane programmer could do in any level of pressure. You could probably ask a programmer in their sleep about how to echo the numbers 1 to 10, and they'd be able to mumble out "a for loop, start at i=1, increment i till it hits 10, print i each time". Well, not exactly, but you get the idea.

But that's the point I've been trying to make - assuming I remember everything correctly, some competent people will fail at even simple tasks during high-stress events like interviews. Meaning some (not all) potentially very good candidates could be rejected, simply because they chocked at an inopportune time.

Spoiler:
Steax wrote:More often than not, these people are actually "good" people, in that they're better than those who can neither talk nor code. They're usually more willing to learn. But not every company can afford to hire people like this, especially when better people are behind them in line.

If there are better people in-line, then hire them. But if the choice comes down someone who can code, but lack the "higher level" capacities, verses someone with clearly demonstrated "higher abilities" and a questionable ability to code, I'd take the latter. Learning a programming language/syntax/etc will occur much faster than learning the higher-level stuff; assuming the inability to code was real, and not merely an artefact of a poorly designed in-interview test. I hire people at two levels - for a academic/science lab which I run (in a uni), and for a biotech startup in which I am a partner. We are faced with the exact same issue - a world filled with people whom have a mediocre skill base, and little/no higher-level capacities. Nearly every failed employee I've seen were the ones who had skill base but no higher-functioning capacities. At the end of the day, if someone is smart enough to do the high-level stuff, they'll be able to figure out the low-level stuff - assuming they didn't know it in advance.

Steax wrote:I completely agree with you. Hence I explicitly mentioned "not every company"; Pesto's seemed to be one of those who can't hire them.

(spoilers used to reduce post-size)
So we're arguing in circles - I guess that's what forums are for! But in Pesto's case, I would be more concerned about their interviewing methods rejecting really strong candidates based on using a interviewing technique that is known to have a lot of problems associated with it (and, IMO, a very poorly designed test at that, i.e. lacking clear assessment criteria).

Like I said in my last post to Pesto, she did manage to ID the error in her code during the test. And while she didn't fix the bug, the fact she a) wrote some code, and b) found the bug in it (presumably correctly, Pesto didn't comment on that), shows that she does indeed know to code and trouble-shoot. I'd have taken that as a more positive sign of the persons potential than someone who one-off'd a trivial piece of code on the first go.

Bryan
I have a new blog, on making beer.

Not that anyone reads it...

User avatar
Pesto
Posts: 737
Joined: Wed Sep 05, 2007 5:33 pm UTC
Location: Berkeley, CA

Re: Was I too harsh?

Postby Pesto » Tue May 29, 2012 5:38 pm UTC

ImagingGeek wrote:But what did she fail - a test of skill, or a test of handling pressure?

Frankly, I don't care.

I don't buy any arguments about "handling pressure." This was not a high pressure situation. I gave her a task to complete, and let her set about completing the task. Her task was a test of the skills she would be expected to employ every day on the job. Skills she supposedly had been using every day, on the job, for five years already. The problem was well defined, not large, and she had no hard time limit to complete the task. She ended up spending almost an hour trying to solve the problem. If that is as much "pressure" as it takes for her to fall apart the way she did, then she's not qualified for the job.


Return to “Coding”

Who is online

Users browsing this forum: No registered users and 10 guests