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:
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.
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.
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.
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.
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.
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.)
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:
- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- 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.