Thursday, September 24, 2009

Interviewing: Tell Stories

Softball questions are questions the interviewer asks to try to find out about your personality, your history, your level of enthusiasm, and your experience.  While technical questions evaluate your skills or your knowledge, softball questions are meant to have you talk about less quantifiable abilities.  An interviewer might ask a dozen or more softball questions to determine what you're like outside of an interview room.

The word to remember for interviews, especially the softball questions, is: STORIES.  People who are good storytellers tend to be good interviewees.

Technical questions are important - you need the skills to be able to do the job.  However, often interviewers are convinced by your answers to softball questions - then they spend the rest of the interview trying to convince themselves why they should hire you, instead of spending the rest of the interview trying to convince themselves why they shouldn't.

A great strategy for preparing for an interview is to review some softball questions and come up with 3-4 compelling and interesting stories that stand out from your education or from your career.  Usually this handful of stories can be adapted to several questions.  It’s usually OK to answer one question with a story and then later say, “Well, to answer that question, I’m going to go back to my story about…”

You don't need to memorize these stories, but being able to tell them in a manner that engages the interviewer will take you a long way toward getting the job.

The Hiring Manager

In the most common case, when a hiring manager looks at your resume, it’s the only time that he’ll (or she, there are a few women in this business, at least three or four) even see your name, or anything else about you, for that matter.  That means that you’ve only got one shot at catching his (or her) attention.

The best thing to do when you’re writing your resume for a hiring manager is try to think like somebody who is reviewing resumes – somebody who is trying to identify a good candidate to administer a phone screen or to bring in for an interview.  I’ll give you some points to help you put yourself in this person’s shoes.
  1. Either you’re terribly busy because your boss has unrealistic expectations, or you’d just like to get back to watching YouTube and you don’t want to be bothered by reviewing resumes.
  2. You’re hoping to hire somebody to help alleviate the load caused by previously mentioned unrealistic expectations (or who you can order around and will do all of the work while you watch YouTube).
  3. You’d like to get through this as quickly as possible so that you don’t get buried under mountains of work.
  4. You’ve got dozens of resumes (maybe more), and almost all of them seem to represent candidates of about the same level of experience and skills.
What most of this adds up to is that the person reviewing resumes probably doesn’t have the time or the interest to read each one in detail.  The resumes probably either came from a recruiter, a database that scans resumes for buzzwords, or were dumped by somebody else.  Usually, the hiring manager reviewing these resumes is going to assume that they’re mostly good and mostly fitting and mostly reasonable, even though there may be some outliers (like getting a barista’s resume when you’re looking for a Java programmer).

What you also should consider, while we’re thinking like the hiring manager, is that more than likely, this guy was a geek at one point, too (maybe even still is).  He probably likes toys like the rest of us geeks (and since he has “manager” in his title, he’s probably got money to buy them, too).  It’s also equally probable that he speaks geek.  This means that you can more than likely safely assume that any geeked-out terms will be understood.

So, now that you know this person is terribly busy, but also can speak the local dialect of geek, you can tailor your resume a bit better.  You don’t have to worry about whether or not the hiring manager will understand what you mean when you write, “Wrote specification and designed web application running on Apache Tomcat to accept data requests, access a PostgreSQL database, and deliver data as XML,” because even if he hasn’t worked on that particular technology, chances are he’s at least heard of it.

To impress the hiring manager, you’re going to need to do a few things:
  1. Get the point across very briefly.  When I am reviewing resumes, I give the same amount of time to a 5-page resume as I do to a 1-page resume.  If you want a hiring manger to really read it, make sure you are brief.
  2. Mention the magnitude of your contributions.  “Developed in Visual Basic” doesn’t really tell a hiring manager what you did.  “Saved project by rapidly prototyping proof-of-concept user interface for configuring 3D object output” is much more descriptive and makes it sound like you’re worth hiring.
  3. While it’s good to mention the magnitude, don’t be outrageous.  While it’s one thing to be honest about your accomplishments, just don’t go overboard.
  4. Use proper grammar and spelling.  Not all hiring managers appreciate this, mind you; however, I’ve NEVER heard a hiring manager say, “I think this resume needs more spelling mistakes.”  Don’t rely on the grammar and spelling tools in your word processor – have somebody else review it so that you can be more confident there are no mistakes, or read it out loud.
  5. Don’t go crazy with your formatting.  Formatting in your resume should only work to emphasize your content.  If you get too crazy with formatting, you risk being distracting or annoying – and with the amount of time a hiring manager, you can’t afford to distract from your content.
There is a chance that the hiring manager is the person looking for resumes.  In this case, beyond being merely descriptive and informative, you’ll have to be appealing in order to grab his attention as well.

