Wednesday, October 6, 2010

No job for me at CCP

Like many EVE players my interest was peaked by an notice on the start-up screen talking about open positions at CCP. Being a programmer I have always wanted to work for a game company, and what better company than the one that produced my favourite game. In fact, ever since I have started playing EVE, I have wanted to get an inside look into the EVE database schema. There is no porn for me like database porn.

For most of the last 10 years I have been a professional database developer. My experience is split more or less evenly between SQL Server (wonderful database used by EVE) and Oracle (evil crap database used by most businesses). When I saw that one of the open positions was for a database developer, and that they use SQL Server, I took the plunge and applied.

What happened after that gave me very little faith in CCP.

Soon afterwords I received an e-mail from CCP saying that they had my application and wanted me to perform a technical test before proceeding in the interview. This is pretty common in the industry. When I interview people I always make them write a bit of code to show that they do more than talk good.

On Saturday at an agreed upon time the test arrived and as I started reading through it my heart sank. This test was crap for the position I applied for.

This is the CCP programming test. The entire test consists of three questions. Each question requires you to write code to solve a short problem. We expect the test to take two to four hours on average, but you may take additional time if necessary. Please read each question carefully and answer each to the best of your ability. Your solutions will be evaluated for completeness and correctness. While these questions are of a limited scope, please answer them as if they were production code. Your answers will ultimately answer the question, “Do we want this person contributing to our code base?”

You may provide answers in any language.

The use of a compiler is highly recommended to verify the correctness of your answers, but a compiler is not required. All code and algorithms must be your own; however you may use resources as a quick reference for formulas or syntax.

Good luck!

The job I applied to was for a database development position. This was a test for a 3-D programmer, or for a UI programmer, or for some other programmer that you would never want withing 100 lines of code of the database. The questions were pretty simple but totally irrelevant. The first was a geometry question. I thought about writing the answer in TRANSACT-SQL (sql servers main programing language) but it was written in such a way that I couldn't really do that. I quickly put together a bit of code in C# that performed the required task.

The next question however was downright absurd. It wanted me to move nodes around a linked list. I haven't done this sort of stuff in 15 years. A quick search on the internet and the complete solution was downloaded and ready. I suspect that this is what 99% of applicants do.

The third question involved writing a small text game. Of all the questions this was the most interesting since the game had to be written in such a way that the computer cheated, but tried to hide that fact. Again I through together some C# code that covered the basics. My solution was not very imaginative but it worked (certified as working on my computer).

In the end I decided that sending in the answer to the second question was cheating so I simply dropped it and sent my response back explaining that the test was totally irrelevant to the job I applied for. Not surprisingly I soon heard back that I was rejected :(.

I guess that my annoyance is more that this whole process reeked of massive fail. This was the case of simply filtering out unsuitable candidates rather than trying to get the best programmers they could. This is the sort of thing I would expect from the large IT departments of corporations trying to be just good enough not to get the CIO fired, not of cool boutique development studios on the cutting edge. EVE is a hard challenge. It needs really smart people who can do wonders with software. This position needs to be filled by someone who can rip data out of the multi-TB database with the minimal possible load. This interview process will give them run-of-the mill crap who when asked to do a filter will code a routine that loads an entire table into memory as a singly linked list using code copied off the internet, and then runs through it row at a time. And then they will wonder why they are having memory problems.

For those who are not familiar with databases, they are very different to program than conventional programs. Most coding in C++ or Python is explicit. You tell the computer to do one thing, and then another, and then another. With databases you program it using set theory. You tell the database what you want, and it does it for you. Unfortunately to do this requires a completely different way of thinking, especially for large databases where you need fast performance.

And yes, I am bitter, my current job uses Oracle and I HATE ORACLE! PLEASE CCP HIRE ME SO I DON'T HAVE TO USE ORACLE ANY MORE.


  1. How do you know this wasn't just exactly what you said it was - a test to filter out unsuitable candidates. There is no guarantee that there weren't more tests in the immediate future, had you made it over the simple speed bump presented to you to begin with.

    I can only imagine that game companies probably face a sizeable amount of random applications, because (let's face it) who wouldn't want to work for a gaming company with a successful (if low profile) track record? More than likely, this was just the first of a series of tests.

    Of course, I am putting a little more faith in CCP than most probably would these days...

  2. Confirming that I was filtered out as unsuitable.

  3. Many jobs, you must go and seek out information as well, if you don't know it. This test could have been just that; can you get the answers for each of these questions.