I've had a lot of jobs, and, over the years, I've been refining my list of questions to do my best to ensure that the company I'm interviewing at is a good fit for me. I just went through the job search again, and asking all of these questions helped me determine that Test Double was the right place for me. I cannot stress enough the importance of asking questions in the interview. When I was first out of college, it sounded like I needed to ask questions to impress the interviewers. The truth is that interviewing is a two-way street, and asking questions is how you can find out if the company is the right fit for you. Not asking the right questions is how I've ended up at a lot of places that just weren't right for me in the long term.
I know this is a lot, but most companies have 6+ hours of interviews before an offer. Spread them out among your interviewers. I usually ask 6-10 questions per person. Sometimes I ask the same question multiple times to get different people's viewpoints. You should feel free to either use this list verbatim or use only the questions that are relevant to you and your needs. I also listed additional resources at the bottom. I also keep this list up-to-date on Github.
How does the engineering culture differ from the overall company culture?
Can you give me an example of a mistake you've made here, and how it was handled?
How often do you pair?
When something goes wrong, how do you handle it? Do devs get shamed for breaking the build?
How are disagreements solved - both technical disagreements and other kinds?
What happens when personalities clash?
How flexible are work hours?
What tools do you use for remote collaboration?
How do they work together and ensure good communication and collaboration?
Can you tell me about what I can expect from the interview process?
How many hours do people work in an average week? In your busiest weeks?
How often are there emergencies or times when people have to work extra hours?
Who sets deadlines and what happens when people fail to meet them?
Can you walk me through your development process, from a ticket or task to code on production?
What checks and balances are in place to make sure people don't make big mistakes or repeat mistakes
What is your build process like?
How does this team plan projects and create deadline estimates?
What is the median age that an issue will be open for?
Who is responsible for doing deployment? How often do you deploy?
Is there a written roadmap all developers can see? How far into the future does it extend? How closely is it followed?
How often do you have meetings? Are there any scheduled/standing meetings?
What’s your approach to technical debt?
Describe your deployment process – how do you find bugs in your team’s code?
Do you have a QA team?
Do you have style guides?
How does engineering work get assigned?
How are technical decisions made and communicated?
Would I need to be on call? How often? What is the SLA? How often do people tend to be paged? How often is it a real emergency?
What does your stack look like? What languages/tools/etc. do you use?
What sort of growth is available for senior engineers?
How does your company support the growth of junior engineers?
- Technical capabilities aside, what soft skills would make someone successful in this role?
Are there times of the month, quarter, or year when the team is most busy?
Tell me a little bit about your team onboarding process.
How is employee performance evaluated?
Is there a budget for employee education/training/development/etc.?
Is there support for conference attendance?
What accomplishment are you most proud of since joining the company?
What size is the team?
How many total development teams?
How much vacation do people get? Sick leave? Are they combined or separate?
Do people check in when they’re on vacation? How often?