Software Developer Skills Interview
Author:
James LangilleA Software Developer interview assessing key skills required for success. We've also included a few motivation and values questions to help you make the best decisions about your candidates.
Focus area:
Question
1
Tell me about a time you struggled to modify some pre-existing code that was being used in a production environment. What challenge(s) did you face and what would you do to avoid these challenges when your code is modified 10 years from today?
What does this question reveal?
Candidate has the ability to write maintainable code
Explore tips
- Code should be written for the reader more than the writer of the code
- Exhibits understanding of "Clean Code"
- Comments can easily mislead or become out of sync of the code it documents
- Coding to interfaces increases testability
- Manual testing ensures code works when written, test cases ensure code works into the future
Question
2
Tell me about a time when a programming language feature was over-used. What was the feature, and when do you think it would be best applied?
What does this question reveal?
Candidate has the ability to select the correct programming tool for the job
Explore tips
- Should focus on a feature of the candidate's language of choice
- Should not include general best practice tools like unit testing
- Explains disadvantages of using the feature all the time
- Explains disadvantages of never using the feature
- Recognizes circumstances the feature is useful vs. harmful
Question
3
Imagine a scenario where an algorithm with a slower asymptotic runtime than another known solution is implemented. Why might a slower algorithm be preferable in some cases?
What does this question reveal?
Candidate has the ability to recognize and act on algorithmic trade-offs
Explore tips
- Describes resources could be at play when an algorithm runs
- Explains how speed can be traded for memory
- References minimizing use of some specific resource (e.g. API calls)
- Discusses how they would make a decision about such a tradeoff
- Mentions that a larger asymptotic runtime can be faster if the problem size is bounded
Question
4
Imagine you are implementing a set where you can add elements and check their membership (if they are currently in the set or not). If you were to delegate to a linked list or a hash table, which would you choose and why?
What does this question reveal?
Candidate has the ability to select efficient solutions, and common algorithmic analysis
Explore tips
- Linked list is O(1) add, O(n) membership vs. Hash table is O(1) (amortized) add, O(1) (amortized) membership
- Explains what 'amortized' means
- Explains the worst-case runtimes of the hash table operations
- Highlights the worst-case hash table operations be acceptable
- Discusses difference between an 'amortized' runtime and an 'expected' one?
Question
5
Briefly tell me about a time when you received or provided particularly poor feedback during code review for a piece of code that did require improvement. Why was the feedback unhelpful?
What does this question reveal?
Candidate has the ability to recognize poor and great code review feedback
Explore tips
- Mentions aspects of the feedback made it difficult to action
- Discusses how the feedback could have been improved
- References specific examples of miscommunication or misunderstandings
- Describes how the situation was resolved
- Shares how this experience guides them in providing others better feedback
Question
6
Describe what readable code is to you. What aspects do you find the most important when writing code to make it readable to others?
What does this question reveal?
Candidate recognizes importance of clean code
Explore tips
- Mentions topics like cognitive complexity, naming of functions, formatting, etc.
- Understands that code is more often read not written
- Describes and exhibits understanding of 'Clean Code'
- Explains problems with reading convoluted code
- Discusses business value do gained by having clean code