Job Interviews are like double-edged swords. While it is an opportunity for the prospective employer to get to know you, what most people fail to do is getting to know your employer. Is that company a place you really want to work for? Will you be happy there or will it be an endless battle with management until someday you decide that you have had it and move to yet another Dilbertesque place, to work for yet another pointy-haired boss. Please, do yourself a favour and use the other side of the proverbial sword and take your cut. Ask pertinent questions that will influence your decision whether they are a good employer for you.
However, when its time to for you ask questions, most people can think of nothing too interesting to ask. I have interviewed a few candidates in the past, and I do not recall a single one of them asking a notable question that can influence their decision to work there or not.
So what do you ask? Have you heard of the Joel test? If you haven’t then take your 3 minutes and follow the link. Go on. In fact, Joel writes an excellent blog, go read it and don’t even come back here.
The problem with the Joel Test is that, as Joel himself points out, most companies run at 2-3. (ok, if you haven’t read the Joel Test, it is about a 12-point scoring system that tells you how good a company’s development team is). If you are going to use the Joel Test, and will be picky about companies scoring at least a 10 on the test, let me tell you my friend that you will be looking for a job for a long time, and most likely you will miss out working for some of the most fantastic companies out there. I don’t know about you, but I do not really care if a company doesn’t have a bug database, or they cannot make daily builds. These are things that the company should care about, not me (not yet anyway).
Instead, I prefer to use my “question time” at the interview and ask these 5 questions:
1. How do you measure your developers performance?
2. What level of support is required of your developers?
3. How much/often do your developers go on training / What/when was the last training they attended?
4. What tools do you give your developers to do their job?
5. What are the career advancement opportunities at your company for a Software Developer?
These are things I care about. Let me elaborate.
1. Performance Measurement
Most companies you work at will have some kind of Bonus / Revenue sharing scheme that is directly related to your performance at work. This is something that affects your bottom line, so before putting pen to paper and accept the contract, you will want to know how you are going to be measured. Often enough, this is not on the contract itself.
Imagine starting your employment at a company, and finding out later on that your performance will be measured by the number of lines of code you write, or the number of source control check-ins you commit. Or that your performance will be measured by the number of bugs the software contains (yes some managers do think they can create bug free software by stating it in the developer’s KPI), or by the accuracy of estimates on vague requirements. This is a crazy world, and people do crazy things. Are you prepared to have your KPI set on crazy benchmarks?
Have you heard of that place where software implementations require the developer, dba, sys admins, application support, management, janitors and cleaners to be on site? This is what happens when “You will be required to do support work on an ad-hoc basis” is slapped on your work contract and you think nothing of it. Don’t get me wrong, I am not saying you need to shy away from support, but a functional organisation will have procedures in place so that developers do not get called on the weekend at 4am. These include a tough and thorough test cycle, a proper hand over to applications and system support, and training of helpdesk people to manage issues as they arise.
In order for this to happen, support cost for developers should be expensive. I have heard of phone handset companies where when the developer is to be “available”, it cost the company money – actual money in the bank, not funny “Time-in-Lieu” money. The rate is even higher if you indeed get called, consistent with penalty rates for weekend/out of hours support.
This provides a clear benefit to companies whereby it encourages them to properly release maintainable and supportable software. Often enough, documentation is what gets axed when a project overruns. Without proper documentation, proper support is impossible, and the developer will get called at the proverbial 4am when the disk is full and the application throws SQL Exceptions.
When was the last time you got quality training from work? I’m not talking about gimmicky MS conferences such as Heroes Happen. I’m talking about a real training session with real trainers. Is your new employer committed to the ongoing professional development of its team? Sure a lot of development and learning is on a per-needed basis: I need to do database access, let me read up on Linq2Sql. That is fine. But generally excellent developers will want to know more than just what they work on. The Microsoft Factory spits technologies at a dizzying rate: Linq2Sql, EF, WCF, WPF, WWF, WTF, etc. While you may not necessarily want intimate knowledge of the subject matter, excellent developers will at least want some ideas about it, and preferably see a seasoned developer use it a little bit to appreciate all its capabilities. Enter training sessions. Training with these real-world citizens with the likes of Juval Lowy, Dino Espositos, etc gives you that kind of exposure and an opportunity to pick the finest brains.
What do you do when you have a performance problem in your application? Quite a few developers I have worked with attempt to guess where the bottleneck is, and start optimising. Did you know there are tools out there that will allow you to measure (profile) your application to your heart’s content – memory usage, execution times, etc. What are the odds of your company buying these tools should you request for it? How quickly can they purchase it? On numerous occasions I have worked with developers who will install trial software in order to fix real production issues.
Does your 15-year old niece have a faster computer than your work PC? Does it take forever to compile code? In my previous job, the latest computers were always given to the sales team because “they needed the application to run fast when they did a demo”. Opening the solution in Visual Studio took me 15 minutes every morning. Compiling? I used to make my cup of tea when code was compiling.
We are in 2010 now. Does your company allow you to install and run the beta version of Visual Studio 2010 on your machine or on a virtual machine? Or do you have to wait till 2011 “till the dust settles”? Bold companies out there have awesome software built and released to production with pre-release versions of various frameworks (go-live licence). Do you want to work in a company where the dust has settled and everyone else in the industry is working on the next big thing?
5. Career Advancements
What are the career prospects available to developers at the company you are interviewing? Are you expected that once you reach a certain level of proficiency, to take a role in Management in order to move to the next pay bracket? Joel Spolsky calls this “promoting someone to their level of incompetence” and I could not agree more with him when he says that the best programmers do not necessarily make the best managers.
This is not, by any means, a complete list of questions of what you should ask at an interview. Go ahead, ask about flexible working hours and work life balance or anything else that is important to you. This list above isn’t a list of what you absolutely must ask your interviewer. Rather it is a list of things that over time I found to be pertinent to me – these are the things I care about. I would happily work for less money if I could get a fast pc, dual monitors, proper training and not getting woken up at 4am because the disk is full. I would be happy doing what I like doing best: programming. Are you happy to go to work everyday? Are you having fun? Are you motivated? Do you get to play with the latest technology? If you are, ignore everything I wrote here and do not change your job because you are lucky, my friend.