When I am soliciting a prospect for a programming
contract, many those customers interview me using traditional
interviewing techniques: a resume, standard interview
questions and job references. Others are more interested
in a salesmanship approach in which I sell them on my
abilities and show samples of prior work.
I work both as a contractor and as paid employee and
I've even hired professional programmers. It doesn't
matter to me which position I have because the money
spends the same regardless of how I earned it. Most
importantly, I have fun with the projects I work on.
In a recent unscientific poll on BCBJournal.org
(a magazine for C++ programmers), 88% of the respondents
are paid for their programming work through a corporation,
as a private contractor or through government, educational
and non-profit organizations.
Unless you're a hobbyist, at some point in your career
you will be interviewed for a software development position.
The best interviewing advice follows the Boy
Scout motto of "Be Prepared". In addition to knowing
the company, knowing their industry, knowing their products
and practicing standard interviewing questions ("So
why do you want to work for us?"), software engineers
are expected to be able to communicate their knowledge
of their art and demonstrate their skills on demand.
Charles Lewis puts this in perspective in a response
he wrote on DreamInCode.net:
"As for the questions, it really depends if you are
working on the hardware or software side. The questions
they might ask a prospective embedded software/hardware
programmer tend to center around subjects like interfacing
between the two, while strict software questions often
fall into common categories...linked lists, operator
overloading, class implementations...".
I've prepared a list of common C++ interviewing questions.
Some are ones that have been asked me; others I've asked
as an interviewer.
Like most things, the questions tend to fall into categories:
Language Issues
Definitions
Acronyms
Efficient Programming
Practical Programming
Buzz Phrases
Problem Solving
Communication
Brain Teasers
What's wrong with this code
Showing Skills with Short Programs:
Language Lawyer
Unfair Questions
Simulating the Interview
You could read this article and mentally check-off each question. But that
wouldn't prepare you nearly as well as going the extra step: simulating an
interview.
Interview Preparation
Set up a video camera and to record your interview.
If
you don't have a video camera available, an audio recorder
will be sufficient.
Find a friend that can grill you on these questions. It's helpful if the
friend is also a software developer because they will be able to
correctly speak the acronyms and words that are peculiar to programming.
Set up the rules for the
simulated interview: the interview will be as close to a 'normal' interview
as possible. The interviewer should not do distracting things like read a
newspaper, or comment on your answers, or try to provoke you into an argument.
The interview should be at most one hour long.
As an interviewee, you should likewise treat it just like a real interview.
If you stumble on a question, practice how you would recover just like it had
been a real situation. Everything you say, and all of your nonverbal cues,
should be exactly the way you would do it in a real situation.
To help prepare for the part, dress for the part. Have your friend dress in
something other than a Hawaiian shirt and shorts. Similarly, you should be in
your best interviewing clothes -- including using that tie in your
closet that you haven't worn in a couple years.
In American culture, interviews are usually face-to-face with a desk or small
table between the participants. Telephone interviews should also be
practiced. This can be simulated by facing away from the interviewer. I
personally find telephone interviews to be more difficult because I receive
many cues from the nonverbal communication of the person I'm talking to.
Keep the Interview Short
If you're not finished within an hour, save the unasked
questions for a followup interview. The reason for limiting
the interview to an hour is so you have time to review
your recording and critically critique yourself with
the interviewer to find out what you did right and what
you can improve. Repeat this exercise until you are
ready for a real interview.
Just so you don't accidentally peek at the questions
before you're ready, all of the questions are on the
next page. You can
and come back when you're ready to simulate a real C++
job interview. When you're ready to start
the interview click on the Start the Interview button.