If a hiring manager chooses your resume, it will likely be reviewed in more detail.  It’s good to make sure that while it’s brief, there’s enough there to hold his interest and adequately describe your background.

Sometimes the hiring manager is the only one to make the call on a phone screen or interview, but one other thing that the hiring manager might do is send the resume to his technical staff for further review and feedback.

Wednesday, September 23, 2009

Interview Question: Tell me about a time you failed.

What the interviewer is really asking:
Can you recognize weakness in yourself?  Can you overcome failures and learn from them?

How to answer:
I love this so much more than the “What is your biggest weakness?” question because it provides so much more insight.  The interviewer is getting the same information, but they are asking the question in a way that people can give an honest response without bashing themselves.  It also is universal.  Everybody has failed at something.

Be careful when you’re answering this question, because you don’t want to look like the sole reason for the failure; however, even if you are, highlight how you learned something from the experience.  You want to make it sound like you are able to take failures and stop the same thing from happening again.  Tell a story.  Interviews are a great place for stories.  Emphasize what you learned from the experience and talk about how you'd prevent the same failure from happening again.  Take what happened and put a positive spin on it.

Interview Question: What is your biggest weakness?

What the interviewer is really asking:
It's equally likely that the interviewer is asking you, "Can you see weakness in yourself?" as it is that the interviewer is asking you, "Will you outwardly bash yourself and convince me not to hire you?"

How to answer this question:
Jokingly say "I'm an obsessive perfectionist," and try to laugh.  It will open everybody up.

Honestly, this is probably the biggest BS question that people ask.  I understand what the interviewer is trying to find out by asking it, but there are MANY better questions that also get the same results, and can get the same results with a more honest response.

Regardless, almost everybody asks it, so have something prepared that sounds vaguely like a weakness but really is a thinly veiled strength.  Something like, “If I have time, I really have a hard time letting go of a difficult problem,” can sound almost like a weakness but really isn’t.

Another strategy for this question is to mention a weakness you used to have in the past, but then talk about how you overcame it.  It’s a bit indirect, but it works.

Getting a job: Networking

When I say networking, what I’m talking about doesn’t have anything to do with plugging Cat5e cables into NICs.  Personal or social networking is a great way to find a job and to get an interview.  The best leads you will get will be due to knowing somebody who knows somebody.

The reason why networking is so important is because the interview process is inherently flawed.  Think of it – you ask somebody to come in, at their best dressed, most prepared, and likely at the top of their game to ask a few hypothetical questions with little or no consequences for wrong answers.  Networking removes some of the mystery.  Instead of hearing the best possible description of a situation (“My application was responsible for 2 million dollars in revenue!”), you can hear the whole story (“That application was responsible for 4 million dollars in lawsuits!”).

A personal reference is likely worth more than anything you can put in your resume (except for maybe “Nobel Prize in Physics” – but depending on the reference, possibly even better than that).  When somebody gives you a personal reference, they are vouching for your behavior and ability.  If this is coming from somebody whose opinion the hirer trusts, then you’ve already made a ton of progress.  It’s probable at that point that the job is yours to lose.

The personal reference only works when it’s at the beginning of the process, and works better when it’s unsolicited.  Everybody asks for personal references, but those are usually checked at the end of the interview process, after they’ve already made the decision to hire you.

With the dawn of social networking sites, it’s never been easier to nag your friends and acquaintances about jobs.  Sites like LinkedIn provide a wealth of job seeking resources, as well as a lot of job postings.  Any time you’re applying to a company, do a search in your network and see if you know anybody who works there or has worked there in the past.  If you don’t, see if anybody you know might know somebody there.  Professional networking sites make this easy.  Ask if they know anything about the job.  It might get you a good personal reference and give you an edge on getting the interview.

Interview Questions: What is the Big O notation of X?

What the interviewer is really asking:
Can you figure out the computational complexity of a situation, algorithm, or process?

How to answer:
It might seem like a great idea to just memorize the Big O notation of every algorithm or process you've ever heard of, but this is going to be a lot of memorization and isn't going to be as impressive as reasoning your way through a problem.

Big O notation is simply a way to quickly describe how efficient some computing code is.  O(n) means that the process runs in time proportional to the amount of information processed; O(n2) means that the process runs in time proportional to the amount of information processed, squared.  So, for instance, if a O(n) process is processing 10,000 pieces of data, this process might take 10,000 milliseconds (or 10 seconds) assuming that each datum requires 1 millisecond of processing; a comparable O(n2) process would take over a day to process the same set of information.

