I’m thrilled to announce that I’ll be joining Facebook’s Site Speed team in Palo Alto, California on September 26, 2011 for a 12-week internship!
After almost two months of being in contact with Facebook, I finally got the liberating call with the verdict yesterday evening: I’ve been accepted!
For those of you who want to read it, here’s the full backstory.
On February 24, I was contacted via the contact form on my website by Jason Sobel of Facebook. He’s a member of the Site Speed team and mentioned their article about BigPipe (which is the technology they developed to make Facebook load twice as fast). Apparently he had come across my master thesis and my website (i.e. this website) and was interested in my work on making websites faster. Jason asked if I was up for a chat some time to find out what I’ve been working on and so he could give a sense of what the Facebook Site Speed team does. There even was a mention of possibly joining Facebook: “maybe our team would be an interesting opportunity for you?”.
I’m sure you can imagine that when I received this e-mail I initially didn’t believe the sender’s e-mail address was real. It turned out to be legitimate… (I checked the e-mail headers and looked up Jason’s LinkedIn profile for verification.) By the end of the e-mail, I was literally hopping around uncontrollably like a schizophrenic kangaroo.
A couple of days later, I had an informal video call with Jason Sobel. It became clear they were interested in interviewing me for a full-time position. I explained that I’d first have to complete an internship to collect the final credits to complete my studies.
That’s why I proposed to do an internship first instead. They liked this proposal, so now I was interviewing for an internship instead!
First technical interview
My first technical interview was on March 21st and was taken by Benjamin Billings, a Software Engineering manager at Facebook whom is also a member of their Site Speed team.
Since I’d been working hard on finishing as much as possible of the various courses I’m enrolled in right now, to ensure I’d have enough time left to finish my master thesis by the end of May, I didn’t have time to prepare for the interview. A few hours in advance, I started looking up some algorithms, scanning them quickly, to get at least some of the details in my head.
Unfortunately, this first interview didn’t go too well. I was extremely nervous and solved the problems he asked me to solve very slowly.
At the end of the interview, I asked how I did and Benjamin confirmed my suspicion: my performance was not great.
Algorithmic Skills Sharpening
I was afraid this was going to happen. After all, it had been three years since I’ve had to deal with the details of sorting algorithms, tree traversal, single-source shortest-path finding of graphs, data structures and so on.
It had been one year since I’ve worked with relational algebra, database algorithms (such as calculating logical cost-based query execution plan selection), expression power of query languages, distributed computing algorithms and data structures (such as B+tree indexes).
My current master year has proven to be very ‘applied’: IT project management, information visualization, current trends of databases, basic accounting, bio informatics, legal aspects of ICT and entrepreneurship. The reason for that is that our university is trying to prepare us to enter the business world, either as an employee or business owner.
I explained Jason that “for me, it’s a matter of being immersed in a specific problem field again to regain the associated method of thinking”. Jason responded that they expect their engineers to be generalists and to be proficient across a wide variety of programming tasks. This is of course completely understandable — it’s in fact an excellent requirement for hiring software engineers.
So I decided that an opportunity of this magnitude was worth some sacrifice. I simply postponed all my university work to sharpen my algorithmic skills.
Over the next week, I processed ±1500 pages of knowledge acquired in the past of which my recollections had become rusty, plus I made some exercises. I re-studied the following courses:
- Algorithms & Datastructures (time complexity, inherent time complexity, sorting algorithms, data structures (linked list, stac, backtracking…)
- Operating Systems (OS architecture, FS architecture, CPU scheduling, multi-threading…)
- Technology of Multimedia Systems and Software (compression techniques for images, video, audio and data in general)
- Distributed Systems (techniques for building distributed applications that keep in sync, can recover…)
Second technical interview
Clearly, I was prepared far better for my second technical interview on April 4, which was conducted by Yuri Putivsky (whom is not a member of the Site Speed team). He’s a C/C++ programmer, and if memory serves, he said he did and still does some fairly low-level programming. I told him I’d been working with C++/Qt a lot for my master thesis (he knew Qt), so he proposed I’d answer his questions in C. I agreed with this, but was slightly worried that he’d overwhelm me because of his “low-level C programming” history.
However, mostly thanks to the re-studying of the Algorithms & Datastructures course and the practicing, the interview went very smoothly! I answered far more questions than the first interview, most of which were harder, in the same amount of time.
I was anxiously awaiting the verdict for just over two weeks…
On April 19, around 20:45, the verdict was finally shared in a liberating call. When I finally heard Laurie Young (responsible for university recruiting) utter the words “Congratulations! You’ve been accepted!”, I was incredibly relieved to know the answer, but most of all, I was incredibly excited :) As mentioned at the beginning of this blog post, I will start on September 26, 2011 in Palo Alto, California!
(I was later told by my (amazing!) girlfriend that I squeezed her hand quite firmly as I was being told the good news :P)
I’d like to thank Dries Buytaert once more for his letter of recommendation and the chances he offered me over the past few years. In particular, I’m grateful for the opportunity to build Mollom’s e-commerce system back in 2008, when I only brought open source Drupal modules as prior experience to the table.
If I look at the grand scheme of things, I even have to thank him to open source Drupal. After all, if I wouldn’t have come across Drupal in my search for a CMS to rebuild DriverPacks.net, then I would never have written the article about Drupal’s page loading performance. If I wouldn’t have written that, I would never have written my bachelor thesis about it. Next, I’ve only been able to come up with the concept of my master thesis thanks to the preceding bachelor thesis. Finally, Facebook has only found me thanks to my bachelor thesis and especially my master thesis, about which I’ve written on my website that is powered by Drupal!
It’s clear that I owe a great deal to Drupal, the Drupal community and Dries.
Thanks, Dries! Thanks, Drupal community!
Of course, this was not only possible thanks to Drupal. Clearly, I also owe a great deal of gratitude towards my university, Hasselt University and its many excellent professors.
In particular, I’d like to thank Prof. dr. Wim Lamotte (a great professor, my bachelor thesis promotor, but he didn’t stop there: he also reviewed my master thesis literature study and helped get approval for doing my internship at Facebook, amongst others), Prof. dr. Jan Van den Bussche (my master thesis promotor and an amazing speaker — he manages to make the most dry topics funny), Prof. dr. Kris Luyten (also a great professor whom teaches many multimedia and HCI courses, while always looking at the newest technological innovations) and many others.
My father and brother have also been very supportive over the course of my university studies. As have my girlfriend and parents-in-law to be over the course of my master thesis implementation (which is still ongoing).
It feels strange, knowing that a great opportunity awaits you in the not too far (yet not very close either!) future. I’m very excited to start at Facebook, and hopefully I will be able to continue to work there after my internship. (If I’m good enough and it can be combined with my personal life.)
Right now, I’ll just have to focus on finishing my master thesis implementation. (I had it put on hold for the last 1.5 month while interviewing with Facebook and while I was trying to advance other courses as far as possible, so I can get a long uninterrupted time to work on finishing my master thesis).
I don’t plan to leave the Drupal community any time soon, in fact, I will be building a new Drupal 7 site for my my table tennis club during the summer. Some of that work should flow back to the Drupal community, as usual :)
After this last multi-month summer vacation, I will then start in Palo Alto. But today, I have other things to do!