I don't know how it works in other countries, but, in France, during interviews, it usual to have a technical test.
Sometimes you can do it from home, sometimes it's in live during the interview.
There is a lot of posts about the second one, so I won't speak about it. Let's focus on the "homework technical test".
I do code review on those for a while now, here is what I'm looking for.
Make it works
My first concern is that the code works.
I don't really care if the developer (especially if he is a junior) cover all the scope. I mean, it's better, but I prefer having an unfinished user story than a bugged one.
Clean code
We always have room for improvements, and, a lot of experienced developers don't have the cleanest code. I get it.
But, technical tests are like a resume, I except at least to understand easily what you have done.
If you are coding in PHP, I except PHPDoc for example,but also meaningful variable names, correct indentation and comments if needed.
Don't do more
If a scope is given, respect it. Don't over do.
You may think that's a bonus and the reviewer will see how implicated you are, but it send another message: You don't know how to respect the scope of a user story.
Git
Usually a Git repository is provided, and we except you to commit your code.
It's alright if you don't master Git yet, but you have to be careful about some little things:
- Do little commits, with explicit title/messages
- Don't hesitate to provide a Read me, explaining how you proceed and what you tried to do
- We'll check your GitHub.
Ask for help
Not all companies does it, but I always stay available for the recruits (and I provide a way to get in touch).
That mean I except you to contact me if something is bothering you or if you are stuck.
Google is good, but we are looking for team player, and that's a good skill to be able to ask for help.
Write your own code
I love copying a piece of the provided code, and look for it on Google.
It's amazing how effective it is to disqualify a candidate.
You can search for technical solutions or tutorials on the net, that's what a developer do for a living, but don't just copy/past the code.
I am already sure that you know how to do that.
Write your own code
Don't take too long
We know you have a life, maybe kids, surely a full time job. That's ok.
But don't take too much time to get back to the company, it send the wrong signal.
You can't do it within the week ? No problems, but explain it, I'm sure it will be all good !
KISS
Keep It Stupid Simple
You have been asked for an API implementation. It is simple, right ?
Let's your code reflect that.
If you have been asked for 2 endpoints, on Symfony, I don't want to see any Interfaces, or complex paradigms.
Just a controller, with as many object as requested and some tests.
That's all folks.
Tests
Not everybody know how to write unit or functional tests. But I always ask at least for unit tests.
Try to do it, even if you are not sure. It shows implication and learning capacities.
Don't get crazy with technologies
90% of the time, a technology will be imposed. Well, it's because it will certainly be the technology you will be working with if you join the team.
Recruiter ask for a Laravel implementation with Api Platform ? Don't use GraphQl !
Do your homework
If the company have public repository, take a look. You may find some tips on how things are done by the team.
It's always nice to see that the candidate will try to fit in (even if fresh ideas and mindset are always welcome)
Do it alone
If you cheat, people will notice. And it's like lying on your resume, you can be fire for that. And you will.
I hope this few advice will help you.
Please share you advice in the comment section, I'll edit this post to add all the good ideas !
Top comments (3)
Nice article.
About the "write your own code", what if you find the best way of doing it on google, shouldn't you use it instead of using your own code that may not be as good?
Wouldn't using copy/paste of several bits of code found here and there and putting them together to fulfill the task at hand an efficient way of doing things?
I tend to write my own code but if I find already written parts that do exactly what I want, my laziness kicks in and I'd just copy/paste ...
For the "Ask for help", I'm pleasantly surprised to read this.
Most of the company I took tests with (ok, only 3 so it's not a big sample) would not accept it.
I think writing your own code matter because everyone can copy paste.
The test is a way to confirm your logic and you ability to write an algorithm.
Last test I reviewed, the candidate used a whole snippet found online to read json and insert it to a databse,by batch, without failing.
It worked pretty well, and the code author would be welcome to join the team, but what does it says about the candidate ?
That he didn't know how to do it ? That he knew but he thought that snippet was more effective ?
Moreover, nobody want to hire someone who use pieces of code from stack overflow without understanding it.
Concerning the help provided, indeed it's not that common, and I think it's a shame.
Dunno why companies don't offer it.
I mean, even during the whiteboard test you should be able to discuss an issue with the recruiter.
Why not during the technical test then ?
Well, I understand but if the task worked without failing, I would assume he understood the objective, how to find and understand the code that would work for the situation and apply it.
Maybe he didn't feel like typing and went for the fastest, most efficient way.
I'm not trying to antagonize you, I just think sometimes, finding the already-made solution is as good as coding it from scratch yourself ;)