[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;
-------