As someone who maintains a relatively popular open-source project on Github for the past 5 years I am becoming increasingly skeptical of companies who ask me to do a coding assignment as part of the interview process. And I do interviews quite often, for one reason or another.
Most companies will ask me to do a coding assignment after the initial phone/skype chat, if successful. Others will send a coding assignment right away after just reviewing the application, even before a phone screening. There are organisations who claim that they are receiving a large amount of applications and so this is a practical solution for them. I’ve got such an assignment following an application for a full-stack developer position at CERN, which evidently was not successful.
However, in my experience, the most common scenario is when I receive the assignment after the phone interview. And the said assignment need not take more than 3 or 4 hours usually. There is even a platform to facilitate this — coderpad.io, a website which aims to provide a live coding environment specifically designed for job interview assignments. Fair enough, the companies need a suitable and effective tool to hire the best candidates they can find, and faster. Right? Wrong.
We don’t need coding assignments anymore. Coding assignments are a thing of the past and in most cases they don’t prove much, as they are quite generic and most of them lack innovation. Even the CERN assignment, of which one would have high expectations, was rather disappointing in terms of creativity. I still failed it though, but that is beside the point.
Now we have a much better tool at our disposal. And it works well for everybody, not just for the companies hungry for talent. It’s the Open-Source community. Instead of the coder doing an assignment which has a high chance of being rejected and thus wasteful, organisations need to simply pick an open-source project on Github and ask the interviewee to submit a pull request for it. Even better, it could be a project that the company uses. Clearly this much more beneficial for the interviewee in the event of an unsuccessful interview as well. In the regular assignment situation, the coder will at best receive a few lines as feedback which is unlikely to be very useful.
Coding assignments are also alienating, stressful, inconclusive. We don’t need that in our lives. Pull requests are useful, empowering, inclusive and transparent. And a platform like Coderpad could work really well here to facilitate things. As a maintainer, I would be very happy to assist them with indicating which Github issues would be most suitable as an assignment.
I recently was in a situation where I have received a 3 hour assignment. This was my response:
Hi {Intervieweer Name},
With respect, 3 hours is quite a long time to ask an interviewee to spend for a coding test. I mean, I have been developing this open-source project for the past 5 years. All the source code is on Github at […] and to be frank I think that is a good indication that I am able to code in Javascript. You can check the source code for {Project}, it has also around 85% test coverage, most of the codebase is written (or reviewed) by me. In addition, you have my CV with presumably enough experience and academic qualifications for this position.
So it is up to you now to decide if you want to move forward with this. Personally, I don’t think it would be very productive for me to spend 3 hours to do a coding test for a job interview when I could very well spend that time fixing some bugs for an open-source project that the community can benefit from. I hope you understand.
Regards,
Andrei
Top comments (4)
While I understand your logic, I can absolutely assure you that, although I am a very inclusive employer, if I received that letter from you, your résumé would go straight in the round file. I also know for a fact that many good employers would respond the same way.
Allow me to explain why.
Contributing to open source is an excellent benchmark, and there are, I think, many scenarios where that indeed COULD replace a coding challenge, especially a fizz-buzz! I already look at the GitHub profiles of any potential candidate.
However, the decision to still assign a coding challenge depends entirely on the interviewer's discernment, and for good reason:
1) A good coding challenge is designed to focus on specific technical and logical skills, not just "can you code". I'm not talking about a fizz-buzz here. We're not choosing any random puzzle here. A good hiring manager is going to deliberately select one.
2) The solutions and possible obstacles in a coding challenge are well known to the interviewer. This is extremely important in our evaluating the important points in (1). We don't know anything about your project, and we'd have to spend many hours we don't have in attempting to extract the same information from your GitHub. (We probably have less time to spare than you; we're usually interviewing many candidates.) In my case, I can directly compare the results of previous successful applicant's coding challenges to the ones I get from the new candidate; that has proven to be a surprisingly useful metric, when taken in concert with several other points.
3) If a candidate can't bother to put in extra effort at the late stage of the interview process, when they're still trying to impress, I doubt they'll put in the extra effort where it counts on the job, when they've already shed their "Great Candidate" act. For me at least, half the point of the coding challenge is in watching for qualities that have nothing to do with technical skill!
4) I'd also be concerned whether such a candidate could follow instructions as an employee. I've known wayyyy too many mavericks who, instead of respectfully discussing their points of concern with their employer, just decide to dig their heels in.
Besides all that...
That's a bit generic. The coding challenges I use, and the ones used by many fellow hiring managers whom I respect, actually tell us quite a lot. You won't even find the solution to mine online!
I won't deny that there are many coding challenges which are too generic to be useful, but that doesn't invalidate good ones. That would be like saying "Web servers don't really serve a purpose, since they crash all the time," based on seeing a few that crashed, and having little experience with an IT setup that worked. Don't confuse your perception with reality.
Hey, thanks for taking the time to write such an elaborate response. What I can tell you from the start is that the company has presumably agreed that their assignment wasn't needed as they have invited me to an on-site interview - I didn't go, but that's another aspect.
I understand your points and I can tell you I don't find your views surprising. I can speak from my experience from interviewing in several different jobs across Europe. I have completed coding assignments for all kinds of companies and organisations in countries like Romania, Cyprus, Netherlands, Germany, Sweden, Norway, UK, Australia, Switzerland. They're always dull and inconclusive time wasters. I even interviewed at CERN and their coding assignment (JavaScript and Python) was very generic, easy and dull.
I've only suggested to make this coding assignments useful for the Open Source community. They could be like small issues to solve on GitHub and maintainers could submit them on a platform like CoderPad where companies could pick them up from.
And I reject this whole "we probably have less time to spare than you", as a business. My own time is just as important as theirs. Maybe even more important because when I am interviewing I will probably have lined-up several interviews and coding assignments and it won't help anybody if I am going through a living hell.
I also reject this idea that you need to have a specific set of skills and your assignment should look for those skills. This would only be valid if you are looking to hire an expert consultant on a 3 month project and you need them to have those specific skills. You all other cases, you would hire people who have a good track record of proven experience and ability to learn and adapt. It helps of course if they have the skills that you need and they can be productive right away, but this is not that important if you're looking to build a team that would stay together for a few years to come.
Well, you are naturally entitled to your opinion. It is a different story when you've actually done extensive hiring.
P.S. I once interviewed with a company that had you present something you'd created, rather than do a coding challenge, and then they'd grill you on it. It took me four hours to prepare for that, and was far more nerve-wracking than a coding challenge. Given the technical nature of the position, that made sense...but be careful what you wish for! That approach is harder to complete than a coding challenge.