Tuesday, September 12, 2006

Interview Questions for Companies

Companies interview their prospective employees, and they always ask at the end, "Do you have any questions for me?" The interview tips lists I've seen recommend that you never say, "Nope, no questions." I agree, but I also don't usually write down my questions beforehand, either. I end up asking a couple good questions, but I'd prefer to develop some better ones.

This being the third summer I've worked in software development, I feel I have a better grasp on what things are important to me in making a job enjoyable and worth agreeing to. I've been taking notes for the last half of the summer; here they are, in no particular order:

  1. How large are your teams? Teams of one ain't gonna happen these days, and I think I prefer having teammates anyway. But if the teams are dozens or more people big, then I want to take that into consideration. You get little factions breaking off once you hit a certain number of people.

  2. How deep is the hierarchy? I find that I like knowing most of the people above me. Microsoft was huge, Apple's only big, but I liked Vizolution's flat tree best. I felt more connected and I cared more about my work because I could see that it would actually impact the company. Motivation is important.

  3. What kind of mentoring do you offer new-hires, or in what ways do you help them learn to effectively use your current tools and processes? Note that I explicitly decided against the question, "Do you offer mentoring or advice?" If they say no, that they just like people to dive right in, then I don't think I want to work for them. That may work for small projects or new projects, but if they have an established formula, I want to know how they expect me to work within it. I don't need hand-holding, but basic guidance is a good thing.

  4. What's an example of a project, tool, or process that employees complained about, and how did you improve the situation? Here at Apple, my number one complaint is that they use a bunch of tools that are not documented and do not work quite right. "Oh, if you save this file in this program, then you have to go in and manually edit out the things it adds erroneously." Great time-saving tool, guys. I want to see management trying to improve their work environment, not shrug and say it's good enough. If it doesn't cost an unreasonable amount to fix, then the expense should pay for itself in increase productivity and morale.

  5. Does the team socialize outside of work? At Vizolutions we hung out for lunch, went rock climbing at Saul's house, or arranged to see a movie together. I really enjoyed the people, and thus the work, more because I could relate to them as more than "that guy in the cubicle across the way." I miss that kind of connection at Microsoft and Apple.

  6. Is overtime expected regularly? What about at release time? How is overtime recognized or compensated? I definitely want to watch my "life-work balance," as they say. I want to have a life outside of work. So if they're expecting 60-hour weeeks all the time, I don't want to be there. (This probably means the video game industry's out for me, but I can live with that.)

  7. Why is this position open? Is it a brand new position? Did the old guy quit in disgruntlement? (Perfectly good word, that.) Did he get hired away by Google? Or is there some good reason that won't make me think twice about a job offer? (Question taken from Conducting the Programmer Job Interview.)

Also, for the next company I interview with, I'll be evaluating them based on The Joel Test. These items are more nitty-gritty, but they're important too:

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?

If I were to judge the likelihood of a company with a 12/12 existing based on my past work experience, I'd laugh. But Joel Spolsky has a job board up now, and most of the companies posting their claim to meet 11 or 12 of the 12 items on Joel's list. Either they're all shameless liars, or there is hope of getting a good programming job. :)

Update, October 6th: Lifehack.org has a ten-point list of their own, if you're looking for more questions in a similar vein.



Shelley: the Dread Pirate Rodgers said...

I vote for the shameless liar scenario. Their mothers would be ashamed of them!

Shelley: the Dread Pirate Rodgers said...

I hate it when Blogger displays me as a Fake name. I am a perfectly real pirate and demand to be treated as such!



Shane said...

I dunno, I think where I work (and you know where that is) my group meets around 10-11 of those requirements (and the one's I'm not sure about don't mean we don't; it just means I don't know).

Of course, some are vague/easily debatable. What exactly is "the best tools money can buy?"

Arthaey Angosii said...

Fake name, aka The Dread Pirate Rodgers said: I hate it when Blogger displays me as a Fake name.

Then maybe pirates should learn that Blogger is not intimidated by a heart "Arrrr!" and should log in instead. :)

Shane said: Of course, some are vague/easily debatable. What exactly is "the best tools money can buy"?

Agreed that some of Joel's criteria are subjective -- how quiet is "quiet," what's "best" -- but in his post he does describe what he's thinking of. "Best" to him means: at least computers fast enough to compile programmer's daily code in less than a second or two; dual monitors if they do GUI code; real graphics editors if they ever have to touch button images or icons; enough quota space to not make programmers need to clean out their directory once a week.

So at least he's not just throwing out ideals, but has actually put some thought into what his criteria would mean in concrete terms. Of course, you could decide personally that you don't care about using MS Paint to edit icons but you really couldn't stand it if you weren't issued a laptop along with your desktop. YMMV, but his list is an excellent starting point