This past summer, I had my first internship at Facebook. It was a very valuable experience, and in this post I would like to share my thoughts about the experience, from the application process to the company culture, and the lessons I learned. I will try to be as straightforward as possible, and I hope that this will a helpful account for others who are considering interning at Facebook in the future.
I applied to Facebook in early September for their Software Engineering Internship role, at a Career Fair at UC Berkeley. At the time, I didn't really imagine that I would work at Facebook, neither did I think Facebook would be interested in me. After all, I did not have any previous internship experience, impressive projects, or referrals. Soon after however, they sent me an email, informing me that I had been selected for an on-campus interview! The interview was held the next week, a 45 minute session where I was asked some standard algorithmic-type questions.
From that point, I advanced to the second round of interviews - a full day at Facebook HQ in Menlo Park, CA. I was given a campus tour, had my interview (~ 45 mins), lunch, then a Q&A session with employees, and finally an Oculus tour. The recruiters did an impressive job pitching the company and the work environment, depicting the campus as the Disneyland of the tech industry. And this isn't just my impression - all of the other interview candidates felt the same way! After the campus tour we had our interviews. The interview question wasn't a typical algorithmic problem, but rather a software/systems question regarding buffers that caught me off guard. Coming out of the interview, I thought I had done a very poor job, and that I was going to be rejected. That said, the rest of the day was still fun. Here are some picture of me and all of the other candidates (all of us that day were from UC Berkeley):
I received a phone call a few days later, informing me that I had been accepted. I was so excited that week! At the time, most of my classmates and friends were still interviewing with various companies and hadn't received offers yet. My friends seemed very impressed, and with all of the hype it seemed almost stupid for me turn down the offer. At the time, I also had an offer from Nvidia for a Deep Learning Internship, and in addition my professor encouraged me to stay at Berkeley in the summer to continue my research. It wasn't an easy decision picking between all the options I had for summer. I did not consider the research option, because I wanted to get out of school for a while and experience something new, for fears that doing research all the time during summer would tire me out and make me lose interest. After all, I really wanted to see what working in industry is compared to the research experience. It was down to choosing between Facebook and Nvidia. One advantage that the Nvidia offer had was that it guaranteed a spot in AI/ML work. The Facebook offer did not include any details about which team or field of work I would be part of - that occurred much later, around late March to early April. Ultimately however, the benefits and salary from Facebook in addition to the name, were reasons why I chose Facebook. I will admit that choosing a company just based on benefits and salary is not the wisest choice - if I had to pick between these two choices again, I would consider the Nvidia offer much more seriously. In total, the entire application process (resume, interview, offer, acceptance) took ~ 6 weeks, an incredibly fast timeline! That said, I would have preferred if Facebook had given me more than just 2 weeks to decide on the offer. From that point, I did not hear much at all from Facebook until April for team placement. Prior to team placement, Facebook sent us a survey asking us about our preferences and skills; I just wish if they asked for our resumes too, so that they would have more context about our work experiences and projects! In the end, I was placed on the group that manages Apache Zookeeper, a distributed data-storage system. Systems work was not my first choice, but I was still very excited to work in that field. The internship was to take place in Menlo Park, although there are other locations (notably New York, Seattle, London).
The first week was a busy one, with each day being completely different. On the first day, we had a Q&A with David Marcus, the head of Messenger at Facebook. He spoke to us about his experience and shared advice about how to succeed in our internships; it was an exciting talk to have on our first day! Later in the day we received our equipment, which for me was a MacBook Pro and a Samsung Galaxy S8:
On the second day, we had to attend various bootcamp sessions, learning about version control, and various relevant repositories at Facebook. The first couple of days were great opportunities to meet as many interns as possible - everyone was new and looking to make friends. After that, the interns all separated and joined their respective teams. At the beginning, all interns are assigned a specific starter task, a small project that helps familiarize themselves with the team codebase and start to use version control and diff review tools. While I think the starter task was interesting, it took around a week to complete and I would have rather spent the time working on my main project. After completing the starter task, I had to choose from a list of projects to work on for the 12 week internship, and the expectation was to make a decision within a few days about which project I wanted. Thankfully I wasn't expected to know anything about the team projects coming in. My manager was very supportive and helped me choose my project.
Free Stuff, Amenities & Events
Facebook has many impressive amenities and perks that small companies simply do not have the capacity to offer, and many other large companies don't seem to offer either. However it is important to note that while amenities and perks are awesome things to have, this should have a relatively small impact on your decision to work at a particular company over another. What should impact your decision is the quality and impact of the work itself, the company culture, and the degree to which it will help you succeed in your future endeavors. With that said, here is a list of the awesome quirks of Facebook:
Including but not limited to: a Burger Shack, Pizza Shack, Salad Bar, Naan Stop (Indian Food), Sandwich Bar, Smoothie Bar, Mexican Food Truck, Vietnamese Restaurant, and Halal Food Truck. In addition, there is a free ice cream shop, and plenty of snacks in the break rooms. Quality wise, most of the food is decent (all local and organic) but it can sometimes often fall on the unhealthy side, and I ended up gaining ~ 5-10 pounds as a result! Even though there was a lot of choice, I was still picky about what I wanted to eat, and for some reason I did not find the cafeteria food too appealing. The only places I approached regularly were the Naan Stop and the Salad Bar, but I got tired of having the same type of food all the time. This is probably way too much to ask for, but it would have been great if they offered Persian cuisine, as it is something that Apple actually does offer. Speaking to some vegetarian friends, I had the distinct impression that Facebook can improve its vegetarian food options, but then again that issue may not be specific to Facebook only. Make no mistake that I am absolutely thankful that free food even exists at Facebook!
All interns are offered a housing location for the duration of the internship. Alternatively, they can choose a stipend to take and arrange housing themselves instead. I chose to pocket in the stipend (for which Facebook pays the tax by the way!) and live with my parents. Almost all of the interns choose to live in the corporate houses, which are situated in various Bay Area cities like Sunnyvale, Mountain View, Menlo Park, Redwood City, and Foster City. The houses are very tidy and nice, but they can be quite different depending on location. From my observations, there was not much social life present in the housing complexes. I didn't really find the energy, and a lot of interns told me that they did not interact much with their roommates. I had the impression that there would be a lot of parties and get-togethers happening, but that was unfortunately not the case. If you're looking for those kinds of people, you have to try a little harder to find them.
Intern-only Q&A Sessions
Some prominent events included Instagram co-founder Kevin Systrom, Facebook COO Sheryl Sandberg, and Facebook CEO Mark Zuckerberg. It's not too difficult to speak directly with the speakers and ask them questions in person; the interns simply line up to ask questions on a first come, first serve basis. There were some very tough questions, like how Facebook should balance free speech and hate speech, or how to address the social anxiety that social media can create. Regarding these sensitive topics, the executives were unsurprisingly very defensive of the company and deflected the questions by listing the steps the company was taking to address the issues. I definitely sensed that they were hesitant to admit the negative effects of social media, which sometimes came off as disingenuous.
Internal PR Events
The highlight for me was the Internal Real Madrid Event. It was hosted by the Internal MPK Soccer group, and the event was so hyped, that the RSVP form filled up within 5 minutes. Literally everyone from the team was there, except Cristiano Ronaldo :( Still, there was Bale, Isco, Marcelo, and the legend himself, manager and former player Zinedine Zidane. At the end, there was also an autograph session, and I got my shirt signed by all the players!
Social Intern Events
Including but not limited to: SF Giants Game, Santa Cruz Boardwalk day, Intern Field Day, Save the Bay Day, and Summerfest Carnival. These events were really a great way to meet new people and make friends. The Save the Bay Day was particularly fun: we went for a few hours to the bay to dig up weeds and spread mulch. For Intern Field Day we went to an off-site sports facility for several hours and played various games like soccer, bubble soccer, foosball, ping-pong, and even tricycling! There was so much to do that day, but I just stuck with soccer the whole time :P Finally, the Summerfest Carnival was an extravagant mini carnival in the middle of the campus for us to play various games and jump around in inflatable slides. These events made the internship experience much more worthwhile and helped me connect with many new people.
Free Bike Service
Every intern has the option to loan a bike, either road or hybrid bike, free of charge. In addition, Facebook has free bike repairs for any kind of bike repair, but you must pay for bike parts. After my brother "borrowed" my bike and the proceeded to crash and damage it, so I took it in and they replaced everything for me, free of labor costs!
Considering Facebook's enormous impact on the world (literally consider its 2 Billion active user base, which spans over half of internet users), Facebook is still considered a small company, at least compared to the other tech giants. The company's "move fast and break things" motto is a truly accurate reflection of the company culture, helping it operate more like a huge startup than a large company. Specifically, there are three factors that support this reasoning.
First of all, the teams are very small. The team I worked under, which is responsible for maintaining Apache Zookeeper, is considered an important backbone of Facebook infrastructure; you would be surprise to know that it consisted of less than 5 people a couple of years ago, and now it stands as a whopping 10 or so full time employees. Interestingly, there were 5 additional interns on the team (including me), making the intern to employee ratio at 1:2. This trend doesn't just stand with my team, it stands across the company. Just from observation and mere speculation, the large number of interns indicates to me that Facebook has plans to dramatically increase its workforce, and it is planning to do so by giving full time offers to the interns.
The next aspect of Facebook that makes it operate like a startup is the ownership it gives interns. Before coming to Facebook, I didn't expect that I would be working on a large project or be able to make a large impact. I also didn't expect that I would have much say over my project or be able to set my own design goals. It took some time for me to realize this and it was very hard taking this for granted, but in retrospect it made working at Facebook a truly fulfilling experience. For all of its positives, ownership has its downsides as well. You feel the burden of responsibility on your shoulders all the time. The ultimate test comes in the final few weeks, where you must extensively test your work and be able to ship it in production.
Finally, interns are expected to be very independent. Asking many questions from your manager is considered a weakness. Rather, you have to be able to make sound judgements on your own and be able to cope with uncertainty. You are encouraged to write code very fast and be prepared to make many incremental changes down the road. I struggled with this at first, because I had come from a school setting, where I was encouraged to carefully plan my work and ask questions. The transition from the school environment to the work environment was challenging, but in the end I found the experience very valuable.
Lessons Learned and Final Thoughts
Coming into Facebook, I had no exposure to working in industry, and aside from my research project, no exposure to large-scale software engineering projects. In the short 12 weeks at Facebook, I learned many valuables lessons:
Be as independent as possible
- Limit the number of questions you ask your manager as much as possible. Before asking for help, try things out yourself - refer to Google, Stack Overflow, and wiki pages first.
- Don't ask your manager to make design decisions for you. Always make the final decisions yourself, and state your own position first before speaking with your manager.
- You don't need to work at the same time as your manager. Your manger does not care where you are all the time, just make sure you update them on your progress.
- The number of hours you work doesn't really matter, it's the quality of your work that really matters.
- For questions regarding how to use tools outside of your team, find those groups and ask them directly, don't ask your team.
Make as much incremental progress as possible.
- You are encouraged write as much crappy code as you want, just write it fast and show progress. It's better than taking hours obsessing over planning and designing your code.
- Work in a parallelized fashion. Always have backup work in case your main work is being reviewed.
- Write unit tests for every feature you create.
Communicate your thoughts on a global scale
- Update everyone on the team about your progress via weekly public posts.
- Try to use group communication as much as possible, and avoid direct communication with a particular person.
- Know how to use version control like the back of your hand before you start your internship.
- Have a general idea of your team's work before you start your internship.
- Concentrate on depth and not breadth. Don't try to learn how Facebook works on an overall scale, you will lose precious time on your own project and fail to deliver at the end.
Have fun and stay healthy
- In order to enjoy yourself you have to stay positive and love your work.
- Take time off when you feel stuck, don't work extra hours when you feel progress is slowing down.
- Take time to attend as many intern events as possible. They are a great opportunity for finding friends :)