I’ve grown up hating tests – all kinds, although most of the time I did pretty well. I don’t know what’ve happened but I end up, currently, liking to take job interviews, especially ones with test. It might be just a way to feel proud of myself, to look for new challenges, or I am just plain bored and want to do something new. I have been to a lot of assessments recently, maybe not a lot, but quite bunch of them; enough to tell stories about, or just rage at things for no specific reason.

But here they are, some kinds of interview that being a web developer, I have had:

These are ones I dislike

The ‘I-bet-you-don’t-know-Google’ one

Okay, you submit your resume, they send you link for the assessment. You take a deep breath, cross your finger, go to Spotify searching for the most concentration music they have there, and ready to conquer it. Nothing is more disappointed when you see it is the multiple-choice all theory test.

Like, seriously, when you ask people stuffs like:

What does substr() function do?

a. Returns the portion of string specified by the start and length parameters.

b. To subtract a number from another number.

c. To replace all occurrences of the search string with the replacement string

d. How can I know

you don’t think people can just go to Google, type: substr site:php.net for the answer, do you?

Or some questions like:

What will it echo out when we have these codes

$a = 5; $b = 6;

echo $a < $b ? ‘Good, you are better than a 5th grader’ : ‘Of course everyone knows this is not the correct answer’;

At first, I am reading through them line by line, trying as hard as Hermione to solve them. But then later, I just decide to be Weasley, as you can tell, be a cheater by just copying the whole thing to my IDE and refresh the browser for result. This is to me the most non-sense assessment.

The ‘php-manual-like-your-bible’

I hate when coming to an interview and there is nothing but a white paper and a pen in front of me. That means the interviewer, well, if I’m lucky, my future boss, will expect me to remember everything in the PHP manual like my grandma does with her old bible. Take strpos() function as example, I swear, I must use it over thousand times, but I am still not sure which comes first, the haystack or the needle. To me, it is totally not important because almost every single IDE shows me the answer when I type in substr( right away; or it takes just 5 seconds to look up on the Internet. Although it is better to remember, I just don’t think it is a good way to test your candidates’ skills.

I still recall one time I was on a phone interview with that web manager from a big company. He asked me so many questions which my answers were like: I know what they are, their purposes, when to use them, I just don’t remember their syntaxes exactly. In the end, he then asked me: so do you have any question about our company? which I promptly asked: do you guys have Internet there? It seems to me you don’t because you asked your candidate to remember everything. He was unhappy about it, and I haven’t heard from him since.

The ‘real-life-project-one’

I know, one of the most important thing is whether the candidate can start his job as soon as possible. Who likes a guy that request 2 months just to ‘learn’ about your company’s current system, right? So, this is where ‘let me just take one of our real project and give you as an assessment’ idea comes from. It is nice to a certain level, and some companies even offer to pay money for that, because apparantly it is still cheaper than recruiting a guy who does not fit. Problem is projects which seem like simple ones from your standard, are not, to others’. And the communication back and forth to get enough information to do that test is a nightmare, since you haven’t known each other yet, and still be put into a situation that requires so.

I once had an assessment like that after I passed the first interview. To be honest, it was not a complicated project, however I was just given the project’s requirement and left without any information further – things that every developers needed to start a web project: what your current database schema is, what data access layer you’re using, what your codebase looks like now, are you using strictly OOP or just procedural coding? …


The one I liked

Here is the package

Yep, they send you a zip file that contains all the instructions, requirements and give you a day or two to do it. You can Google and copy every single damn code line, you can even ask your dog to do it for you. In the end, if the zip file you send them back works, you are welcome to the company.

I like it because it doesn’t give me any pressure. I got my previous job like that. I was worried since the test gave me too much room to do whatever I wanted that I might be unable to fulfill their requirements when I came there officially. Like, I used Googe a lot when I did the test, what if they supposed me to work without using one. Turned out it was not that bad, I still had a job until I decided to switch to another. I guess they didn’t really worry since Texas was a free-to-work state, they could fire me if they found out I didn’t meet their expectations

The devskiller-type

My most recent assessment was through a tool called devskiller. Basically devskiller an online platform that many companies use now. It is difficult to describe, so let me give an example. My test there was a set of many step-to-step requirements:

  • First, it asked you to write queries to create 2 tables, then to create foreign key constraint between them
  • Then it asked you to write a class to connect to database using Singleton Design Pattern
  • Then on their current Customer.php file (which they already had __construct and other necessary functions), write one to search all, search by specific name, save…
  • Same for Address.php
  • Then a page that displayed all Customers together with their Addresses if had any
  • ….

Thing I liked about that tool was it used PHPUnit to test my code. For all who don’t know PHPUnit, it is one of the best testing tool out there. It calls your function, expects a result, and if your function returns the same, then you pass that test. So for example, it searches for customer ‘Larry’ using the function you’ve written Customer::Search(‘Larry’) and expects information about Larry, if yours returns what it expects, you pass.

So as you are doing the assessment, you know how good you have gone so far. And it is pretty clear, just either pass or fail, you don’t need to worry further about your code.



I haven’t had a chance to be manager to interview anyone yet, but if I do, I think I will definitely go with the devskiller one, it can save both of my and the candidates’ time. In the mean time, it’s still fun to look for new challenges elsewhere sometimes…