At the end of this month I will stop working full time for my own startup Robot Media. The company will go on, and I will continue to be involved, albeit in a significantly lesser capacity.
What’s next? I’m excited to finally share that I will be joining Facebook in October.
Facebook in my life
I first visited Facebook in early 2011, as part of the Seedcamp USA tour. This was before the IPO, when the headquarters were in the Stanford Research Park in Palo Alto. Back then Facebook was an overgrown startup, with motivational posters everywhere (“HACK”) and a huge wall where we all left a doodle. The office was small enough so that it was impossible to miss Mark Zuckerberg, going from meeting to meeting. It was one of the highlights of the trip.
I hardly considered myself an active Facebook user. For years the only activity in my wall were automatic repostings of my Twitter feed. Yet as a developer, I had integrated dozens of apps with a rather crude but functional Facebook SDK. As an entrepreneur, I created Facebook pages for most of my products and even used Facebook Ads to promote them. I didn’t have a personal connection to Facebook’s core product, but undeniably Facebook was already part of my professional life.
The phone interviews
2 years after my visit in Palo Alto I received an email from a Facebook recruiter who mentioned my LinkedIn and GitHub profiles. The thought of leaving Robot Media hadn’t crossed my mind, much less joining a huge company such as Facebook. I replied to the email anyway, most likely out of curiosity and the reference to my GitHub repositories.
A phone conversation followed, where I found out that the recruiter specialized in Android. I was a very active Android developer early on, and though I dabble with it from time to time, I currently enjoy iOS and Mac development more. The recruiter noted this, and offered to hand me over to someone who specialized in iOS. The fact that Facebook has different recruiters for iOS and Android was a good sign.
I had never done an interview at one of the big technology companies. I had heard of how they were, and thought the experience would be great excuse to dust off my knowledge of algorithms and data structures. It was, and I highly recommend any developer to try going through the process at least once. Still, I couldn’t help telling the iOS recruiter that I had never given working at Facebook any thought, and that I saw the interview mostly as a challenge. She confidently replied that most candidates change their mind by the time of receiving the offer.
It’s worth mentioning that I had a fantastic experience with all the Facebook recruiters. I say this because I often see colleagues dissing technology recruiters. The ones I had the pleasure to interact with -Kate Blankenship in particular- swiftly answered all my queries, and went above and beyond the call of duty to make me feel comfortable and informed during the long process.
And long it was. My company and personal matters had my full attention, so I wasn’t in any hurry. Neither was Facebook; because of how USA visas work I couldn’t join the company until late 2014 anyway. It started with a 45 minute phone interview, and then another. The calls consisted in simple questions about Objective-C and basic data structure problems with Facebook engineers, using a shared editor to write the answers.
To this day, I remember the bugs in my code. I was more nervous than I expected, and thought the process would end with the phone interviews. I was my harshest judge. Soon the recruiter called to schedule a live interview at Facebook headquarters. Due to various commitments with Robot Media, I was given various weeks to prepare before flying to San Francisco. I decided I had to take this opportunity more seriously, so I bought two books that were instrumental in my training: Cracking the Coding Interview and The Algorithm Design Manual.
The live interviews
Ultimately I barely could find the time to read the books and practice. There was a lot to do at my own company, and I hadn’t realistically considered working at Facebook. In my mind this was only a personal challenge, and I couldn’t take away hours from work for it. Around then, Facebook bought Parse, a product I had used extensively and found utterly transformative. Parse is all about of simplifying technology to build greater things, something I’ve been doing for a great deal of my career. This made me see Facebook differently, but it was too late to ask for more time to prepare.
I used the flight and the time at the hotel to speed read both books and practice coding in paper. I knew most of the concepts from the university, and remembered being good at them at some very distant point of my life. As I studied I reflected how far I had strayed from that point, and how rusty my coding was. I also watched a lot of HBO to cope. I thought Behind the Candelabra was brilliant.
Facebook headquarters were now at Menlo Park. How it had grown! It was now a small town, with dozens of buildings, each for different projects and departments, restaurants, shops, roads and huge public spaces. The motivational posters were still there, and I also saw a wall with markers, perhaps one of many now. Statistically, the odds of crossing the founder of this company had drastically decreased. Facebook neither felt nor was a startup anymore. There was a gelato store with free ice cream and sorbets!
There were four interviews with different Facebook employees. I thought the jet lag and lack of sleeping would affect my performance. I was justifying myself. The only thing that affected my performance was my lack of practice. Through the interviews I worked on thread-safe LRU caches without ARC, recursion with dynamic programming, tries, and designing the architecture of the iOS springboard. Most of this was done in a whiteboard, except the first interview in which I had to code in the interviewers MacBook.
While all the problems were within my reach, I performed unevenly. It was clear that I had neglected my craft for too long, and the very same night of the live interview I resolved to change this. This made the whole process worth it. I returned home satisfied with failure.
The feedback I got agreed with my self assessment, but again wasn’t as harsh. The recruiter asked for a final phone interview to focus on my weak points. We scheduled it some months in the future, after my vacation. In the meantime, I started applying what I learned in my own projects. I used a trie professionally for the first time. My apps benefited from highly optimized LRU caches. I stopped shying away for pointer arithmetic. When the last interview came, I felt confident and comfortable for the first time.
Surprisingly the interview wasn’t about my failings in the previous ones, and was in fact very laid back. I don’t even remember the questions, so I wouldn’t be surprised if my confidence affected my perception.
I received an offer to join Facebook towards the end of 2013. The offer was generous and left money out of the equation. It was time to ponder if I really wanted to leave not only my own company but also the startup world. To move to a different country, and to answer the most important question of all. Why Facebook of all companies?
I signed the offer in early 2014. As in any big decision, there were many reasons behind it. Being disillusioned with Spain and working in a company that was stalled opened the door to consider the possibility. My conversations with Facebook employees made very clear to me that by joining I would grow significantly as a professional. 1.32 monthly billion active users (to date) promised a much larger reach for my work than it ever had before. And 7185 employees, or 183716 active users per employees (a number eerily similar to my most popular product), assured me that my impact would be noticeable. Whatever doubts I had, they were squashed with the WhatsApp acquisition, a product I did have an emotional connection with. Facebook was leading the future of social interaction, could quickly react to changes if needed, and I wanted to be a part of it.
The U.S. Citizen and Immigration Services (USCIS) begged to differ. I knew working in the USA required a H-1B visa, and that getting one required winning a lottery. Based on friends and acquaintances who had requested one, I thought changes were in my favor. Yet, around the time I received the offer Facebook began to warn me that this year might be different. How different? When I applied so did other 172499 people, and there were only 65000 visas available. There are some exceptions, so the actual changes of me getting a visa in 2014 were 42.6%.
I didn’t get it. The denial from USCIS arrived in towards the middle of the year. By all indications, next year will be worse. Repeating the whole ordeal for a change to start in late 2015 wasn’t an option for me.
The solution was close to home. The Facebook office in London was growing fast, passing the first hundred employees, and is the only one outside of the USA with engineering. I had the chance to work in London a couple of times in the past decade, and always decided against it due to a very frivolous reason: the weather. I have lived all my life in a warm climate close to the sea, and it’s hard to imagine my life otherwise.
It was the London team that changed my mind. Firstly, some explained that they saw the lower number of employees in the building (hundreds instead of thousands) as a plus, as relations were more personal. Coming from a startup who at its height had 8 employees, I can certainly relate.
Secondly, the iOS team itself was full of people I admire. Led by Alan Cannistraro -whose Stanford course taught me iOS-, and including Matt Galloway -whose book Effective Objective-C is my favorite iOS book-, Nick Lockwood -whose open source code I have used in almost all my apps-, Graham Lee -whose book on testing was hugely influential in how I code- and many others I’m sure I will have no trouble admiring. Working in Menlo Park was an exciting but abstract idea. Working in the same office than all these developers is a tangible dream.
So here I am, preparing my own company for my absence while dreaming of my next adventure. It’s a big change, so it’s no coincidence that this is the longest post I have ever written. I hope it’s useful to developers who might be in a similar position.