My Facebook Bootcamp Experience
September 01, 2021
5 min read
Disclaimer: these are my personal opinions: I’m not speaking on behalf of Facebook, nor am I discussing anything remotely confidential.
I’ve recently joined Facebook as a software engineer, having graduated from university just a month prior. Having just selected my team (Messenger Privacy Experiences) and “graduated” bootcamp, I’d like to share what bootcamp is like, and why I think it is one of the best things about joining Facebook.
This post is a work-in-progress (being part of my digital garden) and will continue to be updated over the coming days! These are currently just some initial thoughts
Facebook’s philosophy to hiring is different to most companies in that rather than hiring for a specific team, you’re hired just based on your role: e.g. software engineer (in my case), data scientist, product manager.
When you join Facebook, regardless of the level you are hired, you then go through a 5-8 week “bootcamp”, where you first go through a curriculum that teaches you the technologies used at Facebook for your specific skill, and you then go through the team selection process to pick the specific team you’ll be working on.
Much like any other company, the first few days are spent learning about the company values and culture. I’ll say this, it was definitely far more enjoyable in-person back when I interned in 2019, but that’s the reality of the work-from-home pandemic life.
From this, you split into two streams of videos: the onboarding videos that are about Facebook culture, and the Bootcamp Basics curriculum that guides you through Facebook’s development tool workflow. In a nutshell, this teaches you breadth rather than depth.
I’d say that as a returning intern, a lot of this core curriculum was already familiar to me so my goal was to just get through these as fast as possible (2x video speed).
Throughout your bootcamp, you’re assigned a bootcamp mentor who’s kind of your “manager” throughout bootcamp - they graduate you and you work with them to set reasonable expectations. In my case, we established that it probably didn’t make sense to do the introductory bootcamp tasks and to focus instead on team selection.
Bootcamp tasks are small tasks (e.g. fix a bug, refactor this code, implement this small feature etc.) assigned by teams that Bootcampers can complete to get more familiar with the codebase. They’re typically given levels 1-5 based on complexity and your mentor assigns you a task or two to do each week, increasing in levels each week. However like I said, this is flexible, I ended up picking tasks I found interesting and skipped introductory tasks.
You’re also assigned a “squad” of 3 other bootcampers to complete bootcamp with. I think this is probably the aspect of bootcamp most affected by the pandemic, as although we met up in person after work, you miss out on the serendipitous conversations around the office, or the other social events described in my internship post. I’ve tried to be as social as possible, reaching out to people I hung out with back in my internships, but it does feel like we’ve been robbed.
Once you’ve onboarded, it’s now time to specialise further: through choosing a focus path curriculum (Web, Backend/Systems, Machine Learning, iOS, Android) and through sitting with teams.
The next stage is team selection: a two-way reachout process between you and the teams that are currently looking for headcount (new team members). During this process, you speak with team managers and sit with the teams you’re interested in, each for 2-3 days. During this you complete a task, speak to the members of the team and attend their meetings to understand if their product and roadmap is a really good fit.
This reachout process is done via a “jobs” tool that is effectively like a bulletin board where teams advertise openings for different levels and roles (e.g. IC3 Product Generalist), and where you fill out a profile and upload your résumé. The best way to describe this is like applying for jobs, except without the stress - as you know you have a job at Facebook sorted. And the lack of stress can’t be understated as I have heard of stories of friends at Google who got the offer, but subsequent got the offer rescinded because they didn’t find a team at the team-matching stage.
Now, yes there’s a chance you could join Facebook and not find a team you’re interested in but I think it’s really rare. Speaking from personal experience, I found I had the opposite problem: lots of exciting teams (around 30) reached out that I found hard to narrow down.
Everything from the Spark AR Growth team, to Whatsapp and Messenger Privacy teams, to Integrity teams! I actually jumped the gun and reached out to teams informally from Week 2 because there were so many to choose from :P
I asked friends and even tweeted asking for advice - shout out to Cody Engel (whose youtube channel you should consider subbing to) who was super helpful in giving an external perspective.
In the end, I ended up choosing the Messenger Privacy Experiences team as it’s a product that really excites me and I am so looking forward to tell to telling you about the features I’ll help ship in the future!
Typically you pick the focus area to learn skills relevant to the role you’re looking for. In my case, as a Product Generalist, the web path I chose was Web, although it turned out that interning in a web full-stack team teaches you pretty much everything in that focus area (React, Relay, GraphQL, Hack etc). I would say though that the videos were well-structured and would have been ideal at the start of my internship.
Having finished that early, I had some spare time, so I decided to do the iOS focus area, as the Messenger Privacy Experiences team had a greater need for an iOS engineer, and I don’t mind learning a new tech stack. Having said this, it has made ramp-up much harder, as I’ve never used Objective C or developed for iOS before, although I guess FB’s Messenger codebase is pretty custom iOS (see the Project LightSpeed engineering post).
I would categorise these videos as good for an introduction, so at least you’ll know what the name of a technology refers to, but you will need to dive into the code or the internal wiki to really understand the features presented. There are a lot of videos though, so sometimes I just skipped through them and headed straight to the wiki.
I think the video fatigue is again just a symptom of the work-from-home crazy pandemic time we live in, and I presume this is much more engaging in person!
So technically you can only graduate after week 5, but I jumped the gun again and started working for the team in Week 4! Your bootcamp mentor graduates you when you’ve found a team, the team manager is onboard with you joining, and you’ve completed the bootcamp curriculum and completed enough bootcamp tasks.