Interviewing is broken. Nagging the current interviewing standards has been a hot topic over the years. Ok, everyone’s expressing their discontent, but where’s the ultimate alternative solution? Well, It’s not exactly easy to fix, because interviewing apart from being broken is also… very hard 😐
The answer to that is pretty easy for a change: Software Developers life consists of many different responsibilities. The easiest skills to test are:
Ok, we’ve asked all the questions. Now what? If they weren’t very good, should we fail them? Definitely no. If they were good, should we hire them? How do we know how do they perform at their day to day tasks?
There’s probably much more, but you get the picture. These skills describe the way of a feature/problem from the technical outline and design phase to the end user. So basically it describes the main responsibility of a software developer. How do we test that 🤔 ?
The idea behind Open-Source-Driven Interviews is pretty simple. Your company maintains an open source project. It can be a fresh project, or a fork of some other project — Hey! It’s open source, you can do whatever you want 😀 Most ideally, the project would mirror all the guidelines, standards, approaches from your production code. That project is the playground that your candidates are going to play with. Remember to keep it tidy, documented, modular and easy to read — just like a real, serious project.
So, you want to test a candidate. What do you do? It’s a playground! The number of possibilities is infinite. You can give them a new feature to create in the project, a problem to fix, a module to refactor, a pull request to review. Does that remind you of something? Yeah, it’s those things that every developer does on day to day basis. Or was it reversing binary trees ? I don’t remember 😅
The project is a technological mirror of your real production code. It’s a serious project not some half-baked in-the-void “demo-app”- like in most take-home assignments. It’s a living, breathing codebase that needs to be refactored, tested, maintained, discussed. It’s as close to simulating a real task in your company environment as it can get. It tests everything you need in a software developer and it does so in a community-friendly way! Who doesn’t love open source? 😍
After the candidate is finished with the task, you can get to know them even better with discussing their solution. Remember, do not expect the candidate to solve the problem in one specific way! Interviewing should be about getting as much of interesting knowledge from the candidate as you can, not forcing them to solve problems in a specific way.
What if the project feels too big, or finished? You just start another! It shouldn’t happen very often though. Remember, the task shouldn’t take the candidates longer than 2–4 hours — It’s their free time after all.
What if the candidates want to remain anonymous? They can create an anonymous account or just send you a zip file with the changes. A small inconvenience but definitely not a big problem.
Isn’t it unfair that all candidates will be given different tasks? On the contrary: you can custom-tailor the task to the candidate’s experience so he has a chance to show off. Besides, this is not a “who’ll find a better solution” contest. It’s a test that should supplement your assessment of the candidate.
The project should be as close as possible technologically, but thematically it should something completely different— you don’t want to be accused of getting free labor. Preferably it should be something useful for the community. It doesn’t even have to be your project, it can be any arbitrary OSS out there. It’s open source — it’s all about having fun!
What are the other advantages of Open-Source-Driven Interviews?
That wraps it up. I didn’t have a chance to test that approach yet, but I definitely will! Let me know if you have any ideas, comments or concerns! 🤘
Edit:
Redditor burntsushi pointed that I missed to mention the possible disadvantages of this approach. Here are some potential problems that I can see:
I would definitely say that advantages weigh over the small disadvantages. Let me know in the comments below if you see any more problems that we can discuss.