An algorithm that runs a single for loop on a set of data would be O(n), because it only processes one iteration for each item (hence, n1); an algorithm that runs a for loop on a set of data, then has another for loop processing the entire set within each iteration of the first for loop, processes the entire set once for EACH item in the set (hence, n2).

A great explanation of Big O notation is available here:

I've seen this question come up in about half of the jobs I've interviewed for, so it's good to be able to understand it and explain it.

In the Interview: Look for Leads

Technical interviewers are notorious for asking a question with dozens of potential right answers, but wanting to hear only one of these answers for a completely arbitrary reason.  If the interviewer asks you a question, and you give an answer (that you know to be right), and they’re still pushing for a response, look for any hints they might be giving you to lead you into a certain answer.  

If you're confused on the question, it's totally understandable.  You've already answered the question, and in a way that any sane person would find acceptable and correct - but these aren't normal, sane people, they're geeks.  Try to think through the problem from the beginning, and don't be afraid to ask if there's a direction you should be moving in.  Unfortunately, the typical interviewer in this situation is the kind of person who is going to answer every question with a question (when asked, "Am I missing something?" they will respond with, "I don't know, *are* you?" which is always a big help).

I’ve worked with a lot of guys that ask a technical question, get a perfectly acceptable response, and then tell people that the candidate “didn’t know the answer” because they couldn’t come up with some obscure line of reasoning that the interviewer was expecting.  The best you can do here is answer the question to the best of your ability, try to go in different directions, and when all else fails, move on to the next question.

Tuesday, September 22, 2009

Interviewing: Be Honest

The first rule I like to lay down about resumes is, “Be Brief.”  But, if there’s a second rule, it’s, “Be Honest.”  Lots of people will tell you that embellishing on your resume is common practice, but I don’t think those people are trying to get a job programming C++.  You should state what you have done and what you can do realistically.  Lying on your resume will only get you into trouble later.  It might get you a phone screen or an interview, but it will set the expectations for those to a much higher (and probably unrealistic) standard.  Interviewers ask gurus different questions than they ask entry-level programmers.

Some people like to put lots of technologies that they’re only vaguely familiar with on their resumes.  This may or may not be a good idea.

Early in my career, somebody once gave me some interesting interview advice.  This person told me, “If an interviewer asks you if you can do something or if you know a certain technology, say, ‘Yes,’ and then go home and learn it.”  Since I know quite a few people who have been burned by this kind of advice, wasting entire weekends on learning obscure technologies (like COBOL) and still not knowing enough to pass an interview, I’d like to revise it.  I think better advice is, “If an interviewer asks you if you do something or if you know a certain technology, AND you’re at least familiar enough with it to understand what the gaps in your knowledge are, AND you feel like you could learn enough in a single weekend to fake it, AND you have a single weekend available, then say, ‘Yes.’”  That way you’ll at least be prepared.

This approach is really a matter of what you’re comfortable with.  Earlier in my career, I used to take the "learn it in a weekend" approach to all questions and never admit to not knowing anything.  I was eager to find any job available, and I was eager to learn as many new technologies as possible.  Later in my career I became more discerning and more set in what I wanted to do.  Knowing what you want to do is important if you like your weekends.

It’s OK not to know something.  On a resume, I’d rather bring somebody in for an interview who has some outstanding or attractive skill and is passionate about what they do, than somebody who perfectly (and robotically) fits the checklist of skills and experience.

Here, it's also important to be complete.  List your relevant experience in detail as applicable.  There are certain approaches that you can take here that are not necessarily lying, but stretches of the truth.  The trick here is simultaneously embellishing detail and leaving detail out.  I'm definitely not advocating lying, but certain experiences may give you more insight or a stronger standpoint than others.  The fact that you didn't engage in them every single minute of every single day of your career may not be a very relevant fact.

For example, you may have had a really strong learning experience writing Enterprise Java Beans on short-lived project.  It isn't always necessary to detail that you only worked on the project for 2 weeks; if you feel comfortable with the technology, there is no real need to indicate that you only worked with it for a short time.  There’s no real requirement to put durations of tasks on your resume.

I guess the best advice here is to be honest, just not *too* honest.

Interview Questions: What was your favorite subject in school and why?

What the interviewer is really asking:
What motivates you?  What interests you?  Are you really a geek, or are you just pretending and going to tell me something like 18th century English literature?

How to answer:
For this question, it's much less important which class you say; what's most important is how you justify it.  The interviewer is trying to find out what gets you excited.  Be enthusiastic.  Talk about what you learned.  You can go an extra mile and make it memorable with a quirky story about a project you did for the class.

