Doing a Test With Codility

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:

  1. 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.
  2. 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.
  3. 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.
  4. After familiar with the problem, make some quick custom test cases (array) and the expected output to be verified againts the code.
  5. 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).
  6. Do a lot of verification and code fixing against different test cases! (about 50-60% of time)
  7. 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).
  8. 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

[Updates]

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)

16 thoughts on “Doing a Test With Codility

  1. I had a codility test a year ago, and made a proper Pig’s Ear of it. I have to do one again, and will do better this time.

    But it seems to me a very artificial, unrealistic test of your ability as a software engineer. Real life problems are more likely in my experience to be about how to achieve a secure database connection in legacy code, or just to tie down accurate specs from a Product Owner.

    • I will do mine tomorrow, If you have done your, Chris, can you please share your question with me? I really appreciated it. Cheers

      • Hi, I have to give my codility test in the comming week, so can you tell me what type of question were their for you. How much does it take to get our results..

  2. Codility is a useful test of programming ability if your IDE of choice is Internet Explorer. But not otherwise. In my humble opinion, it’s just another ‘test’ suite suite of dubious merit sold by unethical snake oil salesmen to gullible and unknowledgeable hiring managers. Top tip: if you’re unable to assess software developers yourself, then get one of your existing software developers that you trust to help you interview prospective new hires. Don’t compound the problems caused by your personal lack of knowledge by using meaningless ‘tests’ like these, that in no way resemble the real tools used by actual professionals on the job.

  3. I agree with AB. Not to mention some of the questions are stuff from High school math and rather redundant. I shouldn’t have to google a problem just to solve the math before implementing since I haven’t had a math class since ohh 2007. Amazon, Expedia, Zillow and even a few startups had better simple 30 minute questions than Codility that tested knowledge on actual fundamentals I need throughout my career.

  4. Just took a test with them for a gig. The only negative would be the questions are easier to understand if you have a good math background. After I finally figured out what they were looking for the coding was simple. They also hint at the solution with their ‘speed’ requirements. I plan to run through all of their example questions in the future since they really make you think with a different part of your brain.

    • I think this experience was a good motivation for other, search for the right approach and the right solution will revealed, still, practice is the key, thanks!

Comments are closed.