[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: not enough real programmers?
Jeff Kenton posted:
> prs@gol.com (Peter Stephenson) writes:
>
> >The question remains: how do you tell if they are decent programmers?
>
> Things I ask:
>
> * Describe a project you think you did well. What were the important
> decisions you had to make?
>
> * Tell me how you attack a new project you are given.
>
> * Compare C and C++.
>
> * What makes a good programmer?
>
> All of these are open ended questions. No multiple choice. If s/he
> can communicate the important aspects of what was done, chances are
> you have a decent candidate. You can learn a lot by listening. Most
> interviewers talk way too much.
But with the exception of maybe one question (the C++ one), the
answers you'll get won't give an indication of whether the people
you're interviewing are [technically] competent for doing the
job.
What you will get is a collection of the best salespeople (those
who are best in verbal expression and presentation), instead of
the best programmers.
As replies to your first two questions you'll probably get a
description (told in the first person) of the important decisions
the project leader made, and how the *team* the applicant was in
attacked the project.
As for the last question, an example: there's a huge difference
between saying "[among other things] a good programmer writes
code that's maintainable", and actually writing maintainable
code.
IMO, a good way to evaluate an applicant is making him write a
simple project (or even just an algoritm), and then evaluate the
STYLE of his code (not the actual code itself).
Compare the two below: both work [I hope], and both introduce the
same potential bug if the code above it is changed.
-------
// Watch this: iSize must be > 0 !!!
ixOut = 0;
for(ixIn=0; ixIn < iSize; ixIn++)
if(InArray[iInIx]) OutArray[ixOut++] = InArray[ixIn];
return ixOut; // Return new used size
-------
for(i=j=0;i<n;i++)if(a1[i])a2[j++]=a1[i]; return j;
-------