Test assignments aren't really a good thing. In fact, it's quite the opposite. It might be one of the worst things that have happened to the hiring process.
The hiring process, in general, is quite broken in many senses. It's not really clear how to hire an engineer. New ways of testing our skills come and go. It shows us that it's nearly impossible to check interviewee skills in 30-90 minutes time frame.
I'm not going to talk about different puzzlers or tricky questions about the compiler, nor I'm going to cover any stress-interview practices here. Today is all about test assignments.
Hiring is a very expensive process and it's not very reliable either. Hours of interviews ain't free at all:
- An hour of one or two engineers conducting an interview
- 20-30 minutes to prepare before, and to compose results after an interview
- Recruiter's time
If you sum it up, you'll end up with a good number. And it's fair to expect the business to cut the costs. There are many ways to make it cheaper: phone screening and tests are very typical in the industry.
And there is one way which outstands the others. An assignment which is given to the candidate. Typically it's a piece of rather boring code to write with a possible trick in it. Sometimes you'd have to do it even before a phone screening phase as an extra filter. And most of the time you take it before an on-site round.
Often it's assumed that you would spend (should I say waste?) a few hours to finish up the assignment. That's an estimate made by the hiring manager or an engineer, and it's based on the assumption that you are familiar with every tech and every aspect of the task.
How long does it take to check your code? Well, it's about 15-20 minutes. Doesn't look fair, right?
That's correct. A company is trying to put the expenses on your name. They don't know how to evaluate your skills and your experience during a short interview, nor they know how to do that by phone, hence the need for you to spend hours in order to convince them simply to talk.
By the way, a person whose job is to evaluate your task is not going to give it too much effort. They have enough on their plate and they don't really like switching their attention. Imagine looking at the same code over an over again. Often they would quickly go through a checklist.
Unless you're aiming for a top tech company like Google, Amazon or Facebook (they don't really give test assignments out, btw), you will not be dying to get a particular job. A vast majority of companies out there are doing similar things: storing the form's input in a DB. Well, sort of, but you know what I mean.
For the candidate test assignments are not very useful. On one hand, often they are similar to each other, on the other hand, they are hard to reuse. Every company is trying to make it a bit special. And you have to start a new project, configure all the parts, pick an ORM or set up a linter, over and over again.
Speaking of... How often do you start a new project at work? Like from the very beginning. You know, a
git init and
File->New Project. I've done so a couple dozen times doing various test assignments, and handfull times at work. Most of the time you either join an existing project or start one and keep working with it for a long period. So, honestly, it doesn't look like a relevant skill to me.
Think about it. How many man-hours do you have on an overage day? Well, if you're young and single, you might even have all 24 of them. You can't keep it up this way for a long time, but you can make it for a day or two.
However, it's a different story when you're older or have a family. You have like what? 12-14 hours a day. The remaining part of the day you do your chores and sleep.
You have to spend from eight to ten hours at work and commuting. That leaves you about four spare hours to use. So a hiring manager is going to take those four priceless hours. They want you to spend all your available resources so that they can save some time on their side.
How many resources does a company have? There are tens of engineers, managers and HR specialists there. If we speak about a small to middle size company. So they have hundreds of man-hours at their disposal. An extra 20-40 minutes to evaluate a candidate doesn't seem to be too crucial.
And that is an obvious asymmetry in the process. You have less time than the company, but you have to spend more resources upfront.
I don't really know what should we do about it. It's up to each individual. If you feel confident if you value your time and you're applying to an overage company you may refuse taking an assignment home. There are many ways to do so, you may ask them to pay for your time. You may offer them to take a look at your portfolio first. Show them your blog, your public projects if you have any. Let them download an app you built and try it first. Whatever works for you.
However, you might not be in a position to refuse. You can simply be running out of money or you might be talking to a dream job and you don't want to ruin it over the pride. I understand that.
Though I recommend you to publish the assignment somewhere. Let it be GitHub if we talk about code. Or Dribble or any other place which is popular among specialist in your field. Just be clear about it upfront: you are going to publish it because you own the result of your work. Unless they want to buy it out.
Hopefully one day you'll be offered with a similar assignment. Just send them a link back. It might work and could probably save you some time.
Well... Let's see.
Do you remember that time when you've spend many hours, build a perfect thing, neat and polished? And you were hired right after that with no questions asked whatsoever. Ugh, that was just a dream.
Unfortunately, often a perfect result will simply be a reason to meet you in person. And that's where an actual interview will take its place. They would ask you some questions to make sure that you are the author. Sometimes it feels like an unnecessary step to go through. They could have given you a simple 15-20 minutes test over the phone.
Imagine you found that you don't like the office, the team or anything else about the company. You know, there are things with you only can find out during a face-to-face phase. And in order to get there, you've spent hours working on that test assignment. What a waste...
One more reason in favor of test assignments. They should equalize candidates who have time for a public activity like blogging or OSS contributions and people with family or those who cannot publish any code due to their work contract limitations. Honestly, I don't see how that helps. If you have no time to work on your pet project why would you have time to work on a test assignment?
What do you think about it? Do you often see a take-home assignment given before the actual on-site interview?
This text was originally published in Russian in my blog.