Subject: RE: [hackers-il] What are the levels of professionalism of star p rogrammers?

From: Chen Shapira <[email-masked]>
Date: Tue, 25 Jul 2000 10:58:03 +0200

> Then, some scoring method would be invoked to assign a level to a
> programmer, based upon the number of descriptions form each 
> level which
> fit him.  Probably the lowest level in which there are 
> descriptions which
> fit him.

I'll throw in my 0.2 NIS:
A programmer is judged not by what he knows but by what he did. Not merely
experience but depth and diversity too.

I know many computer languages, too many for my own good. Scheme,
PostScript, C, JVM assembly, JavaScript, etc. I'm still a less efficient
programmer than the VB programmer next cube who was doing VB for 7 years,
seen it all, solved it all, and while I spend time trying to come up with a
solution, too often a wrong one, he simply recalls the last time he saw
something similar.
And then there are those people who work very intensely and after 2 years of
programming C they already saw every C program there is and solved it to
perfection.

And there are personality types. Some people are designer types - they'll
work hard to come up with the perfect most generalized and extansable
design. Others are fast-coders - they'll come up with a simple design
that'll solve the problem and code it. Some people favor perfection, others
simplicity.

IMHO the two things you need in a programmer is that he'll be smart and that
he'll be able to get things done.  
Experience is good, many languages is good. But the first 2 requirments are
essential.
If he isn't smart - well, he'll do stupid mistakes.
People who are smart but can't get things done usually have Phd.

Few tips for interviewers:
1. Look for excitment and passion. Does the person gets excited talking
about his favorite language? very good sign.
2. They should be good at explaining things.
3. Look for signs that he got things done, preferably his way. "boss wanted
X and client wanted Y, so I wrote a proposal and..."
4. Technical questions: Reverse a linked list, recursive and iterative
solution to fibonaci/factorial, height of binary tree, itoa, etc.
Make sure they know what pointers are, when to malloc and free, and not to
reference a null pointer.
Also look for effeciency, even ask them to optimize.
Good programmers plan and think abit before writing code, good programmers
draw the {} before filling the block. Ask the programmer to search his
program for bugs.
5. Ask them to design something. Good programmers will allways squeeze you
for more info. Look for the ability to get a decision "well, we can talk
about this all day, but we've got to do something, so let's go with decision
X".
6. Contradict them when you are sure they are right. Don't hire those who
won't argue their point.

C.S.