I’ve been asked about technical tests more times than I can count, so I thought I would write this article. I feel qualified to do so as I have participated in literally dozens of technical tests throughout my career, and I’ve tested numerous candidates.
So, if you want to know how to attack a technical test as a candidate, this article might help you. Alternatively if you’re looking for how to technical test your candidates, because you’re new to the process, this is also for you!
The ultimate, one way ticket, to unlimited job offers, by bossing your technical tests – listen closely, it’ll blow your mind…
Brace yourselves, this one will change your career and your outlook on life. Nobody will have ever given you such accurate advice, and never will again…
You can’t. The only way to nail technical tests and technical interviews are to actually be exactly as skilled, or maybe more skilled, than your CV implied.
It is absolutely acceptable to not be an expert in everything, in fact, nobody is. That’s why the phrase “Jack of all trades” is completed (in part) by “…master of none”, however the full version being “, is oftentimes better than master of one”.
The point here is understand where you’re at. If you’re an absolute master at a single technology, or someone with a breadth of knowledge across multiple fields, without “mastery”, that’s fine. Being honest about your knowledge and expertise is what you should do, only that way can employers and agents match you correctly.
I’m confident in my ability. How are they going to test me?
This is the specific part I’ve been asked about on several occasions. That fear of the unknown, how are they going to gauge my skill. In all my experience, there are 5 main ways to test a candidate’s technical knowledge, experience, exposure and expertise.
These all have difference advantages, and disadvantages, and all come with different twists; largely based on the (technical) hiring managers, but I will cover them all here.
Many companies will do multiple of the below; or may offer many of testing. To summarise here; the main types of test are
- The low level technical question
- The whiteboard test
- The code test
- The high level chat
- The takeaway specification
The low level technical question
This is best used when trying to understand that the candidate understands what they are doing, and the technologies they are using. This might include something like
What is the difference between “==” and “===” in PHP?
PHP Developer role, about 5 or 6 years ago
What would the following code do? [insert code sample]
Various developer roles from 2011 onwards
These kinds of questions are where you can unearth true understanding vs conceptual understanding, and depth of experience vs dabbling.
When interviewing low to mid level candidates these kind of questions are perfect to gauge where the candidate sits in terms of exposure, and consequent salary.
Preparation tips: Make sure you know the languages you’re going to be tested on (probably the ones you said you know), and think of as much obscure syntax as you can think you’ve used; especially the bits of that language you hate. For me, in PHP, that’s ternary operators. Not sure why, it’s entirely subjective, and I’m not a fan.
I’ve been on the receiving end of this test probably a dozen times, if not more, particularly in the first 4 years or so of my career.
The Whiteboard Test
The infamous whiteboard test, or a problem solving technical test. This is usually some kind of broad problem provided, with you expected to design and/or explain how you would approach solving the problem.
Usually used in more heavyweight to senior/lead type roles, these questions are handy for understanding the candidate’s ability to solve problems or design solutions rather than their ability to write code.
Show me how you would implement a modular, tenanted system which could allow for bespoke modules, as well as those which were to be redistributed
Technical test for a lead developer role, about 2.5 years ago
There is a stock table. This is a transactional table, so no updates or deletes, only inserts. Stock is moved from one shelf to the other by movements in this table. Design the solution which would tell you how much stock is available at any given time
Technical test for a lead developer role, about 2.5 years ago
Preparation Tip: Think about the problems you’ve solved in the past. You may well have done this several times in the past. Consider the approaches you took, the problems you faced, and understand how that will likely be relevant in this interview. Then prepare how you would articulate those problem solving approaches. Being able to relay your given scenario to your real world experience is always good.
I‘ve been on the receiving end of this one maybe 3 times, mostly when I was sitting between 3 and 5 years experience.
Write some code (on site)
These ones are horrible, usually for 2 simple reasons – you’re given notepad rather than an IDE, and generally speaking Google is forbidden. Which is crazy considering we all know Google is your friend.
I’ve found a couple of variations on this one, and oftentimes this test is in conjunction with either the whiteboard test, the low level test (especially if the task is to find problems or fix bugs).
This particular style of testing can be adapted for any level of developer, and will help to gauge skill and speed, as well as experience (especially if the task is one an experience developer will have solved many times over).
Write a PHP function, in as few lines of possible, to give the entire contents of a specified directory, in infinite depth
Technical test for a developer role, about 5 years ago
Write a PHP function, which will give me the nth number in the Fibonacci sequence
Technical test for a developer role, about 4 years ago
Preparation Tip: There isn’t one for this really, except be as good as you said you are, and get hands on with code as many times as possible before your interview. There are plenty of coding challenges online that can help prepare for this.
In the early part of my career (up to about 4/5 years in) I had this one nearly every interview, so probably half a dozen times or more.
The High Level Chat
More often found in heavyweight, senior, and lead type roles. The high level chat is a great way to understand someone’s expertise and breadth of understanding.
High level chats are fluid ways to have a conversation with a candidate and understand how they solve problems, how they decide what technologies to use, and how well they know their stuff. The interesting part, for interviewer and candidate, of this is the ability to derail the conversation to follow new lines of technical enquiry; which can be very revealing for someone’s true level of skill and experience.
What is your experience with caching mechanisms?
Technical test for PHP Developer role, about a month ago
What do you know about Automation?
Technical test for Senior PHP developer role, about a month ago
These conversations are usually based on questions, which may be based on the company’s tech stack, or your cited experience in your CV.
Preparation Tip: Revisit your CV and reflect on all the projects you’ve said you did. Research the tech stack of your new employer, they’re going to be interested in this stuff specifically.
Since I was about 5 years in, this has become the most common. Almost every process includes it.
The Takeaway Specification
Usually delivered by the agent (if there is one), here is a specification – often delivered via GitHub readme and a repository to be forked. The specification could be anything, but your job will be to hit that specification, usually within a rough timeframe or for a specified time.
The specification can be anything from “deliver a small system to do this” or “here are some details, build X integration with Y system”. It might be 2 hours of work, it might be 4 hours.
Deliver a web page which has a form, that captures X data, and submits it to Y third party endpoint.
Technical test for a PHP Developer role, about 3 years ago
Deliver a versioned API which handles video files
Technical test for a Senior PHP Developer role, about a month ago
Preparation tip: This one really holds the candidate to account to be able to deliver autonomously, like they no doubt said they could. You can’t really prepare for this other than being as capable as you say you are. If you do something maybe a bit controversial, leave a code comment or something to explain what you’re doing, annotating the readme is also fine. Be prepared to go above and beyond.
5 top tips!
So, time for my general advice in preparation for technical tests.
- Use the agent. They want to get you placed (it’s how agencies earn their commission) and will want to help you, they may have insight, so ask for it
- Be as skilled as your CV suggests, being a mid-weight dev is acceptable, trying to blag a lead’s job when you don’t meet their requirements, is not
- Be prepared, if you think your weakness may be obscure syntax or functionality, learn it. If you have loads of experience, spend some time revising your CV, and thinking about projects.
- Be genuine and sincere, if you don’t know something, tell them, make note, learn it later. If you’re passionate, let them see it. If you’re experiences, talk about it. Proud of a project? Sing from the rooftops!
- Understand the trends in the industry, that’s what people will want to test you on. When IE8 vs Chrome was the major thing, I got asked about it constantly. When Laravel first started booming, that was the major thing people asked me about. Automation is now all the rage, understand it and be ahead of the trend