[Tutor] Am I missing something obvious about "FizzBuzz"?

Mats Wichmann mats at wichmann.us
Sun Oct 1 11:40:10 EDT 2017


On 10/01/2017 09:09 AM, Steven D'Aprano wrote:
> On Sun, Oct 01, 2017 at 12:04:13PM +0100, Alan Gauld via Tutor wrote:
> 
>> The fizzbuzz one is definitely a bit too simplistic, but the one
>> cited by McConnel (reverse a linked list in C) is typical of
>> the kind of question we used. And yes, most candidates failed.
>>
>> Some of that is interview nerves so we would give them some
>> hints and see if they could find the errors themselves. But
>> some people literally couldn't even start!
> 
> I should think not! It's been about 30 years since I've last needed to 
> reverse a linked list (in Pascal, not C, but the principle is the same). 
> Who does that these days?
> 
> I would have *no idea* how to traverse a singly-linked list in reverse 
> without making a copy of it first.
> 
> Okay, if you're specifically looking for somebody to write low-level 
> algorithmic code, that's one thing. But 95% of programmers spend 95% of 
> their time using library calls. And the remaining time, they certainly 
> don't have to come up with a "reverse this linked list" algorithm from 
> scratch. Google it, or look it up in a book.

<pointless-sermon>

My problem with programming tests too.  There's only so much stuff you
can keep in easily accessible memory, and the ability to find snippets
and other answers and make use of them in order to help develop code
efficiently is a more valuable programming skill than memorization of
algorithms! - we're trying not to reinvent the wheel unless we
absolutely have to. (We could go off on a tangent and argue about
software patents here but I'll spare you all that).

Many years ago I had a form of this discussion with my Physicist father,
before computers were a big factor in his field: you needed to
understand how you would arrive at an answer mainly in order to have a
sense of whether something you were going to use was reasonable or off
by orders of magnitude, because in real life you looked things up in the
Rubber Book
(https://en.wikipedia.org/wiki/CRC_Handbook_of_Chemistry_and_Physics)
and other resources. We use google today in much the same way: why
repeat work someone's already done?

So employment-type programming tests often test for something that's not
really part of your day-to-day routine as a programmer.

Probably the best programming test there is look at code that's already
been developed, but it's unfair to assume (as some companies do today)
that a programmer's life's work will be sitting out in the open on
github - that's just not true for everyone/everything, and not nearly
all of the important skills of the professional programmer are in code
either.

</pointless-sermon>


More information about the Tutor mailing list