If you have an interview scheduled with me, here's what I'm going to ask you.

This is a tongue-in-cheek guide to interviewing with anyone. There'll be some fun poked, some snark and some genuine advice. I'll leave it to you to decide which is which :)

So... Hi! Firstly, if you've arrived here because you're doing your homework, good for you. Have a point. Have two, even. I'm feeling generous today.

I do a lot of interviews. Depressingly, even with all the advice available to them, people still fall down on the same things time after time after time. If you're diligent enough to be doing your homework by reading this, you should be fine :) If you're reading this after your interview with a sinking feeling in your stomach... well... this homework was probably due yesterday. Sorry.

Be on time.

If we're interviewing in person, be on time. I'll be there. If we're interviewing via Skype, I will add you as a contact at precisely our scheduled time. Expect this. Be online. Failing at time zone calculations for any position in the software industry does not bode well.

If you're horrified that I even have to say this then have another point :)

Ask me questions.

With respect to consulting, I want you to treat me as you'd treat a client. The questions you ask in advance and during the interview will help both of us. It will help you understand if you're answering my questions well, and it will help me understand that you know what questions to ask.

Ask me about stuff you're curious about. Ask me about pretty much anything. Just show that you can hold a conversation and elicit useful knowledge about a topic at the same time.

Ask me about anything that helps you decide whether we're a good cultural fit. I'll be asking you similar questions and fair's fair.

I'm hiring colleagues, not minions. I want to like you.

I'll be hoping that you'd like to work with me. Your mission is to make me want to work with you. I'm looking for people who are interesting, engaging and fun to hang out with. I want people on my teams who other people will want to work with. We'll probably be spending a fair bit of time together and I'd like that time to be enjoyable for all parties.

I'm going to ask you about what you're strongest in.

There's no value in finding weaknesses in things you've already told me you're not great at. That's fine. If you say you hate Windows Forms then why would I ask esoteric questions about it? That serves neither of us well. (Besides, I hate WinForms, too.) I'm going to play to your strengths. If your strengths are strong, good for you. If your strengths are weak then I don't need to dig much further.

If you tell me you rate yourself as a thought leader in a space, I expect you to be able to teach it to me from first principles because that's what your clients will be paying four figures per day for. If you tell me, for instance, that you're a thought leader on an open-source framework, I'll assume you're a committer to it and ask you what you last pushed.

If you're good at something, say so. It's your opportunity to show knowledge and enthusiasm. If you're not good at something, say so and we'll move on. That's perfectly okay and I won't hold it against you. Don't bluff. I'll call.

I'm going to ask about what you're interested in, not what I'm interested in.

I want you to get enthusiastic about something. Teach me something. Make me enthusiastic about/interested in something. Creating enthusiasm and engagement in other people is a life skill, not just a consulting one. I'm hiring for that skill.

I will expect you to know your fundamentals.

In the .NET space, this means that I'm going to ask you about the CLR, stack, heap, memory allocation, garbage collection, generics and all the other stuff that you use day in and day out.

In the agile space I'm going to ask you for opinions about Scrum, Kanban, lean and so on. You're going to need to discuss these, not just parrot the definition of a user story.

We'll cover lots of other topics but not knowing your fundamentals is a cardinal sin. It's akin to stealing from your client and it's... not a behaviour I'd encourage. They're called fundamentals for a reason :)

If you'll be paid to write code then, yes, I will expect you to write code.

You're probably interviewing for some kind of software engineering position. Be prepared to demonstrate that you can walk the walk.

Final notes.

People generally take this kind of advice in one of two ways:

  1. They're offended because some of it applies to them.
  2. They're horrified that it would apply to anybody.

If you're the latter then we'll probably have war stories to share, heaps to chat about and I'll be looking forward to meeting you. If you're the former then even if you're offended by what I've written I hope it's constructive in one way or another for you. Have fun storming the castle!