100 Interview Questions for Software Developers
This blog post is inspired by Jurgen Appelo 100 interview questions for Software Developers. I prefer to have a conversation instead of a knowledge test, so my questions do not have any correct answers. They should lead to conversation instead of validating knowledge.
Here we go.
- How do you prefer to version control your code?
- Do you follow any known patterns of version control?
- What does continuous integration mean to you?
- What is your definition of done?
- How do you safely deliver code to production?
- How do you make your production environment reproducible in test and dev?
- How would you start troubleshooting an issue only visible in production?
- Describe the steps involved for you to fix a bug
- What is the importance of git commit messages and how do you format them?
- How do you roll-back a failed deployment to production?
- Production goes down because of a bad deployment. What would make you roll-back and what would make you roll-forward?
- How do you manage assets that should not be committed to source control, like passwords or databases?
- Where do you think code ownership should lie?
- When should refactoring happen?
- What code should be written by solitary programmers, and what code should be pair programmed or mob programmed?
- What does quality mean for you?
- How do you ensure quality in your delivery?
- Who is testing your code?
- What does testability mean to you?
- What quality measures do you consider low hanging fruit?
- Where do you draw the line between enough testing and too much testing?
- Mention what statical code analysis tools you use
- Do you write tests first, after or at the same time as the code?
- What is your opinion on integration testing?
- How do you deal with a test suite with brittle tests that require much maintenance?
- How can you improve quality by communication?
- How do you think that management can enable quality?
- How do you measure quality?
- What are your thoughts on technical debt?
- What is your favorite language and why?
- What do you consider a good framework?
- What is your preferred way to document your code?
- How do you make your code readable to others?
- What do you consider maintainable code?
- What are your most used development tools?
- What is the worst feature of your favourite programming language?
- What is the most common programming error people do?
- How do you typically handle errors in your application?
- Mention something you do to make your application secure.
- What’s your suggestion to improve deployment frequency?
- What’s your suggestion to reduce time from you start working on a feature until its available to users?
- What can we do to prepare for a system to be restored faster, when it goes down?
- How would you propose we reduce number of releases that cause problems in production?
- How do you verify the impact of your feature in production?
- Where do you draw the line between development and operations?
- How do you manage different configuration options for different environments?
- How can you as a coder make your service easier to manage for operations?
- What are the things that you believe should be automated?
- What are the tools you need in order to deliver code to production once per day?
- Do trunk-based development contribute to better software delivery?
- How do we create predictability in our software delivery?
- What’s required for you to feel inspired by your work?
- Which is your favourite cloud provider and why?
- What does cloud native mean to you?
- What is your relationship with Kubernetes?
- What is your thoughts on serverless?
- How do you measure uptime of your services?
- How do you collect telemetry from your services?
- Mention a way to improve availability of your services
- How do you monitor the services you have released?
- What would make you choose on-prem hosting over cloud?
- What is a good way of managing SSL certificates?
- What aspects do we need to consider regarding data protection laws?
Agile Software Development
- What is your opinion on Scrum?
- What is your opinion on user stories?
- What is the most common impediment for you to be able to do your job?
- How do you estimate correctly?
- Which meetings do you consider necessary?
- How do we make sure to maximise customer value?
- What roles do you have in your optimal development team?
- What activities do you think a team should do to improve its delivery?
- The team will not be able to deliver in time. What is your proposed solution?
- What do you expect from a project manager?
- What does it mean to have a good team culture?
- How do you follow up on progress in a project?
- What is your opinion on Microservices?
- What is your opinion on SOLID?
- What is your view on ORM frameworks?
- What does object oriented programming mean to you?
- In what capacity do you use functional programming?
- Where do you draw the line between refactoring and rewrite?
- Where do you draw the line between buying software or building it yourself?
- What is your perspective on “best practices”?
- How do you document your software design?
- What tools do you use to design your software?
- What technological advancement do you consider a fad, and expect to be gone in 5 years?
- How do you think we’ll be writing software in the future?
- What will be the major challenges for our industry moving forward?
- What do you think will happen with Machine Learning and AI?
- What technology would you like to specialise in?
- What technologies would you like to learn to broaden your expertise?
- If you were not a software developer, what would you be doing instead?
- What is, your opinion, the worst mistake done in history of computing?
- What do you think is the most important traits/qualities for a developer to have?
- How do you contribute to a good team culture?
- What is required for you to feel satisfied with your work?
- What can we do to prioritise diversity and promote an inclusive environment?
- How do you learn new skills?
- What does ethical coding mean to you, and how do you write code responsibly?
- Does a software developer have to know how a computer works?
Please don’t ask your candidate all 100 questions :) and make sure that you ask non development related questions as well. Happy hiring!