Two days ago I was called by an employer offering me a job as a Developer. After having a quick phone interview, she told me that they need to test my programming skill that I can do it at home. I was thought it really nice that I didn’t have to go to their office ( – always hesitate to go anywhere in Jakarta in busy work day), and their email come in the afternoon just sending a link to this site, codility.com:
To my surprise, this site offers exactly what the companies who in search for programmer and need to ensure their basic programming skills. We can look at how the test work by doing the sample test accessible from the homepage. The interface are nice, we can even choose our langauge of choice with the same given problem. The Help screen is intuitive. The IDE is enough to write a solution. And we can verify our work againts the default test case (that in used in the instruction) and our own test cases.
[was image 1 removed]
If we submit the task, the server will then evaluate our result againts more heavily internal test cases to make the score, and this is where I know I got pretty “unsatisficated” score. We can have a view about how and what that will be scored from our code from the analysis in the report, we could be use this to our advantage before taking the real test. However, in the real test, our result report will not be shown.
[was image 2 removed]
So, these are some tips I want to share when working on codility as a testee:
- Do several demo tests (http://codility.com/demo/take-sample-test/ – accessible from the homepage) – two other samples accessible from blog post (http://blog.codility.com/2011/03/solutions-for-task-equi.html) before doing the real test, so you get familiar with the interface, the problem, and the way to verify and submit result.
- Have place that suitable to do the test without interuption for about the time allocated to you, because we cannot pause the timer, and also concern the electricity supply if working on a laptop.
- When the test starting, allocate enough time (about 30% of time) to understand the problem given in the instruction, having a sheet of paper beside you is a good idea to scratch your mind. In my case, it would always about creating a function that working with an array as an input.
- After familiar with the problem, make some quick custom test cases (array) and the expected output to be verified againts the code.
- Start coding the initial solution (about 10-20% of time), the problem are usually puzzling, but it should not too complicated or written in long lines (at least in my case).
- Do a lot of verification and code fixing against different test cases! (about 50-60% of time)
- Don’t forget in mind the code must work with extreme data possible (the size of array – even empty array, or the value in each item).
- Submit with confidence – don’t forget those lines might affecting your life next month… ;-P
After finishing the test, I found that my code was not optimized properly (I forgot to put some ‘breaks’), there’s nothing I can do, hope they will contact me again after this (?) I found my own drawback that I must improve such as:
- Underestimate the importance of identifying size of array and data type (using long as a container for integer operation is a good idea)
- Forgot to put multiple breaks in a stepped ‘for’ iteration! #sigh
- Need a way to make extreme test cases
Companies had very different styles in testing the recruits. Some form of tests I have had includes (each in different occasions):
- Creating a pseudocode with a real world case on paper, and got hired…
- Creating a pseudocode with common algorithm (sorting, etc) on paper, and got hired…
- Drawing solution for a puzzle-like problem on paper, got further progress but unfortunately could not take it…
- Asked to make an almost complete solution, in a closed room, with a prepared laptop, without internet connection… never got the next call
- Asked to make a program for a given task in an empty workstation, with internet, got hired as my first job…
- With Codility, no call yet
After two years, this post is actually my only post with active commenter (it’s even not that much). But today I got message from wordpress notifying that there is materials in this post that infringed with the refered site’s copyright. After checking with the included original email, I was surprised to know that the said infringed materials are the questions from the screenshot of the workspace of the demo page (was image 1) and from the result page (was image 2), I never thought about that before. This would be a new lesson for me. For the reader who wish to take a glance about the workspace and the result page, I recommend you to try it in their demo pages.
Thanks for visiting this blog, and again, wish you good luck for your next job 🙂 (Update Sept, 4th 2014)