A lot of these are outright stolen from Edward O'Campo-Gooding's list of questions. I really like his list.
I'm having some trouble paring this down to a manageable list of questions -- I realistically want to know all of these things before starting to work at a company, but it's a lot to ask all at once. My current game plan is to pick 6 before an interview and ask those.
I'd love comments and suggestions about any of these.
I've found questions like "do you have smart people? Can I learn a lot at your company?" to be basically totally useless -- everybody will say "yeah, definitely!" and it's hard to learn anything from them. So I'm trying to make all of these questions pretty concrete -- if a team doesn't have an issue tracker, they don't have an issue tracker.
I'm also mostly not asking about principles, but the way things are -- not "do you think code review is important?", but "Does all code get reviewed?".
Some things I haven't found a good way to ask about
- Who decides what features get built?
- Who are the people at your company with a lot of depth of experience? Will I be able to talk to them?
- Do you use version control? (if not, the interview should be over =))
- Do you test your code?
- How do you make sure that all code is understood by more than one person?
- Do you do code review? Does all code get reviewed?
- Do you have an issue tracker?
- Describe your deployment process -- how do you find bugs in your team's code? What recourse do you have when you find a serious bug in production code?
- Who is responsible for doing deployment? How often do you deploy?
- How do you think about code correctness?
- When something goes wrong, how do you handle it? Do devs get shamed for breaking the build?
- How/when do developers talk to non-developers? Is it easy to talk to the people who are will be using your product?
- Can I see some code the team I'm interviewing for has written? (from an open-source project you work on, for example)
- How much vacation do people get? If there's "unlimited" vacation, how much vacation do people normally take?
- Is it possible to take sabbaticals or unpaid vacation?
- How many women work for you? What's your process for making sure you have diversity in other ways?
- How many hours do people work in an average week? In your busiest weeks?
- What time do people normally leave work?
- Would I need to be on call? How often?
- How often are there emergencies or times when people have to work extra hours?
- Does your company support continuing education? (will they pay for employees to do a master's degree?)
- What is your turnover rate like? How many devs were hired last year and how many left?
- Do people work on the weekend?
As many of these as possible are "statistical" questions -- a company may say that they "don't have hours", but if everyone leaves at 9pm that's not a good sign.
- Do you contribute to open source projects? Which projects? Which teams work on open source?
- Do your employees speak at conferences about your work?
- How do you determine if someone is a poor fit for your company?
- How are your teams structured? What is the management structure like?
- How often do you pair? What's pairing like? How often do inexperienced people work directly with experienced people?
- What's the onboarding process like?
- Is there any sort of institutionalized way of dealing with plateauing or preventing burnout? (Expecting to hear about rotation of duties or location, sabbaticals.)
- Is it easy to move to other divisions or offices?
- How does internal communication work? This one is super important and I need to remember to ask it more.
- Are there catered suppers? (possibly bad)
- How many hours a week does senior management work? Do they put in 80-hour weeks?
- Are you profitable?
- if not, how does this affect what you can do?
- How do you make money? (I often explain to my parents or non-technical friends companies' business models to test if they really make sense.)
- How much are you planning to hire in the next year?
- Are company financials, minus salaries, transparent throughout the company?
- How is the office space physically organized?
Interviewing is hard! Ultimately I really just want to know
- do people treat each other well?
- do you work reasonable hours?
- do you care about the work that you do, and keep trying to do it better?
- do you only hire excellent human beings?
How does engineering work get assigned? How are technical decisions made and communicated? What's your approach to technical debt? How do you balance support work and feature development? Can you give me an example of someone who's been in a technical role at your company for a long time, and how their responsibilities and role have changed? Do you have a dedicated designer? QA? Technical writer? Dev manager?