Motley says: "To prepare for an interview, just make sure you can code on a whiteboard"
Summary
Motley: If I can code well on a whiteboard, I am a shoe-in for the job.
Maven: There is more to just whiteboard coding - make a good first impression, do your research, and prepare, prepare, prepare.
______________________________
[Context: Someone Motley knows is interviewing for a new job. Motley wants some advice some Maven on how to interview effectively ]
Motley: Hey Mave, what are you up to?
Maven: Hmmm… you're coming to visit me with a nice query of what I am up to. This is an unexpected surprise! But, it probably means you want something.
Motley: I resent that! Do you think I only proactively talk to you when I want something? Well, errr, okay. Maybe you're right. Anyway, let's cut the idle chit-chat. I do have a question.
Maven: Fire away, Mot. I'll do what I can.
Motley: Well, my friend, um, Mary - yeah, that's it, Mary - is in the midst of a job hunt. She has lined up a couple of interviews and was asking for some tips on interviewing. I told her to just make sure she can code on a whiteboard - that seems like the #1 tip for a developer. However, it feel s like forever since I have been on a job interview, so I told her I would ask you to see if you had any tips in addition to my fantastic nugget of advice.
Maven: Interviewing. That sure is a stressful time. Having gone through it very recently here at Cynthesis, I'll let you know what I did to prepare. Firstly, preparation typically involves more than just practicing your whiteboard coding. Chances are good that in a technical interview Mary may be asked to code on a whiteboard, but there are some strategies to do it effectively.
Motley: I don't know what - if I see a wizard come in and code up a SAX XML parser on the whiteboard, he's got my vote for "hire"!
Maven: Well, first, I typically do a bit of preparation work. The first thing I need to figure out is if the company and/or team is really right for me. I'll read through the company's web site, learn about their products, read about the management team, and read what the press has to say.
Motley: Research the company both from the business and technical perspective. Check.
Maven: Then I'll try and figure out the names of the people that are interviewing me. Teams will usually give that information. Then I'll Google - damn! Caught myself again - I mean Windows Live Search on the names to see what I can find out. Have they written some interesting articles? Do they have a blog? That kind of thing. That gives me a bit of insight into their character and gives me some hints on what kinds of questions I'll be asked. It also helps with the small talk at the beginning because I now know something about the person interviewing me.
Motley: Research the people interviewing me. Check.
Maven: Next, I have a couple of books that I like to scan over to help me brush up on some concepts people often ask about but I don't necessarily use all the time. Often I fail to understand why I get asked these questions, but I digress.
Motley: So what books do you recommend? I am not a big believer in software engineering books, but I need some help here.
Maven: The first one I brush up on is Programming Interviews Exposed. It takes you through some technical interviews and discusses the mindset a developer typically has during an interview. After I read this and think about how the interview will go, I remind myself to think out loud, start with the basic solution first and optimize, and think about boundary cases and other test scenarios. I then make sure that even if I don't have time in an interview to do everything that production quality code requires, I at least talk about - like running FxCop for example.
Motley: Good tips. Think out loud. Give the interviewer some clues as to how you would behave on the job. Check. Other books?
Maven: Another oldie but goodie is Programming Pearls. This book covers a bunch of problem-solving scenarios, such as sorting, vectors, searches and others. It's great for helping turn up the creativity notch. Examples are in C++. One other thing I'll do is grab an algorithms book and review some basic stuff. I have a big white algorithms book from university that I use, but it's cryptic. I recommend you grab yourself a book that focuses on your language of choice. There are lots out there.
Motley: Books around algorithms. Check. Any other advice?
Maven: Practice! Make sure you are in the mindset before the interview. The week leading up to it code up some toy problems like atoi() or some kind of sort. Code it like you would on a whiteboard. Also, don't be afraid to be creative! Suggest hair-brained - but reasonable - solutions to problems. In fact, if you'd rather code in the IDE like VS, ask the interviewer to use her PC! Why not get the aid of help and intellisense while you code the problem. That's what you would do on the job anyway! I am amazed more people don't do this.
Motley: Very cool. Yeah, why not get the aid of the tools. If they say "no", I always have the whiteboard.
Maven: We could go on with advice, but I don't want to overwhelm you. Hopefully James is listening to this conversation and can get all the fine readers to share some advice. I hope they make a comment so we can all learn from each other!
Motley: Yeah, I'd love to hear more advice from some more intelligent individuals than you. There must be good stuff out there for me to sponge up.
Maven: So when is your interview??
Motley: It's not me dude! I am happy here, even with you bothering me every day.
______________________________
Maven's Pointer: Many interviewers make up their mind about hiring someone in the first 10-60 seconds of the interview. Check out Blink for more information. As a result, it is really important to make a good first impression. Complement or ask the interviewer about something you know makes them happy, like a photo of their family. Mention something positive you read in a blog entry. As they say on TV, you never get a second chance to make a first impression.
Maven's Resources:
- Programming Interviews Exposed, by Mongan et al, Wrox, ISBN: 047012167X, April 2007.
- Programming Pearls, by Jon Bentley, Addison-Wesley Professional, 2nd Edition, ISBN: 0201657880, September 1999.
- CareerBytes: Top 10 Technical Interview Tips, http://www.codeproject.com/gen/work/TechInterviewTips.asp, October 2006.
- Blink: The Power of Thinking Without Thinking, by Malcolm Gladwell, Back Bay Books, ISBN: 0316010669, April 2007.