On a cold and rainy morning of April, our beloved CTO, Romain Niccoli, came to the R&D team and asked us if we were ready to prove our value to the rest of the world in a contest called “Le Meilleur Dev de France” (The Best Developer in France).
It was the second time this event was organized, and it was happening, like last year, in the freshly created University of Technology “School 42”, close to Porte de Clichy, in Paris. The challenge proposed to determine who’s the “best developer” was to solve as many programming problems as possible from a set of increasingly difficult questions, in 2 hours. The tiebreaker would be the time to finish.
Some of us jumped right in, some others were a bit more reluctant to join because of some bad feedback the event got the first time, due to early problems and organizational difficulties. In the end, a team of six valiant and highly motivated developers was formed, confident in the capabilities of the organizers to learn from their mistakes and make this second edition totally awesome.
The team was composed of:
- Antoine Leblanc, Enthusiastic Bearded Polyglot Trooper
- Nathaniel Braun, Tie Knot Expert and Hackathon Veteran
- Paulin Sanselme, Crazy Algorithm Wizard
- Pascal Pons, Programming Contest Sensei
- Raphaël Vandon, me
- Son Nguyen Kim, Marketplace Prediction Designer Master
Our uniform to fly Criteo’s flag was decided to be a t-shirt, because everyone wears t-shirts, and an orange tie to mark our difference and make a strong impression. Some say ties don’t fit well with t-shirts, but we are way over this kind of rigid thinking.
A few days before the contest, our six brave developers gathered in a room to receive the wise tips and tricks from our sensei, Pascal, survivor of the first edition of the contest.
— Meilleur Dev France (@MeilleurDev) May 15, 2014
On D-Day, we all put on our t-shirts, tied our ties, grabbed our fetish keyboard, sharpened our brains and marched on the School 42. We took the time to have a picture of the team taken, and after a quick visit to the second floor where companies sponsoring the event were presenting their product, we headed to the computer room to meet with our machines: Apple computers running Mac OS X. None of us was used to work with a Mac, so we spent a good part of the free time we had before the beginning of the contest to replace Apple keyboards with regular PC keyboards, and trying to make our computer behave like the PCs we are used to. We managed to reach the state of “good enough”, exchanged a few jokes with our neighbors while the mayor of the 17th arrondissement of Paris made a quick speech about how developers are so important for everything, and then the contest began. The background noise of chattering suddenly stopped, and everyone took a very concentrated look as we read the first question. Well, at least those who managed to log in to the submission platform.
— Benjamin MALLO (@BenjaminMallo) May 15, 2014
The only Java developer on our team for this competition, Son, encountered some unknown technical problems which prevented him from logging in to the website. Thus, he was unable to read the questions or submit any code. After some time spent trying to get things to work, Son was forced to give up and head home.
Meanwhile, we were already going through the first exercises. A cool and motivating feature was telling us our rank as we validated each question, which we shared with our teammates: “Ok, I’m done with question 1, I’m 12th !” – “hey, wait for us !” – “me too, I’m already 26th !”. We were in the “decent” range for the first exercises, but we moved slowly to the first places as time passed: “Question 4, I’m second, 433 seconds behind the first one” – “Aaand… Just behind you !”. There also was once in a while a small rant from someone who discovered a stupid bug in their code, misread the question, or was raging at the online editor.
About this online editor, while it was very unpractical to use it, we were actually writing our code in one of the editors installed on the machines, and copy-pasted it once we believed enough in it. Except for one of us, who was a bit lost on a Mac, and couldn’t find any usable editor. Pressed by time, he came up with the best online he could find: gmail drafts. I won’t name him, but this guy deserves credit for coding the whole contest in gmail editor, while he had a full IDE installed a few bytes further.
The questions were in the the usual form for a programming contest: a description of what we were supposed to compute, a sample input and the expected output. Then, we could submit our code solving the problem, and it was tested against a few random inputs. If our code passed all test cases, we unlocked the next question. It was programming questions, not algorithmic ones: what was tested was not really our ability to solve problems efficiently, but rather how fast we could put together the code to “get the job done”. So the basic qualities required were the ability to write code with few bugs, speed to solve said bugs, and the knowledge of the API of our language (for instance, in C# there is a List.Min() method. Knowing this saves you the time you would have needed to write code to do it.)
After approximately 1h45 of writing C# code, checking the doc, copy-pasting code from stackoverflow.com, thinking a bit and fixing bugs, I finished the last of the seven questions, and I got my temporary ranking: 3rd. Honor was safe, Criteo would have one developer on the podium. In the following 15 minutes, while I was checking twitter to see what people were saying, my teammates finished the seventh question too, Antoine just behind me, ranking 5th (using C++), followed by Pascal (6th, C++), Paulin (10th, C#), and Nathaniel (C++), who encountered a bug after he validated his solution, and couldn’t get his ranking.
The end of the contest was announced and everyone moved to the conference room in the basement to hear the official results being announced. I said “official” and “temporary” results because we still had a card up our sleeves: a couple of days before the event, we received mail from the organizer with a promotional quiz from one of the sponsors, and a promise that every good answer would give us a one 1 minute lead in the final ranking. We got all 6 questions right, so we could catch up a few places.
And we did: with this 6 minutes boost, I jumped from 3rd to 2nd, and Antoine from 5th to 4th. And because the organizers thought it was unfair to send the actual second back to the third place, they decided that we would both be second. And because there was now 2 second, the 4th became 3rd, and the ex-4th became 3rd too, applying the same rule. All in all, believe it or not, 5 people ended up in the top 3, and thanks to this magic, 2 Criteos made it on the podium, which looked quite nice.
— Meilleur Dev France (@MeilleurDev) May 15, 2014
After being congratulated by people wearing suits, and congratulating the winner, Antoine and I grabbed our prize (a wacom graphics tablet), we had a little chat with other contestants and the organizers about how well it went, and as we were all starting to be quite tired, we decided to head home for a well deserved night.
With those encouraging results, there is no doubt that Criteo will come in greater numbers next year, with the ambition to put even more orange ties on the podium!
Our lovely Community Manager / Event Manager is updating you about what's happening at Criteo Labs.See DevOps Engineer roles