Interviewing Software Craftspeople: How to Get it Right!
Playbook Software CraftsmanshipWhen you’re hiring talented software developers, the interview process is more than just a skills assessment—it’s your chance to show them that your team is a place where they can truly grow and make an impact.
“The Software Craftsman” by Sandro Mancuso offers some great insights into how to approach this process effectively, highlighting some key pitfalls to avoid and suggesting best practices for engaging with top talent.
Let’s look at some insights from the book to create a compelling interview experience that attracts skilled software craftspeople.
1. Foster Mutual Respect
Instead of making the interview a test of who knows more, aim to create a balanced, respectful dialogue. The goal of an interview should be to have a productive conversation, not to show off. Treat the candidate as an equal, acknowledging their expertise, and being open to learning from them. This sets a positive tone and establishes mutual respect from the start.
2. Prioritize Real-World Scenarios
Move away from brainteasers that don’t reflect the job’s daily demands. Questions like, “How many golf balls fit in an airplane?” won’t help you figure out if someone can write quality code or collaborate well with others.
Instead, focus on questions and tasks that are directly relevant to the role. This gives you a clear understanding of how candidates think through real problems, design solutions, and write quality code.
3. Don’t Ask Questions You Can’t Answer
If you don’t know the answer to a question, it’s probably not important enough to ask. Googling tricky questions just to stump the candidate doesn’t make sense. Instead,ask questions you are familiar with and that are relevant to the position. This keeps the conversation focused and productive, allowing both you and the candidate to explore meaningful topics that matter for the role.
4. Promote a Positive Interview Experience
Making a candidate feel embarrassed or uncomfortable during an interview is a big mistake. For example, criticizing their past work harshly or dismissing their ideas can make them feel undervalued.
Always encourage a two-way conversation by providing constructive feedback and inviting the candidate to share their thoughts and experiences. A supportive environment helps them feel comfortable and confident, allowing their skills and personality to shine through.
5. Let Them Use the Internet
In real-world coding, developers often use the internet to research solutions. Blocking internet access during a coding test doesn’t reflect how they’ll work on the job. Let candidates use the resources they would normally have, so you can see how they solve problems in a realistic setting.
6. Emulate Real-World Coding Environment
Asking candidates to write code on paper (or on a whiteboard) doesn’t show how they perform in real-world coding environments. Instead, give them a chance to code using proper tools. This way, you can see how they test, refactor, and improve their code over time, just like they would in the job.
7. Avoid Overusing Algorithm Tests
Unless your job specifically requires deep algorithmic knowledge, don’t make algorithms the focus of your coding test. Structure technical assessments to match the actual requirements of the role. Instead of emphasizing advanced algorithms that may not be relevant, focus on the core skills that will be most valuable in the software craftsperson’s job—such as design patterns, testing practices, and code quality.
8. Limit Phone Interviews
Phone interviews can feel impersonal and rushed. They’re especially difficult for non-native speakers who might struggle without visual cues or body language. Whenever possible, opt for face-to-face interviews to create a more engaging and productive conversation.
By creating a respectful, real-world interview experience, you’ll not only attract top software talent but also show them why your team is THE place they’ll love to grow and thrive.