How to succeed at a programming job interview
Since I started contracting three years ago, I have probably attended more job interviews than in all my previous years combined. My success ratio is finally high enough that I now decline more job offers than I accept, and for that I have to thank my newfound ability to see the interview process for the farce that it really is, and the tricks I have learned to turn this horribly broken system to my advantage. If you want the short version, here it is: tell them what they want to hear. It may sound obvious, but in my opinion, the biggest skill most interviewees lack is the ability to accurately interpret the interviewer’s speech, mannerisms and body language in such a way that they can frame their answers to suit the psychology and expectations of that particular individual. I’m not suggesting that you transform yourself into a spineless yes-man - that may well have the exact opposite of the desired effect - but just try to bare something in mind; every candidate that makes it to the interview stage is probably 100% capable of doing the job. The successful one will be the guy or gal that the interviewer thinks will slide into any existing team, business practices or strategy with the absolute minimum of friction. In other words, you will not help yourself by rocking the boat at this stage.
Fortunately, most interviewers you are likely to encounter show at least some of the traits I have stereotyped below.
The ‘Techie’
This is the only role that I have personally played on an interview panel, so I would like to think that it is the one that I understand the most. As the name suggests, the techie will be primarily interested in your technical abilities (or ‘hard skills’ as some of the more tedious business people call them). The techie may or may not have any actual faith or interest in the company’s product or business model, but you can normally tell quite quickly whether or not this is the case. Unless you are technically incompetent this will probably be the easiest part of the interview, but, as ludicrous as it sounds, the techie will probably be the member of the panel who gets the least say in the final decision. This is largely because their main role is to short list candidates before the actual interview stage, so, if you made it this far, you should thank the techie, because it means he or she liked your CV. Congrats.
The ‘Enterprise Architect’
This is a something of a techie-variant, but can be far more dangerous. They are often former programmers who found that they are actually more interested in the business side of things, and so they latch on to anything that they think advances software engineering as a craft in its own right. In other words, they view following whatever development methodologies or ‘best practices’ happen to be fashionable at the time as an end in and of itself. These people are the main reason why most large IT projects come in late and over budget, and proceed to under-perform from the day they are deployed to the day they are replaced. The problem is that senior management types tend to like these people because they speak in terms that they understand. That means you NEED the Enterprise Architect (’EA’) on your side.
Remember, the one thing the EA hates more than anything else is a geek. They see themselves as ‘professionals’, and don’t want to be associated with scruffy haired Star Trek fans. You will also need to remember not to make too much noise about your l33t c0d1ng 5kills - the EA’s own coding abilities are probably out of date, and rather lacking. Essentially, they are looking for someone who shares their philosophy that things like flipcharts full of Use Case diagrams and properly following the pair programming paradigm are more important than having the first clue about what you are actually doing.
The Middle Manager
The middle manager probably doesn’t know much about software development, and will probably ask generic questions designed to probe your ’soft skills’ (groan…). This is where you need pithy answers for questions like ‘could you tell be a bit about your strengths and weaknesses?’, ‘how well do you work with others’, or ‘how would your friends describe you?’. For the love of God, don’t tell them you’re only weakness is that you’re a perfectionist, that working with others is a hindrance, and that you don’t have any friends. In my opinion, this is one part of the interview where it is absolutely 100% acceptable to be, shall we say, less than honest. Your answers are essentially unverifiable anyway, and nobody really cares what you actually say. This is largely a box ticking exercise, and in any case, just seeing that you are socially savvy enough to tell them what they want to hear tells them almost everything they need to know.
The ‘Entrepreneur’
Like the Middle Manager, the Entrepreneur probably doesn’t have any software development experience of his own. What he does have is an idea for a product, a DVD box set of ‘The Apprentice’, and some sample interview questions he downloaded from the internet. I actually have a special place in my heart for this type of employer, since it was while being interviewed by one that I first developed the level of cynicism displayed in this article.
You see, the one thing you need to know about the entrepreneur is that when it comes to the scale and significance of his business idea, he is absolutely 100% deluded. The first time I met one of these people, the job advertisement made no mention of what specific technologies the product would be using - they just asked for a ‘web developer’. After describing the details of this supposed killer app, the interviewer said something along the lines of: “and since this is such a major project…” (it wasn’t) “…I think we should go with enterprise strength technologies, like J2EE, what do you think?”. And that’s when it hit me. Instead of answering “no way, I could do it in half the time in PHP and it would work just as well”, I realised that the way to this guy’s chequebook was through his ego, so I chirped back something like “Absolutely. The scalability requirements of something like this go far beyond what competing lower end technologies like PHP could provide”. I felt dirty, but it worked.
As an aside, I find it remarkable that supposedly business savvy people are often more tempted by marketing fluff than their technically-minded underlings. The unwritten subtext in the promotional material put out by people like Sun is something along the lines of “Open source technologies like PHP or RoR are OK for small scale web stuff, but Java is meant for serious business applications, and you are building a serious business application, aren’t you?“.
One other thing to bare in mind when dealing with the entrepreneur is that they will be far more impressed by an ‘Enterprise Architect’ than a run-of-the mill developer. That means you need to throw in buzzwords like Agile Methods, XP, RUP, and so on. He won’t have a clue what you’re talking about, but will pretend he does, and will make a point of looking them all up later, and like what he sees.
The Web 2.0 Wannabe
This is really just a special subclass of the ‘Entrepeneur’, but their business model is usually so laughable that they deserve their own mention. Essentially, the Web 2.0 Wannabe sees news reports about college kids raking in hundreds of millions off the back of one web site, and decides he wants a piece of that pie. What he fails to realise, though, is that the vast majority of successful Web 2.0 sites started out as either personal projects, or as a handful of developers collaborating on something in their spare time. In other words, they didn’t hire in a team of highly paid contractors to do the work for them - at least not at first - but remember that the wannabe is just as deluded as any other entrepreneur, so he thinks that his idea is bigger, better and more innovative than any that may have come before it. Using revenue from click advertising alone, it would often take 10 years to make back the money these people spend on the initial development, which means their one hope is that maybe, just maybe, they could get bought out. But I wouldn’t advise them to hold their breath.
If all else fails…
Just be honest. Don’t spend so long trying to psychoanalyse the interviewer that your answers come across as weasily or evasive. At some point you are always going to have to commit yourself to a firm stance on something, and if the interviewer doesn’t agree, well, too bad. The truth is that you also have to ask yourself whether you really want to work with people you know are fundamentally wrong anyway. If you are first starting out, you probably think that you can learn to live with anything so long as the pay is good, but, trust me, it grates a little more on you with each passing day. Just remember, there will always be other job interviews - that knowledge alone often gives people a sense of confidence that is lacking in those who show up thinking that the next 30 minutes are going to decide the course of their whole life. Convincing the interviewer that you would be doing them a favour by taking the job is never a bad thing.
February 1st, 2008 at 10:16 pm
This is brilliant. I met all of them while doing interviews. My favourite is the Middle Manager: so easy to convince.
February 1st, 2008 at 10:49 pm
Excellent post!!
I especially appreciate the part toward the end where you say: “If you are first starting out, you probably think that you can learn to live with anything so long as the pay is good, but, trust me, it grates a little more on you with each passing day.”
If you have any sort of conscience or sensitivity, the double talk and politics that surrounds you in the average office will wear you down. There are things that go in in an average workplace that actively penalize you from producing good quality, well documented code.
February 2nd, 2008 at 5:20 pm
How to succeed at a programming job interview | Deliggit.com…
lucyfranks.com
Learn to handle the different breeds of interviewer: The \’Techie\’, the \’Enterpr…