With internship season in full swing I’ve reflected on last years internship memories and lessons. Interning at Facebook was a very valuable experience, and I’ve written this post to shed light on my journey and experience, in hopes that is useful for incoming interns or anyone that is interested in joining Facebook.
Last year (July — October 2017) I completed a Software Engineering internship at Facebook, Tel Aviv. I worked on the Express Wi-Fi team, which is part of Internet.org. Internet.org aims to solve the social, economic and technical barriers to connect the 4 billion people without access to the internet.
I applied to Facebook through Facebook! I submitted my resume via the careers section.
At the time, I was an undergrad student in Israel at the Technion, and had a nice collection of hacks, projects, and failed start up attempts 🙃🙃🙃🙃🙃
One thing that stood out about the Facebook application process, in comparison to other large tech companies, is that you are not required to submit a grade sheet. Facebook loves recruiting engineers who are builders, and I think this approach stems from the belief that a high GPA is not necessariliy an indication of strong engineering skills (although it can help!). This gives the hackers and builders a chance to shine and show off all the cool stuff they’ve built.
After submitting my resume, I had a phone call scheduled with a London-based recruiter. It was a short non-technical conversation where she told me about the company and asked me a few questions about my interests and experiences. After this we scheduled an interview that took place at my university’s campus.
I won’t dive too deep about the actual interview process because there is a ton of accurate information available online regarding this. The interview questions and required preparation is pretty similar to prepping for a Microsoft / Google / <BIG_TECH_COMPANY> interview. Know your data structures and algorithms well. Cracking the Coding Interview is a highly recommended book throughout the industry, although I didn’t have time to sift through all 700+ pages. I used online interview sites like HackerRank and LeetCode.
One thing that I learned in retrospect is that interviewers really want to see you do well. My experience is that they’re not going to approach you with nefarious, evil dynamic programming questions just for kicks (although we’ve all heard horror stories 😱 😰😱 😰😱 😰😱). Interviewers take time out of their schedule to interview candidates, and the goal is to find people who are the very best at what they do. So, try to be as relaxed as possible, and focus on the task at hand!
A couple of interviews later I had received an offer 😎😎😎 I was really excited to find out what happened next! About 3 months prior to team selection, Facebook sent out an email where we were asked about our technological interests, fields we’d be interested in exploring and fields we did NOT want to work in. Take time in thinking about this and research the projects available at the site you’re going to join. Facebook uses a strength-based approach. It’s really important that everyone gets to work on what they are passionate about, as they believe it is a crucial component for high quality work and success. They take these preferences into consideration and try to find you the best match possible given the available teams projects and needs. 4 weeks later, I got a phone call from the intern director who let me know I was set to start at Express Wi-Fi!
Being as excited as I was to start, I wanted to prepare for the internship by learning about relevant technologies. This ends up being a bit tricky as you don’t know what project and tech stack you’re going to work on until a few days into the internship. One thing that I recommend learning if you’re not already familiar with (whether or not you’re coming to Facebook!) is version control! You’ll be using this on every team at Facebook and hopefully any other company you end up at. Facebook uses Mercurial. You could learn it or learn git. The concepts are similar and knowing the basics of version control makes it easier to submit / iterate on your work. It is important to mention that as an intern Facebook isn’t expecting prior domain specific knowledge. Projects are selected carefully for this reason, and interns are expected to learn and ramp up on the relevant tech stacks. This can sound daunting, but Facebook provides a lot of internal wikis, videos, and general help for learning internal technologies. For the open source technologies (Android, iOS, React, php etc.) Google and Stack Overflow are your friends 😄😄😄😄😄. My projects consisted primarily of writing hack and interacting with Facebook specific backend frameworks. There was no real way to familiarize myself with the tech prior to beginning of my internship, but it was completely fine. I was given the time to learn and ramp up and had an excellent intern manager who helped me along the way.
In general, a Facebook internship is a 12 week process. Each intern is assigned to a team where they are assigned a specific intern project. Your main goal during your internship is to complete the project successfully and ship it to production. For the first week of the internship all the Tel Aviv interns were flown out to the London offices for an orientation week. This was a lot of fun, as you will have time to explore the city, get to know other interns, and explore the amazing London offices.
After a week we returned to the Tel Aviv offices to begin our internships.
I started working steadily on my project and began to feel familiar with the codebase, while getting to know my team. My team and intern manager were super welcoming, friendly, and helpful. Hanging out with my team was fun, and ultimately the people at Facebook are one of the strongest reasons to join! During my internship process, I was given a lot of ownership on my project and freedom in code architecture and implementation. It’s not all work though! There are frequent office events such as hackathons, BFF outings, and more.
Me (left) and Avner (right), at one of the company hackathons
During this period, I learned a lot about software architecture and workflow at a scale as well as approaches and constraints regarding developing software for developing countries. (hint: not all mobile browsers run Javascript!). At the end of each week you have a 1-on-1 with your intern manager. Use this as an opportunity to get feedback on how you’re doing and where you can improve. In addition, use every meeting as a chance to give your manager an in-depth update about where you are in your project, what’s going well, and what is challenging. Around 6 weeks into the internship there is a mid-point review where interns are evaluated. You get detailed feedback about how you’re doing and whether your “trending towards an offer or not.” If you’re trending towards an offer don’t take your foot off the pedal! If you aren’t, there is still time to improve and get an offer. Either way, your status, strengths and weaknesses shouldn’t come as a surprise at this point as you have weekly 1-on-1’s where you should be getting a steady stream of valuable feedback.
Here are my 2 cents on what helped me make my internship successful, and ultimately receive a full-time offer.
You’re going to be working on one of the largest codebases in the world. At Facebook’s scale and engineering speed, you’re going to have a lot of “what is going on?!” moments. Learn how to use the resources available to you. Facebooks code base is a huge monorepo, so you can always search to see how different pieces of technology were implemented or used throughout the company. In addition, there are Workplace groups (Facebook for work) with helpful discussions and company wikis and videos. If you can’t find the information you need to move forward, ping a team member. In general, I like to consult with team members after I’ve tried a few things myself as this makes the “debug” process easier and more efficient.
Submit code early and submit code often. Submitting / sharing your work early is going to give you more time to iterate on it. Pushing code regularly helped me avoid ‘code paralysis’ where I would feel too overwhelmed and unsure about how to start a certain task.
Your internship project is likely going to be composed of smaller stepping stones and functional blocks. Spend time breaking down how you’re going to approach each challenge and work diligently. I liked working with a pen and notebook to scope out my tasks and cross them out when completed. Find whatever system works for you, and keeps you focused and on point.
my handy dandy notebook
Don’t be that intern who is oblivious to his surroundings! The people at Facebook are fantastic, and an internship is a great opportunity to get to know the people you’re going to work with. There are many events for office employees, so be sure to go out and relax with your work buddies! It’ll make the experience a lot more enjoyable 😉😉
Beach event for the interns
More isn’t necessarily more. If you’ve worked too many hours and are no longer efficient, recognize that and take a break or stop for the day. The internship (and full-time work later!) is a marathon and not a sprint. There are a lot of fun things to do around the office and clear your mind if you’re stuck on a task. Take advantage of that. The view from the offices are pretty calming too!
I’ve recently started full time at Facebook Tel Aviv, after completing the Software Engineering “bootcamp” in London and Silicon Valley. I was lucky enough to be able to rejoin my team at Express Wi-Fi. I’m currently working with Android, React Native, GraphQL and a bunch of awesome technologies for an amazing cause.
Lastly, we’re always on the lookout for great people! If you’re interested in hearing more about my experiences feel free to reach out or leave a comment below ✍️✍️✍️.
If you’d like to connect feel free to follow me on Medium, Instagram, Github and Linkedin, where I regularly post on tech adventures, hacks and startup related content ✌️✌️✌️✌️💻💻💻💻