Good hires are key to building strong teams. This is especially true in software development where change happens fast and you need people who can adapt quickly and still do great work. Interviewing candidates for software development or software engineering roles can be a unique experience. You’re often looking for a very specific set of practical skills and need to see how a candidate approaches challenges or tasks. This means that interviews can often take the form of a practical exam with candidates often going through more than one interview/exam phase before ultimately being hired (or passed over).
The reasoning is simple: a candidate can have all the right credentials and certifications on paper but struggle to apply all that learning to real world scenarios. Likewise, a candidate can look mediocre on paper, but when you see them in action, you realize that their ability to adapt, learn and strategize through a challenge is truly an asset.
When it comes to conducting these types of interviews, the type of project or challenge you give to candidates will ultimately depend on the type of work required for the role. For example, you might give a candidate a version of your app that features a typical bug and have them identify the bug and design a fix. Or, you might present a candidate with a feature request from a client and have the candidate create a working prototype. You will probably even want to present several different scenarios to really test their skills. For other interesting examples of tests for interviewees, check out this article from DZone.
Of course, entry level software engineer interview questions, senior developer interview questions and everything in between will vary as well, so it’s best to design your interview tests around both the work type and the role level.
But, once you’ve seen a candidate in action and determined that their skill set matches the job requirements, how do you determine if they are ultimately the right choice to join your team?
The Soft Skills You Should Look for in a Software Developer
Strong teams are not just made up of people who know their stuff. To have a really great team — one that collaborates effectively, solves problems, meets objectives and stays motivated — a team must also be made up of developers and/or engineers who are:
- Fastidious in their work
- Open to learning
- Accepting of change
- Able to self-motivate and self-organize
- Able to lead without being the leader
- Good communicators.
In a pool of experienced and knowledgeable developers, it’s the ones with these soft skills that are the really valuable candidates.
Before we get into question examples, let’s explore each of these skills:
Fastidious in their work
No matter how well someone knows their stuff, if they have a tendency to rush or otherwise don’t pay attention to details, they likely aren’t going to produce good, clean code.
Open to learning
Change happens fast in the software industry. People who are genuinely open to learning from people at all levels are the ones who are going to consistently improve and grow within your organization. Even an entry level hire may have something to teach, but only if others are open to learning.
Accepting of change
The pace of change varies from organization to organization and project to project. What’s consistent is change itself. You want someone who embraces that change, not someone who resents or avoids it.
Able to self-motivate and self-organize
With multiple tasks in the pipeline, you need people who stay on top of their queue and are able to effectively organize their time and keep themselves motivated. You also want them to be able to recognize if their queue is overloaded and speak up and offer solutions before a situation becomes critical.
Able to lead without being the leader
This is a tricky one and what you may actually need is people who are open to learning this skill, as long as you have the resources to teach it. You want people who can lead themselves, who can lead by example, who can speak up when necessary, who can step in to help others, who voice their ideas and who encourage input from others. Essentially, you want people who can bring strong leadership skills to their role and put those skills to use, while still respecting official team leadership.
Good communicators
In software development, team members often communicate via electronic means — often some form of instant messaging as well as directly within whatever software is used to manage projects. On the other hand, face-to-face communication is also a key element of solid software development. You want people who are able to communicate with clarity via electronic means and who are able to recognize when face-to-face communication is the better route.
Interview Questions to Ask a Software Developer
Just what kind of software development or engineer interview questions will help you uncover these skills? Here are a few ideas that are ideal for in-person interviews, but some of which may also work as software engineer phone interview questions:
1. What’s wrong with this code?
This question is about far more than just seeing if they can find the problem. It’s more about attitude and communication. Do they approach the challenge with enthusiasm? Are they able to clearly and succinctly articulate the problem? What’s their attitude when answering? To take it up a notch, you might even try this mock code review technique from Lever Engineering aimed at simultaneously testing for practical and behavioural skills.
2. What is the greatest challenge you’ve faced on the job? How would you do things differently today?
This should be asked in 2 parts. The first is a very common interview question. A good candidate will have anticipated it and be prepared with a response. Once they’ve answered, pose the second question. It’s less common and they likely won’t have a prepared response, so it will be interesting to see how they react when their confidence is suddenly upended. In addition to noting their reaction, their response will also help you gauge if they are open to learning from past experiences and approach the idea of their own improvement with confidence and openness, rather than arrogance or hesitation.
3. If you could teach a course on something, what would it be?
This question will show you what gets them excited (a great thing to know in terms of employee engagement if you do go on to hire the person) and, more importantly, if they get excited by the idea of teaching something.
4. What’s a lesson you’ve learned from making a mistake on the job?
Remember that for junior software developer interview questions, answers may be limited to their education or internships, so you may also ask the question as, “what’s a lesson you learned from a bad grade or failed project?”
Again, you’re looking for an openness to learn as well as an openness to admitting mistakes. People generally want to put their best foot forward in interviews, so they likely will only bring up very minor mistakes or that time they got a 79% on a project instead of their usual 90%. Don’t focus on the lesson itself. Instead, focus on their attitude towards it. Do they embrace the learning opportunity or focus on the failure? Do they accept accountability or deflect blame?
5. What is the software development process?
You may think this question is solely for interns or entry level roles but asking even senior developers what the software development process is can give you insight into their attention to detail. It’s something every developer should know, so some may be tempted to rush through it. If they do — even if they rush and get the question right — that’s a potential red flag that they’re prone to rushing when overconfident. On the other hand, if they take a pause and answer clearly, that’s a sign of a conscientious developer.
6. What’s your programming mantra?
Many developers and engineers have a mantra or personal code, but even if they don’t, it will be interesting to see what they come up with on the spot. This can give you an idea of their approach and what they focus on as a developer. You’re looking for things like “KISS” (keep it simple, stupid), “one thing at a time,” “aim for less code,” “how will I test this,” etc. Essentially, you’re looking for an attitude that aligns well with your team and what you have in mind for the person to fill this role.
7. How will you familiarize yourself with what we do here?
Hopefully, you have a solid on-boarding program that does this for new hires, so this question is really about how they think through the challenge and plan out a strategy. Are they able to make a plan for themselves? Do they have a realistic view of what it takes to get up to speed? Do they seem enthusiastic about it?
8. What’s your definition of done?
There’s no right answer here, but there are definitely wrong answers. If they just shrug and say something like, “done is when I’m done,” that’s not a great sign. You’re looking for how they think through it and how they see themselves in terms of the overall organization. You want them to tie in other teams or departments as this shows an understanding and respect for process and input. Good answers will mention things like code reviews, verifying against specs, the QA process, code submissions, etc. You want a team player, not a lone ranger.
9. What’s the role of QA in software development?
Again, you’re looking for a team-player attitude and a respect for, as well as understanding of, all the moving parts. You’re looking for answers that demonstrate that this person values good code, honest feedback, collaboration and inter-team communication.
10. What are you working on in your spare time?
Developers are creators. Like mechanics who go home just to tinker in their own garage, many developers finish their work day just to start working on their own passion project. This is a good thing and what they’re working on doesn’t matter all that much. What matters is that they’re so passionate about creating with code and growing their skills that they even do it in their spare time. Now, a candidate may have a busy personal life without time for a side project, but if they can tell you, with enthusiasm, what they would love to work on if they could, that’s a great sign.
When it comes to software, app or web developer interview questions, no matter the level of the role you’re interviewing for, digging into a candidate’s soft skills, approach and attitude can be just as important as determining if they have the practical skills to get the job done. Practical tests, projects and technical questions can often give you a good idea of their skills and if a candidate is up to the task. However, it is the less technical or obscure interview questions that can often give you a clearer picture of the person behind the skills and how they might fit into the dynamic of your team and organization. Aim to get the full picture to make great hires.