Oh boy. You hit a nerve here, probably unintentionally.
If you were hiring a gardener, would you would find
someone acceptable who doesn't know the difference
between annuals and perenials? If you were hiring
a bank security guard, would you waive the drug
test so that you could save a dollar an hour off
their pay? If you were hiring a grade school teacher,
would you neglect a background check for sexual
misconduct? If you were hiring an electrician, would
you pick up some guy on the street corner who graduated
high school changed flourescent bulbs before? No, you
wouldn't, not unless you're very short-sighted,
negligent, irresponsible, or stupid.
Some attitudes towards computer programmers:
- They work magic
- Or, alternatively, they're dumb kids who just happen to know a little bit about how computer works
- Computers are hard for some people and not others
- The younger generation is good at computers
- Computer people are all interchangeable
- If you're not happy with how things are going, you can just work them harder
These attitudes are based on myths. Trying to follow
these myths will frustrate them and will harm progress
towards your goal.
I've seen it again and again - someone who should
know better hires the wrong guy (or even the right guy)
because they find some kid who fits their stereotype
of the computer genious. Good vibes all around, everyone
is excited about the project. After a month or two of
no apparent progress or a few prototypes that don't
look like what you want, things start to get tense.
You start to doubt your guy because you have lingering
doubts about your ability to pick someone. You know
you could be being taken advantage of, so you strugle
every day with the question of whether this kid is
taking advantage of you. You turn up the heat on him,
demanding more and faster, to keep him from getting
away scot free with bilking you. Eventually, he
quits for a better job, or you cancel the project
or more often, fire him and bring in someone younger,
leaner, and cheaper, and repeat the whole progress even
more spectacularly. Meanwhile, consultants don't feel
like they can tell you how error prone and grueling
and exacting the software development process is because
they don't want to be labeled a hack and they don't
want to ruin the good vibe that each project starts
out with.
If you're at the doctors with horrible pains, you
don't dismiss him for an intern if he says that
he will have to do surgery and it will cost a lot and
there will be a long recovery. People have serious
control issues when it comes to programmers - they
don't understand the process, but they don't understand
exactly how little they understand the process (see
the bullet list of dillusions above), so they tug on
the reigns when they should be staying the heck out of
it.
Yes, I'm getting around to an answer to your question.
I just needed to post some background to the problem
first, since the scope of the problem seems to have
been missed.
The solution is (if you haven't guessed) is to:
- Find someone who is serious about their profession
- Takes a stand on technical and management issues and keeps the project on track even when you're confused -
personality is important
On the first point, someone who is active in the community,
has gone through college and studied advanced topics
while they were there, has their name spread all over
the Internet when you search google for it,
and/or was already writing software before going to
school is what you're after. This is a better test than
some quiz in some ways, but people lie and play the
system, so a good minimum compentency test is helpful
too. Brainbench is too easy to cheat on. Reading
part of perlfaq (perldoc.org) and quizzing them
from that verbally should do the trick.
After you find this person and put them to work,
leave them alone. Get a second opinion from a trusted
source if you must - and more people should do this
far more often - but don't harrass them out of fear
or boredom.
Perhaps I'm overly cynical, but I've seen far more
mismanagement, aborted efforts, amaturely written code
leaving a time bomb that always goes off sooner or later,
and time and energy wasted on politics, power plays,
and second guessing.
I hope this helps. I'm sure there are other good
suggestions in other notes in here - this doesn't
attempt to second guess them.
-scott