OT: CS education gone wrong (Was: Re: TDD is BS?)

H. S. Teoh hsteoh at quickfur.ath.cx
Fri Jun 21 08:14:49 PDT 2013


On Fri, Jun 21, 2013 at 11:59:12AM +0200, Jacob Carlborg wrote:
> On 2013-06-21 07:57, H. S. Teoh wrote:
> 
> >we got to ask HR to first administer a technical test before any
> >interviews are arranged; test results are reviewed before deciding to
> >interview the candidate
> 
> I done tests like that, they all suck. This is how it usually works:
> 
> You get a problem to solve. They say: "solve it anyway you want,
> using any language you want".

Heh, at my job, we're looking for skill in specific languages, so
candidates are explicitly asked to write C code. And this is done not in
an interview setting (which puts too much pressure on the candidate --
can *you* write code in front of interviewers without panicking at least
a bit?), but in a classroom setting. Though, granted, when *I* had to go
through the procedure, it felt like I was taking my CS final exams all
over again. Not exactly a pleasant experience. :-P


> You solve it farily quickly and straight forward. Then they say, "you
> are not allowed to use that function". Basically they're saying it's
> cheating. Then you remove that function and change the implementation
> accordingly. Then they say, "you are not allowed to use that other
> function". You change the code accordingly and this dance continues.
> Then you're thinking to yourself, "Am I supposed to reimplement the
> standard library?".

That's the sign of a poorly-chosen test question. The kind of question I
like to use doesn't focus on nitpicky details like that, but on actual
algorithms or domain-specific knowledge, like showing that the candidate
understands bit operations, pointer arithmetic, and stuff like that. On
that note, it's rather shocking how few candidates know how to use
malloc() and free() correctly...

That's not to say the tests my employer gives have only "good"
questions, though; there are some that basically do what you describe:
"please re-implement strstr(), please concatenate strings without using
strcat()", and the like. When I was involved in hiring, I usually ignore
these questions when evaluating the candidate, or cut them a lot of
slack.

But I do have a slightly evil streak when it comes to technical tests...
once I wrote a Javascript question that requires the candidate to
evaluate what a piece of code does, that involves several nested
closures and variable shadowing. We hired one of the (very) few
candidates who actually got that question right, and she turned out to
be an excellent coder.


> I would say, most times, it's almost irresponsible to _not_ use the
> standard library. A bunch of people, a lot smarter than I, have had
> a good 20 years or so to perfect and fine tune the standard library.
> Not a chance in hell that I'm going to beat that, on an interview,
> with code written on a whiteboard.

Well, I don't think the point of the test is to prove that you can write
code that's *superior* to the standard library, but that you *can* write
non-trivial functionality from ground up.


> A side note. You're of curse not allowed to look at any documentation
> at all and you're not allowed to use a text editor.  You write the
> code on a whiteboard, yes a _whiteboard_.

Well, that's a new one. :-P  Our tests are administered as pen-and-paper
tests. Not unlike CS final exams, unfortunately. :-/


> That's just so stupid. That's not how programming works in the real
> world. Why the hell do they think IDE's have built in, easy to
> read/find, documentation.
[...]

Actually, we instruct HR to provide the standard C library manuals if
candidates ask for it. There *are* some unfair questions that expect you
to know, e.g., the exact order of arguments to select() and stuff like
that, but like I said, it's not HR who evaluates the tests, but the
hiring managers, so it's up to our discretion how much weight we put on
questions like that. We usually disregard minor mistakes like using the
wrong order of arguments to qsort(), if the intent is clear. We don't
(or at least I don't) just blindly look for the highest-scoring test and
hire those candidates; I usually take the time to look at the code and
ask, "why did they write it that way?  what does that show about their
coding abilities?".


T

-- 
I see that you JS got Bach.


More information about the Digitalmars-d mailing list