Usually an internship program finishes hiring 6-9 months in advance. Somehow I was put into a full-time recruiting pipeline for Facebook back in 2011 and when I explained to the recruiter that I was still at university, they pushed me into their intern hiring pipeline.
I had two coding interviews over the phone. This was before video calls and I was too far away for an in-person interview. We wasted ten minutes trying to call each other, and once we finally had the very important international phone connection figured out, I was too nervous to pause and plug in my headphones. I ended up holding the phone between my head and shoulder, and sat like that for 30 minutes while solving JavaScript and CSS questions.
Working at a company like Facebook felt so unreal to me that I concluded I wouldn’t prepare for the interviews - either I was good enough or wasn’t. At the end of the interview, I was assured that yes, interns get access to the code and don’t just prepare coffee for the real engineers.
I couldn’t believe I actually got the offer. The start date was less than two months away, so we had to race to get the visa in time.
I got access to the codebase on the third day of onboarding. I was on the UI team - there were about 20 engineers who worked on all user interfaces and UI infra for the entire company. My first task was to fix a silly JavaScript bug: for browsers that didn’t support the input placeholder field (Internet Explorer and Firefox at the time), we had a JavaScript polyfill.
The polyfills for this behavior commonly worked by setting the input field’s value to the placeholder and changing the color of the field while the field is empty. The polyfill at Facebook treated typed text that matched the placeholder the same as a placeholder. If the placeholder was “Write a comment…” and you typed that exact phrase, you couldn’t submit it. This didn’t have real user impact, but it was still a bug.
Once I fixed it, the “diff” (PR) was accepted quickly. I realized this polyfill was used on almost every input field on Facebook and I actually remember becoming extremely nervous. My first change to the most visited site on the Internet could potentially break every text input field!
It was the only time I tested a change in every possible browser I could. I even got VMs for IE8 and IE7. But it felt great to do real work - it taught me to always give new engineers a challenging and real task from the get-go.
The change was pushed to production a few days later and I was so happy to have made a change to facebook.com that I emailed myself the commit hash: ad4a870eee97d7a380b76ac858f71b5aaf867348.