On Fri, 21 Sep 2007 16:31:04 +0200, Frans Bouma <[EMAIL PROTECTED]> wrote:

>> On Fri, 21 Sep 2007 15:28:58 +0200, Frans Bouma <[EMAIL PROTECTED]>
wrote:
>> >        I've spend over 12 years in something called 'the demoscene'
>> >(www.scene.org ), it's basicly nerd heaven for lowlevel programming. I
can
>> >tell you, a lot of people there beat anyone in these simple algo tests,
>> >however they're unable to do a big class design, simply because they
have
>> no
>> >education in that area.
>>
>> no education? or no experience?
>
>        Often no experience and likely not really that much education
really.
>Say you have a guy who's 18. Does that person have a lot of education in
class
>design, knowledge about what makes software maintainable etc. ? no. But
that
>person can likely be able to write for you a killer quaternion based 3D
object
>rotator. The right person for the job? He'll likely pass all your low-
level

If he can learn to write "quaternion based 3D object rotator"...then he
can probably learn how to do lots of stuff useful to me....

>tests. But will fail miserably on the job. That's why you should test the
>person with work they have to do on the job. Diplomas then additionaly
show
>the person has the drive and skill to complete a uni-course.

Will he fail miserably on the job.....he may do....there are no
guarentees...but if he's clever enough to do as you say, and has drive,
then I see no reason to reject him....the tests in this context would seem
to be valuable.

>
>> >> if someone can't reverse a string
>> >> in place or work out the longest run in a string then they probably
wont
>> >> be able to thing of sensible ways to create invoices associated to a
>> >> supplier relating to a specific product....
>> >
>> >        I see 0.0 overlap between the two. Reversing a string is a low-
>> level
>> >algo and if you don't know how to do in-place buffer copying or
reversing
>> or
>> >whatever you want them to do (in place reversing of ints without
>> variables,
>> >that's also a nice one, but only for people who think fiddling bits is
>> what it
>> >takes to be a software engineer),
>>
>> I completely disagree...the swapping of numerics without variables is
>> a 'trick' used by assembly programmers....you either know it or you
>> don't....the ability to write simple procedural algorithms is a critical
>> programming skill, used every hour of every day, are you really claiming
>> that a competent C# programmer wouldn't be able to reverse a string
with a
>> loop?
>
>        I bet a lot of C# programmers will write a routine which fails
with a
>string of uneven length. ;)

lots would....would a good one be more likely to get it right than a bad
one?

yes....it's a no brainer.

>
>        And even then: would you want to hire a C# developer who doesn't
use
>framework classes for this? Or one who DOES use framework classes for
this?
>

don't care...I'm interested in how it's done.

>> would it matter if it were a string or a set of delegates in a generic
>> collection used for event handlers?...does that somehow make it more
>> relevant?
>
>        If someone is faced with these problems, they'll likely look up
the
>algorithm and implement that. You say it's a junior position. So the
person
>hired has little knowledge about all the algorithms out there, only a few
of
>them are known by the person. So it's likely the person will run into
problems
>which ask for an algo which isn't known.
>

you seem to have the notion that all algorithms come from web sites....do
you google every time you wanted to write a loop?....surely not.

>        What will the person do then? Look it up? Ask? Try for hours? Do
you
>think you can find that out with tests which have well known algo's?

the test will be in situ.....they're not going to have hours to look it
up.....I can write a string reverser in about 5 minutes.....and thats with
a cup of coffee and a sleep.

>
>> >        Remember: interviewing for a job is often totally difficult
>> compared
>> >to the real job.
>>
>> difficult? or different?
>
>        different, my bad.

yes....so?

>
>> either way....they are not completely unrelated...I am trying to
assertain
>> the ability to do the job....long term.
>
>        IMHO impossible to determine from a junior with little
experience: you
>then want the hire to have the ability to learn and find things out for
>themselves quickly. You then need to hire them for a week or so to test
them
>through.

I agree..but this is not how the job market works...you don't get people
giving up a full time job to be hired for a week or two....they do have a
probationary period, but I think you want to be as sure as you can before
you start ruining peoples careers by laying them off after probationary.

>
>> >        Also, if I was given the tests you proposed, I'd have left
right
>there
>> >on the spot, simply because the tests would show that you don't know
what
>to
>> >ask from me, as I don't expect to write atoi routines or string
reversers.
>>
>> maybe that's part of the test...if you can't be bothered to sit a simple
>> test, I probably wouldn't want to employ you....asking you to do
voluntary
>> overtime, or fix a bug would seem to be a nightmare in comparison.
>
>        Though do you make the right decision then? Perhaps the person
walking
>away makes the decision that the company who wants to hire him is not
capable
>of putting up a decent interview, so what else is flaky?

Perhaps.....perhaps tells me nothing.....perhaps is an observation that
all in life is not deterministic.

I don't expect guarentees, I'm just trying to get something useful out of
a thirty minute test.

>
>> >> if they can't think in a
>> >> coherent and organised algorithmic manner then they wont be able to
>> >> design a new auto pilot....who gives a 'hoot' if they know how to do
the
>> >> specific task I'm going to ask them to do next week, and outperform
>> >> other more able candidates who aren't up to speed on the latest
version
>> >> of ASP.net, if they are basically not as good as I can get over the
>> >> longer term.
>> >
>> >        That's something you'll never know, but definitely won't get
>> >determined with tests which take a few lines of code.
>>
>> Again you seem to claim that you would not expect C# programmers can't
>> reverse strings in place, any more than a random person off the
>> street....a claim I find bizarre.
>
>        If that C# developer writes websites all day, why would I expect
that
>person to be able to reverse strings in place? S/he probably will come up
with
>an algo but a random person of the street has the same chance. And what
if the
>person is able to do that? Is that person then a good developer and thinks
>with the right mindset? I see 0.0 reason to find that true.

