Most companies who looking to hire a software developer have an hiring process. Most of the time this hiring process has a technical interview. The goal of a technical interview is to show that a candidate did not lie in they resume when they said that they know how to write in JavaScript and that they actually did read Clean Code. It is a place to solve problems, write tests, and to showoff a mastering of the reduce
function. It is most importantly a lot of time spend for a company a candidate may not even work with at the end.
Most of the time it will be in one of those three forms:
Some candidates hate this kind of interview1. I won't try to fix each of them. I want to purpose the idea of another way to evaluate the technical level of a candidate.
1 I will not do your tech interview, The Technical Interview Is Dead (And No One Should Mourn), I hate interviews with technical grilling - A note to all managers/hiring personnel, The software developer job interview doesn’t work
Instead of doing the classical technical interview chosen by the company, I think it would be nice to submit one or more personnal projects. The candidate should be able to make the choice if they to showcase something or not. Flexibility is key. A company could say:
"We have three coding tests we want you to do. It will assess your level in C#, React and SQL. If you want you can replace any of them by one or more projects you did using one of the given technology.
An answer from the candidate could be:
"Sure! Here is a React library I wrote and a C# Pull Request I done to the dotnet compiler. You can send me the SQL challenge by mail."
Like that you just save 66% of the developer time and with a quicker technical interview, you may interview more candidates.
Most creative jobs from architect to designer use portfolio. Generalize this idea in our field.
Classical Technical Interview |
Personal Project Interview |
|
---|---|---|
Written code is mostly useful1 | ❌ | |
Candidate can't underperformed2 | ❌ | |
Candidate can have unlimited time3 | ❌ | |
Candidate can't cheat4 | ❌ | ❌ |
Candidate is interested by the subject5 | ❌ | |
Candidate doesn't have to spend time just for you6 | ❌ | |
Company can assess devops knowledge7 | ❌ | |
Company can assess documentation writing skills8 | ❌ | |
Company can mesure soft skills9 | ❌ | |
Interview doesn't depend on any external services10 | ❌ | |
Interview scales with level by itself11 | ❌ |
1 Interview code is nixed. At worst, a personal project have learning purpose.
2 No stress related to getting the job. The project was done earlier.
3 No stress related to a running time. The project was done earlier.
4 In both cases a candidate can submit a code made with or by a acquaintance. Harder to falsify if the project is well-maintained though. Note that pair-programming exercise is the harder to cheat to.
5 Invert a binary tree or matching colorful shoes is not something most devs I know does for fun.
6 Most candidate I met lock a whole evening or even an afternoon to do the test. Sometimes I personally abort an interview because I don't necessary have the time to walk one more graph.
7 Most companies I know doesn't check if a candidate use git, a ci/cd pipeline, code coverage tool, etc. Now a candidate can show it!
8 Most companies I know doesn't check writing skills. Documentation skills are scarced. If both public and private documentation tends to be limited, a short one is better than nothing. The personal project may be documented, it is quite rare that coding test is.
9 This step is to assert technical skill, not soft ones. If the candidate's project has some traction, you may see how the candidate deals with issues, answers to question, reviews pull requests, etc. This can be great to look for.
10 Most companies I know pay a service like Codility, Codingame, Hackerrank or Leetcode to handle the code assement.
11 Companies don't have to multiply tests as much for each level or each technology. We can expect from a senior dev to have more in quality/quantity to show than a junior.
No one takes the option to show a personal project and you are still doing interview the old way. The worst case is the company current case.
A company should not need to see thousands of LoC to have an idea of a developer level. The candidate just need a project to showcase what a code exercise of one to three hours would reveal. A diversified portfolio is better, but a short one doesn't mean a bad one. A small portfolio is not a red flag.
A candidate can create a showoff project just for the case. They save an among of time proportional to the number of companies who will accept to judge them on it instead of using their off time to write a fizzbuzz. On the long run, the candidate don't have to work as much on they free time.
Maybe, but they tend to write better code anyway. If a candidate doesn't have a personal project to show, it say nothing about their real level though. They will just choose the classical path and this is fine.
While searching informations for this article. I found The Terrible Technical Interview which introduce mainly the same idea as I. Good article. Read it too!
I don't know any company who actually do that. Most companies find my own profile throught GitHub, GitLab or Stack Overflow. Most, even if they already know my work, still want to me do some exercises.