Job-applications can be stressful. You need to invest time in a company that you don’t really know and might reject you, or the job turns out not to be as you envisioned it. Also, application-processes are different per company, depending on values and experience – it can be a maze and difficult to understand what is expected.
We’re a relatively small company, but we put more time into our application process than our peers. The feedback we got from past applicants, we used to improve it bit-by-bit. Understand that we want you to successfully walk through the application, and not drown in the process – so if something is not clear on this page, email us via [email protected]. You would be surprised that others ask various questions before starting, and it actually increases the chances of hiring (statistically).
We designed the process such, that the chances you’ll get an offer goes from a few percent in the first step to 90% really quickly. This allows us to spend more time on the people we think make a good chance.
We wrote this tutorial to help you get through the first rounds successfully. This means that by reading this page, you already increase your chances. As a bonus, various tips&tricks are generally applicable, and you can also use them in other job-offers.
Round 1: CV scanning
How to improve your cv
A CV shows an overview of what you can do with experience as proof. So it does not need to state “he is exceptional in…” but just show what you managed to do. If you did a project with a team, mention your role. If you think an unsuccessful project does not give value, you’re wrong – just clearly state your learning points.
We do a quick scan of your CV and letter, which means that we look for keywords like CUDA, OpenCL, SYCL, GLSL, HLSL, Assembly, etc. Second, we try to assess you on seniority in CPU-programming, GPU-programming and overall project-experience. Example. If you never worked in a team, mostly did C/C++ programming for 15 years and have made your first GPU-software some months ago, we’d assess you as a solo-worker, CPU-senior and GPU-beginner.
These labels are not good or bad, but just how we think things are. So make sure we can abstract these from your CV and can connect the dots. E.g. if you mention “OpenCL” under skills, but not under any of the experiences, then we might still reject you. It might therefore be good to just mention it under education as “best subjects” instead of skill – just discuss it in your email.
In case you need a sample CV, just use the below one. For the job-descriptions, be specific with what you did. E.g. “Increased x number by y amount”.
To further support you have experience, recent GPU-code would be very helpful to get through the first filters. Also label it correctly as “university assignment”, “book assignment”, “hobby project”, etc. This helps us to assess your code the right way.
For those who sent GPU-code, we check on coding style, efficiency, applied optimizations, etc. We also check if you used libraries or wrote your own kernels. As the job includes writing those GPU-libraries, we’re not looking for the ones who only use them.
Write a motivational email
Last, but not least, always add a motivational letter. Instead of “See my CV attached”, share why you like working with GPUs and HPC. And preferably also what speaks to you about our company. This explains what drives you, and we can quickly find out if we’re a match.
We see templated emails (with sometimes funny mistakes), but it is not really needed to make it that personal. We understand it is time-consuming to do job-applications, so a general text suffices. Think of sentences like:
- What you seek/need: “Things I value in a job are: ….. I hope I can find them in this job”
- What you value: “I like working with GPUs, since I did …”
- What you miss: “I remember a university project ….. I want more of that”
Round 2: short coding test
For those who are left, you do a simple online test in C++ (or C, if you choose that). This test is to get a grasp of your way of working and thinking, and to prepare you for the longer test. We found that puzzle-solvers are good in the work we do. It does help to get some practice in creative coding tasks, if you currently have a boring job.
It takes 10 – 25 minutes, depending on your experience with such tests. We give 30 minutes, which should be enough time for most. If you never did such test, check the tips under round 4A.
If you fail the test, you get an email with hints and get the choice to do the long test. This allows those who realized they needed to better prepare, actually do much better in the next round. The hints are written down under round 4A, so you can already prepare.
Reasons people stop here
While we give a choice to continue the process, not everybody takes that opportunity. Here’s some background on their decision.
- Finding out it is too difficult. There is now a good understanding and context where the job is actually about. We tried all kinds of ways to message the job is difficult to serve the bored people, but we’ve learned that the texts are understood relatively to somebody’s own experience. We believe in growth (watch “Not there yet” for info on the learning-mindset) and luckily some have people applied again a few years later.
- Thinking the job is too difficult, and thus not even doing round 1. We found that many people don’t even apply, because they think they cannot do it, since their friends do rocket-science – that’s a missed chance. Get in contact to discuss your doubts.
- Not taking the time-pressure. See what is written under round 4 – we are here to help you pass (if your skills are there)! Get in contact to discuss this, so we can see how we can find solutions.
If you are worried about any of the above, please reach out to us. It is worth doing the short coding test, and we may offer a different alternative to the longer one if you have concerns. We want you to have the best chance possible.
There are more reasons, not mentioned here. We try to get 100% of the people with the right skills through, so feedback is always welcome.
Round 3: video call
First real contact! Here we double-check everything we have assumed, and also answer all your questions. Make sure you have questions prepared. If you don’t have any questions anymore, just take those questions with you and mention that these all have been answered.
Know it’s a fairly relaxed call, where we just want to get to know you. So we don’t want to work through a CV or hear about technical projects at this step. To succeed here, just answer the questions openly and don’t try to give the response you think we want to hear.
Here we also discuss your salary expectations. We don’t pay salaries as the financial or energy sector does, and we need to have clarity on this.
Round 4: long coding test
After the call you are invited for a long coding test. We have two variations: the online coding test (4A) and the homework test (4B).
If you’re not that good at coding efficient C++ and doing puzzles, be sure you get more experience in C/C++/GPGPU! It would make sense to wait with your application, or pause your application for a few months, and take it serious. Joining an open source project in C/C++/GPGPU helps a lot with getting through this round, if you seek a method to improve.
Round 4 A: online test
Here you show your skills in C++ and algorithms, not in GPGPU. On average, this takes 2 – 3 hours. There is a warm-up assignment and then 3 bigger assignments. Thus the time per assignment is 45-60 minutes. Understand that we simply test your C++ and puzzle/reading skills, as we need these skills for the projects we run.
If you did the short test really well (80% or higher), chances are increased that you pass this one too. People who did not do well on the first test but studied their mistakes, do also good. In all cases follow the tips under “How to prepare” again, as the pass-rate for seriously prepared people is always higher.
Statistics. Of all the applicants that we send an invite for the test, 67% actually do test and 25% gets score of at least 80. So 37% of the people who start the test, pass with a 80+ score. We of course try to make sure that the numbers get better. Like the 73% who did the test for “nothing” – it actually used to be well over 90%, but we think we can do better. One part is to help applicants better prepare for the test.
How to prepare for the Codility test
The below tips work for any coding-test. If you want a more serious coding-job, you should expect tests and therefore preparations are important. Codility wrote a nice article on how to prepare for the test, including links to sample tests. Start there. Make sure you practice puzzles like you did on university, especially if you are trying to escape a boring job.
The main challenges are working under time-pressure and not being able to get hints, which needs some practice to get used to. Ofcourse we also want to skip these test, and we seriously tried alternatives – we simply found that it is important to know how somebody can solve problems on their own.
General tips during the test:
- Read all questions carefully. A typical mistake is not understanding the question – it is therefore much better to spend 10 full minutes on understanding the question (and the provided code) than to start asap.
- Plan your time. Estimate how much time each assignment will take you. Focus on the ones you have most confidence in, but use a stop-watch to restrict time to 30-35 minutes. This leaves 10 minutes at the end to double check and test your solution.
- Make sure you try each assignment. (100+100+0)/3=66%.
- Test. Start by designing a set of tests. With just a few exceptions, all applicants who got high scores, tested their solution in Codility.
- Comment your code. Two reasons. One, if your code fails, comments and tests can actually give you the advantage of doubt. Two, explaining the code out loud, supports problem understanding.
- Keep your algorithm-books close. We’re not testing your memory, but your skills. It is strictly not allowed to copy code, but it is allowed to double-check an algorithms.
Round 4 B: homework test
If you do this round for the second time or if you are not wiling to be working under time-pressure, we have a homework test. This takes 10 to 20 hours, but can be done in one’s own time. Here you show your skills in C++ algorithms and GPGPU. It shows what somebody’s level really is in the broad sense, which should give you the necessary feedback on progressing on this career-path.
Rounds 5+: The rest
From now on, the chances are 90-95% to get the job! Assuming you did not cheat, but luckily hardly anybody does. The 5-10% is in case of unique situations, we assumed we did not need to test for.
In these rounds we only double-check things, and focus on getting to know you. Notice it takes more than half of the time that needs to be invested. We do:
- the technical interview on C, C++ and GPGPU (2 hours)
- the long interview (3 hours)
We try to plan all in one week, which makes it intense but fast.
A last remark: the door versus the room
There are two types of people who apply: door-people and room-people. Door-people want to get through the door and then will prove themselves that they are worth it by working really hard. Room-people focus on the room behind that door, and try to find out how compatible we are with each other. Statistically, we almost only hire room-people. This means that if you focus on self-check compatibility for the job, and ask us question about how it is once you are in, chances increase a lot.
If you have questions not discussed here – just email us at [email protected]
We have provided various texts to help you get the information we think is useful:
- Job description of GPU-developer (junior, medior, senior) contains info on us as an employer.
- Onboarding process describes the first 4 months of the job.
- Self-assessment that tells you where you stand and thus what are the technical chances to get the job.
Want to know more? Get in contact!
We are the acknowledged experts in OpenCL, CUDA and performance optimization for CPUs and GPUs. We proudly boast a portfolio of satisfied customers worldwide, and can also help you build high performance software. E-mail us today