OK....then we fundamentally disagree...and we may as well leave it at
that....I find it a bizarre belief.

>
>> >        For example, most algorithms to use on a daily basis are
already
>> >discovered and documented in full on the internet and in books.
Like 'sort
>> >this DAG in the right order so all jobs represented by nodes are
enlisted
>> in
>> >the right order for execution'. Sounds tough? No, it doesn't.
>>
>> ?
>> I'm not asking them to invent an algorithm....just apply it.
>
>        Topology sort of a DAG is simple graph math, every CS student
gets it.
>So if someone can't do a depth first search through a graph, s/he has no
>knowledge of graphs. It's not inventing an algo, it's a well known algo.
That
>is, if you have had that education.

I would not expect a junior or senior programmer to understand what you
are talking about....I have a masters in maths......and I don't understand
what you're talking about......it's the demonstration of knowledge....I
want a demonstration of ability.

>
>        I mentioned it to illustrate that the algo YOU pick to test,
might be
>well known or easy, but might be for others hard to do and vice versa.

?

all algorithms are not created equally...

I would expect all programmers to understand simple iteration...i.e. a
loop.

I would expect less than 10% to know anything about acyclic graphs....or
at least in those terms.

>
>        If you tell the junior to navigate through the graph and find all
the
>paths, it's the same as string reversal: the algorithm sounds OK, it tests
>basic simple first grade programming 101 skills no-one bothers about, and
it
>tells you nothing about the true knowledge of the person.

what if they fail!

>
>        You apparently haven't heard of topology sort. SO if I was the
>interviewer and you were the interviewee, you would likely fail. Another
>person, who would have heard about it, would likely succeed.

fine....you can go and employ all the people who know about 'topology
sorts'....and I'll have the ones that can apply simple algorithmic
techniques.

>
>        Did I pick the right person? Undefined: based on that algo test,
you
>can't tell anything about the true skill of the person.

no?

>
>> >        If someone tries to re-do that topology sort algo by re-doing
>> years of
>> >graph math science in that interview, what does that tell you? Isn't it
>> more
>> >wise to hire someone who will tell you "THe algorithm is on the
internet
>> and
>> >in Sedgewick, I don't have it with me but it will take 2 minutes to
write
>> it,
>> >tops". What would you answer then? "You're lazy" ? It's the correct
>> answer!
>>
>> programming is about the application of that knowledge.
>> I don't know what you're getting at.
>> If a programmer can't do a simple loop then I'm not interested.
>
>        EVERY programmer can write a simple loop. That's why these tests
are
>so stupid!

what if they fail!

the deduction that the information gleaned from a test that everyone (by
premise) succeeds at is none, is trivial.

YOU failed the test.....you didn't do it 'in place'.

>
>        What I was getting at was: if the dayjob requires a complex algo,
the
>person can:
>1) spend all day fiddling with inferiour crapcode s/he cooked up
themselves,
>simply because the scientific research leading to the solution isn't
known by
>them
>
>or
>2) ask a collegue (like you want that 10 times aday)
>
>or
>3) go on the internet, do research about what others have found out,
learns
>stuff along the way, reads some articles and after a couple of hours
perhaps
>has found what to do and writes the code.
>
>        I'd pick the person who does 3 and the rest can go home.

depends how long it took.....if I want them to reverse a string and they
spend a couple of hours on the internet....then they can go home.

>
>> >        An assignment to do might take an hour for example but has to
be
>> >reflecting what they have to do on the day they're starting, right? Or
>> >something you want them to grow into perhaps. If you want them to pass
a
>test
>> >which is suitable for them in 2-3 years time, you've invited the wrong
>people
>> >and have placed the wrong ad. :)
>>
>> ?
>> interviewing is a crude way of trying to use crude correlations between
>> measurable (possibly qualitively) metrics and how productive they will
be
>> as an employee....I don't think it's unreasonable to expect a programmer
>> to be able to apply simple procedural algorithms.....if you don't think
>> there is a correlation, fine....you can get all the people who can't do
>> loops working for you on the cheap.....good luck.
>
>        What's the point of testing procedural stuff in an OO
environment? Do
>you want them to code procedural script-like OO code? Or do you want them
to
>write OO code? Do you want them to write deep class hierarchies no-one
will
>understand? Or do you want them to do the right thing?

OO is a generisation of procedural programming (at least in the context of
imperative languages)....if they can't write procedural code....they can't
write OO code.....I don't view (good) OOP as a basic skill.....I do view
procedural programming as one.

And I would much rather have 'procedural script-like OO code' than 'deep
class hierarchies no-one will understand'?....the people with all the
buzzwards, patterns, Agile techniques who cannot write simple algorithsm
will *probably* give me the latter.

>
>        You can't determine that from isolated tests which test basic
stuff
>learned on page 1 of every language book.

YOU failed the test.

I assume you failed it, not because you can't do it, but because you
didn't clarify the question....I would then make a note 'does not clarify
requirements?'.

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to