Whatever you do, don't justify your choice with, "Because it was easy." Surprisingly enough, most employers aren't looking for employees who don't like to work hard.

Interview Question: Tell me about your background.

What the interviewer is really asking:
When people ask this question, generally, they’re not interested in you reading your resume back to them.  They have it in front of them, so either they didn’t read it (a real possibility, especially if they’re very busy), or have forgotten.  This is sometimes used as a stall tactic.  However, it might be that what the interviewer really wants to hear is what YOU think is worth mentioning.

How to answer:
Be prepared to talk about what you've done and what you've worked on.  Don't talk forever, but spend a minute or two on each of the points that you consider important and relevant.  Typically an interviewer will ask for clarification or more information on areas that spark interest.

Personally, nothing drives me crazier than when I ask this question and somebody just reads their resume back to me.  DO NOT read your resume or discuss every single bullet point on it.  Not only is this boring, but it makes you sound like you can't remember what your career has been.  The other thing that drives me nuts on this question is when somebody just says 10 words and that's it.  This is a good opportunity to sound excited about what you’ve done, or highlight your experiences that you think are especially relevant to this interview.

The more enthusiastic about your work you seem, the more likely I’m going to be enthusiastic about hiring you.

The Case for a One Page Resume

If you learn one thing about resumes from this blog, I hope that it’s that they don’t need to be 12 pages long.  Seriously.  I cringe every time I pick up a resume that’s more than 2 pages.  I just don’t even want to read it.  I'm sure that the time you spent 2 hours learning about the differences between ECMAScript and Javascript eight years ago was really important to your career growth, but I'm just too busy to get to the tenth page.

There are two schools of thought on resume length.  One school is to keep it simple and digestible.  The other school is to keep a resume long with as many possible buzzwords and information about every single day you’ve ever worked on every single job in your career and include lots of minute details about things that somebody, somewhere might actually notice and care about.

I’m a big subscriber to the first school of thought here.  When I’m looking at 50 resumes to fill one position, I am looking at them FAST, because I've got lots of responsibilities that don't involve looking at resumes.  I don’t want to read your resume if it’s 5 pages long, even if it does contain the most compelling material since Hemingway.  That doesn’t necessarily mean that I’m not going to read it, but I’m probably going to spend the same amount of time on your 5 pages that I spend on somebody else’s one page.  Think about that for a second.  When you’re writing a resume, do you want somebody to really take some time and look at the strongest pieces of your career and skill set?  Or, are you OK with that person just barely seeing a short glimpse of every minute detail?

If you’re going to write a very long resume, consider your lead.  Think of it like a news story.  If I’m going to read a long, long resume, I’m going to look at the top and rapidly lose interest as I proceed through it.  So make sure you have the most important (and probably most current) information at the top.  That way, even if I do lose interest around page 7, I'll be more likely to read the compelling stuff.

Personally, I always try to keep my resume within one page, no matter how much experience I add.  When I was younger and less experienced, I had a longer resume, but I found more success when I started reducing its length to a single page.  There is a reason that most resumes coming from business school students are only a single page – business schools typically go through extensive efforts to train the students in effective resume writing techniques.

When I read a one page resume, I can see plainly and easily what that person is all about.  Unless you've got so many grand accomplishments that you can't possibly fit it all on a single page in 11 point Arial, keep it short and simple.

Getting a Job

Getting a job is hard.  Getting the one you want is even harder.

Lots of us got into IT for one reason: To make money.  Of course, there’s nothing wrong with that.  We’re geeks, we like toys, toys cost money, money doesn’t grow on trees or magically appear when we show our abs, so here we are.  We need jobs.  So, it’s quite possible that your dream job might just be any one that pays a six-figure salary.

Some of us actually enjoy the practice.  Software development is definitely an interesting career.  It presents lots of opportunities to utilize reasoning and solve unique problems.  Of course, it also means you’ll spend what most people consider an obscene amount of time behind a computer.  If you’re thinking right now, “There’s no such thing as an obscene amount of time to spend behind a computer,” then you’re probably looking at the right field.

Your reasons might be altogether different.  You might actually enjoy a specific line of work in the industry, such as making websites for non-profit organizations, or game development, or creating applications for mobile phones.  All of these are interesting areas that might include motivations other than monetary ones.

Regardless of what you’re looking for, this blog is intended to help you get that job.  It’s meant primarily for programmers and others involved with the development of software, but a lot of the concepts and suggestions can really be applied to any geek position, including support, IT administration, testing... heck, even management.  Ultimately, this blog is meant to help you impress the geeks so that you can get them to hire you.

So, read up, enjoy, and feel free to tell me how big of an idiot I am.