I do believe that a job interview is a two way process i.e. you, as an interviewee, should be comfortable to ask a future employer all questions you’re concerned about.
While preparing for applying for software engineer position I decided to list questions that I would like to ask to help understand if a company is a right place for me.
As a starting point I took the Joel test and this article(in Russian), I revised and updated them, and added questions from my personal experience.
The result is a comprehensive list that covers different areas of being a software engineer in a company, such as technology stack, development process, education and growth opportunities.
I used the list as a reference during my interview series with Expedia. I didn’t ask all the questions to a single interviewer but I picked some based on the interviewer’s role.
- Programming Languages & Frameworks
- How coarse grained is your project? Microservices/monolith architecture
- Build tools (build time/compile time)
- Databases (SQL and NoSql)
- Source control systems
- IDEs, other common tools
- Streams/Message queues/Distributed caches/RPCs
- How soon code submitted to the repository will be deployed to the production? CI/CD? Containers? Configuration management tools?
- Under what load does your application operate?
- What are service level agreements? APIs? Inputs and outputs of your application?
- What new technologies/frameworks/tools do you use? What was the last one integrated into the project? How a process of adopting a new framework looks like (Legal requirements, security requirements, budget, etc.)
- What tools do you use to profile your software?
- Describe development process. What software development methodology do you use, e.g. Agile, Scrum, Kanban? Code review practices? How was it improved in the last year? What would you like to improve in your team
- How many people are in your team? What are the roles in your team? SDEs/Seniors/Testers/QA/DevOps/Analytics? Describe a typical day of a software engineer? Non-typical day?
- What are manager’s responsibilities in a team? Do you have a team leader? Tech leaders? Technical project managers? Engineering manager? What are the differences between those positions?
- How do you understand if a project/sprint has successfully completed or failed? What performance metrics do you use?
- Who supports project documentation? How often do they update it?
- How do you estimate tasks? Who does the estimation? How do you measure tasks? Who is responsible for big changes?
- How do you test your code: concurrency/async/database/GUI? Performance testing? A/B testing? Hallway testing? Regression testing? Benchmark testing? Test coverage statistics.
- Do you have a test environment? Integration environment? Is it possible to verify application locally?
- Which bug tracker do you use? Do you use any exceptions trackers?
- Who and how triages new issues? Describe a case when a priority could be reconsidered? How many open high priority bugs do you have?
- Do you run a bug bash?
- Do you have a time to fix low priority bugs or nitpicky TODOs?
- Who is responsible for live site issues? What if something bad happens in the middle of the night? Do you have alarms? What tools do you use to monitor the application health and usage statistics?
- Do you have on-call rotations? How long is one rotation? Is it 24/7?
- What are responsibilities of on-call employees? If an employee is on-call does it mean that she suspends her current work till the end of her rotation?
- How often does on-call employee have to monitor the status of the system and report about that?
Education and improvement of professional skills
- Does your company provide trainings for engineers (lectures, workshops, etc.)? How often? What was the most recent about? Who conducted it?
- Does your company pay for courses/trainings/workshops/conferences outside of the company? Any terms or requirements?
- Does your company encourage attending conferences/meetups as a speaker?
- How many conferences did you participate in? What did you like about it and what didn’t?
- Does the company provide sponsorship for studying in a university?
- Does the company have mentoring policy?
- Which professional blogs/feeds do you follow? How does it help you at work? Can you remember the last interesting post?
- How many professional books have you read last year? What is your favorite tech book? Why?
- How do you manage your personal time? How do you manage your motivation? GTD? Time management?
- What would a colleague/manager/company do if one employee causes a public offense to another?
- What should I do if I feel reasonably uncomfortable while communicating with a teammate? With a manager?
- How flexible is a work schedule? Is it possible to work on Sunday instead of Friday from time to time? How is it looked upon by management and colleagues?
- Does anyone in the team work on weekends? Willingly/forcibly? Is overtime paid?
- Do you have WFH days?
- Do engineers go on business trips? How often? Where?
Career growth & opportunities
- What are expectations for the position I am considered for?
- What are the perspectives for career development in terms of both skills and position? Are there bonuses? What are they awarded for and how frequent are they?
- Does your company have a job rotation program?
- Does your company run hackathons? Does your company reserve time for experiments (new library, new programming language, etc.)? Does your company have open source projects?
Company public image
- Could you comment the company’s rating on Glassdoor (X stars out of 5)? Does your company track its public image? What steps are taken to address negative reviews?
Personal experience in the company
- What was the most interesting and the most challenging project?
- What have you learnt since you joined the company?
- What do you enjoy most about working here?