It has been almost three months since my last blog post. Things have changed a bit since then. Three months ago, I didn’t expect a brand new programming language to be announced at WWDC. I wasn’t planning to switch jobs again any time soon. I certainly didn’t picture myself living in a different country in the foreseeable future.
Like all good stories, it started with a LinkedIn recruiter email. Except that this one was slightly different. It felt somewhat more personal and referenced some professional details that were not listed directly in my LinkedIn profile. Also, it was coming from Facebook. Now I have to admit that working for Facebook has not been a life long dream of mine. I briefly considered the idea of working for a big software company in Silicon Valley or London when I was a bit younger, but back then it was Apple rather than Facebook I was thinking of.
However, since I began working as a full-time iOS developer about a year ago, I started looking at Facebook with different eyes. I noticed that Matt Galloway, who wrote my favorite book about Objective-C, started working there. Nick Lockwood, Graham Lee and John Harper followed later this year. I had been impressed with the open source iOS frameworks that Facebook released. I tried out tools like Snapshot test case, Chisel and Tweaks and they turned out to be really useful. I watched a video about Building Paper, which made me realize just how far engineers at Facebook are pushing the limits of iOS, and how challenging it must be to work on apps that are used by a billion people.
So I did what I never do. I replied to a LinkedIn recruiter email and mentioned that I was willing to discuss the opportunity over the phone. I still think it was more curiosity than anything else. I had a job I was perfectly happy with and I had bought a nice house near Ghent where I was living with my wife and two little children. It seemed very unlikely that we would suddenly leave all of this behind to go live and work in London. But I figured that I had nothing to lose and a simple phone call could do no harm.
I wasn’t nervous for that first call, but I didn’t really know what to expect either. The technical recruiter was genuinely friendly. We discussed my past experiences and aspirations for about half an hour, then she moved on to more technical questions. Of course, after that first call, I no longer felt like I had nothing to lose. After all, I had made it through the initial screening and there was a very small but real chance that I would be able to join the iOS team at Facebook London. The team led by Alan Cannistraro, who had indirectly introduced me (and the rest of the world) to iOS development five years ago, when I spent the entire summer watching the Stanford videos on iTunes U.
The next hurdle was a Skype call with an iOS engineer in Menlo Park, which would mostly consist of doing coding exercises in a collaborative editor. I had about ten days to prepare myself, so I dusted off an old book on data structures and downloaded a copy of Cracking the Coding Interview. The coding interview itself did not go as well as I had hoped. I think I was simply too nervous (and too tired after a day’s work) to perform at my best. I struggled with the easy warm-up question and rushed into the harder follow-up question. Fortunately, I did remember more or less what a trie is and what it is good for, so it wasn’t a total disaster either.
My recruiter called me later that week to tell me that they still wanted to fly me in to London to do an interview loop. At that point I decided to just go for it and deal with all possible practical considerations later. The next weeks were pretty intense. I spent every spare moment studying algorithm design and advanced iOS topics. It’s weird how you forget about Peterson, Dijkstra, Knuth and friends once you are graduated and start developing actual software. I guess real-world work really does make you rusty. Fortunately my daughter was kind enough to let me use her whiteboard to practice my coding skills:
And then I went to London. I left on Sunday evening and had taken the Monday off from work. When I arrived at the new Facebook offices at Regent’s place, I felt surprisingly calm. I knew I had prepared the best I could, so if it didn’t work out after all, it probably just wasn’t meant to be. The location was quite impressive, with coffee bars, candy stores and arcade rooms spread across the office floors.
The actual interviews were more or less what I had expected: whiteboard coding, architectural discussions, motivational questions, and more whiteboard coding. If you are looking for more details, there is a post that explains the technical recruitment process at Facebook quite accurately. I finally got to meet my recruiter in person, and during lunch I was joined by the other Belgian iOS developer working there. Every person I talked to appeared to be friendly, interested, passionate and smart. As I flew back to Belgium at the end of the day, I felt exhausted but also started to feel more and more optimistic.
While waiting for the final round of feedback, my wife and I finally started considering the practical implications of moving to London more seriously, but at that point it somehow felt like our decision was already made. Were we going to take this risk or were we going to wonder the rest of our lives what might have been? I had spent two months contemplating what it would be like to work at Facebook and had invested a lot of energy in preparing for the interviews. Looking back, there wasn’t really a clear point in time where we decided anything at all, things just led from one thing to another. So here we are now: selling old furniture, browsing rental properties, teaching our daughter her first few English words. My first day at Facebook is not until November, but the adventure has already started.