What we look for in developers
We are almost always looking out for brilliant scientists, engineers and mathematicians, of all experience levels, to join our ever-expanding team of developers at ZOZO NZ. We know that our people are the key to our success, and we take a lot of care in only selecting the very best candidates.
We also know that applying and interviewing for a job is a daunting process. It can be difficult to fully represent yourself on a few sheets of paper, or in a one hour face-to-face meeting. Most of us have screwed up an interview at some point in our careers, but we want to give you the best chance of demonstrating your knowledge, experience and abilities.
In this blog I try to explain our interview process, what we look for in candidates, and some of the common mistakes to avoid, to maximize the chance of your application being successful.
Writing a good CV
There is plenty of good advice out there on how to prepare a CV, so here we will just focus on the things that we care most about:
Keep it concise. If you have a lot of experience then try to boil everything down to the most recent and relevant stuff, and aim for 3 pages maximum. For junior applicants, a single page is fine.
Be specific about what you (personally) did. For instance, 'Wrote the code module for tracking a robot using a linear Kalman filter' is much better than 'Worked as part of a team in a robot navigation project'.
Use simple chronological ordering. It should be easy to tell exactly what you have been doing from university up to now. Explain any notable gaps.
Run the spell checker!
We usually give promising candidates a phone call to ask a few simple questions, such as why you are interested in a job at ZOZO NZ. We’re interested in how clearly and concisely you can communicate on the phone. If you have applied for multiple roles at different companies then it might be a good idea to keep some notes so that you can remember who you are talking to if you get a phone call!
We expect all applicants for technical positions to have some competence in programming and we test this as part of the recruitment process. The coding test is slightly different depending on the nature of the role applied for:
For algorithm developer positions, candidates usually complete the test using Python or Matlab, and we focus on your ability to solve problems, often with a mathematical theme.
For software developer roles, candidates usually tackle the test in C++, and we focus on the quality and style of your coding. We are looking for good architecture and nice, reusable, maintainable code.
We are flexible though about the choice of programming language used for the test - you can use whatever language you are most comfortable working in. Mostly, we just want to see that you are reasonably fluent in a language, and able to solve practical problems in a reasonable time frame.
An example of the kind of coding task that we would expect any applicant to be able to complete quickly and easily would be:
Implement the quicksort algorithm for sorting an array of numbers into ascending order.
We would expect candidates to be able to provide a working solution for this task in their preferred language within about 15 minutes (without calling any built-in sorting functions or copy-and-pasting a solution from Google!). If your coding is a bit rusty then it's a good idea to do some warm-up exercises in advance, so that you do not find yourself googling basic language syntax during the coding test.
Beyond being able to code efficiently in your chosen language, no pre-requisite knowledge is required to complete the coding test.
We’re aware that coding tests are not representative of day-to-day work (and we certainly do not expect successful candidates to spend their career rushing out solutions against the clock!). So try to remain calm and just do your best to methodically work through the questions.
During the interview
If you are asked to come in for an interview, then congratulations, you are doing well! The first thing we usually ask in the interview is for you to give a brief, high-level introduction to yourself. The aim should be to spend about 5 minutes covering the major events in your career up to now. We are looking for an ability to concisely convey important information, with the ability to go deeper when asked.
We know that for applicants at the start of their career it can be harder to find things to talk about. In this case you might like to cover:
Why you chose the degree that you did.
University courses / modules that you found most interesting, and why.
Personal projects that you have done outside of uni (e.g. learning to code, volunteering).
Part-time jobs you have held.
Involvement in clubs or organizations.
Once we have got to know you a little, we will spend most of the remainder of the interview drilling down into relevant areas of your knowledge and experience. We will try to figure out exactly what your personal role was in the projects you described, what things you enjoy doing, and where your strengths and weaknesses are.
One thing in particular that we really value and look for in candidates is:
A deep understanding of one or more relevant technical areas.
These days, there are many powerful code libraries, APIs and software tools for performing tasks such as machine learning or computer vision, and it’s great to see candidates that are familiar using them. But we also look for a deeper understanding, especially in applicants for algorithm developer roles:
Can you give a summary of how and why the underlying algorithm works?
What are the strengths and limitations of that approach?
The reason we value this deeper understanding is because most of the algorithms we develop at ZOZO are not out-of-the-box solutions. If you have lots of buzzwords on your CV then make sure you are ready to talk about them!
We hope this page has helped to explain our recruitment process and prepare you for the various steps. Thanks for your interest in joining our exceptional team of developers, we hope to meet you soon!
Jamie is an algorithm developer with a Masters Degree in Mathematics from Oxford University. He spent the first 20 years of his career working in small software teams as a professional problem solver: researching algorithms and developing software for complex problems in the fields of computer vision, mathematical modeling and machine learning. Today he is the CEO of ZOZO NZ.