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> _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor