Facebook Engineering Bootcamp

By Boz on Thursday, November 19, 2009 at 4:51pm

One of the statistics we are most proud of at Facebook is our ratio of users to engineers. When I joined the company in January of 2006, we had 5 million users being supported by about 15 engineers, a ratio of about 300,000 users per engineer. We have more than doubled the size of our engineering team every year since then, but our user growth has far outpaced us. Today there are roughly 1.2 million users per engineer.

In the summer of 2008, as the engineering team was poised to pass Dunbar's number, we decided to try something new to help us scale. Every new engineer that joined Facebook, whether a recent college grad or a new director, would go through an intensive six week program designed to immerse the new engineer into our code base, give greater flexibility in choosing a project, and promote the types of habits that would allow us to scale up our organization. That program is called Bootcamp.

The primary goal of Bootcamp is to get people up to speed on our all parts of our code base while promoting good habits that we believe will pay dividends in the long term, such as fearlessly fixing bugs as we come across them rather than leaving them for future engineers. We have high expectations for our engineers and part of Bootcamp is making sure those expectations are met. A small number of rotating senior engineers serve as mentors and meet with the new engineers regularly to coach them on how to be more effective at Facebook. The mentors review all the bootcampers' code and even hold office hours to answer any basic questions that engineers might otherwise be too timid to ask. Senior engineers from across the engineering team also give a bunch of tech talks on a broad range of the technologies we use from MySQL and Memcache to CSS and Javascript. Even with all this support, most bootcamp graduates agree that the most valuable part of bootcamp is the tasks they are assigned. Engineers have real work assigned to them the first time they open their laptops and many push code to the live site within their first week. Whether it is fixing bugs from the live site, building internal tools, or making improvements to our infrastructure, most bootcamp graduates agree that there is simply no better way to learn than by diving into the code.

Bootcamp also helps educate engineers about the many opportunities at Facebook, ensuring that they wind up on the teams and projects that they are most passionate about and where they feel they can make the biggest impact. Instead of assigning engineers to teams arbitrarily based on a small amount of interaction during interviews, bootcampers choose the team they will join at the end of their six weeks. This gives them an opportunity to meet with the various teams and even fix some bugs in the different code bases before committing to join a team. They also have access to Facebook's strategic priorities so they know where they will be able to have the largest impact and can weigh that against their interests. We believe Engineers are at their most productive when they work on things they are passionate about. Matching engineers with the teams that they are excited to join and where they can have a big impact is one way of achieving that goal.

As the program has developed we've noticed a number of additional benefits. One of the most obvious perks is that we now have a pretty large workforce of highly motivated and talented engineers working on bugs that might not otherwise get engineering attention. In addition to that, by centralizing the mentoring and onboarding responsibilities, we've greatly decreased the costs hiring has on the rest of the organization in terms of time spent showing people the ropes and keeping our standards consistent, which allows us to take our rapid organizational growth in stride. The Bootcamp mentor program is also great opportunity for developing leadership internally, essentially serving as a meta-bootcamp for potential managers and technical leaders. Perhaps one of the most surprising and positive results has been the fact that bootcampers tend to form bonds with their classmates who joined near the same time and those bonds persist even after each has joined different teams fostering cross team communication and preventing the silos that so commonly spring up in growing engineering organizations. Finally, bootcamp provides us with a unique opportunity to take our experiences working with new engineers and use it to fine tune our interview process in a very tight loop to figure out what types of things to look out for in resumes, references, and interview feedback.

The Bootcamp program, like most things at Facebook, is constantly evolving to better fit our needs. Some of the improvements are just a matter of incorporating feedback we get from the many talented engineers in Bootcamp at any given time. Perhaps more revealing about the program, however, is the fact that many former graduates of the program have returned as mentors to help improve the program that helped them when they first joined. Together, we work hard to make sure that every engineer has all the tools, knowledge and support to be able to hit the ground running and make changes that positively impact hundreds of millions of users, whether it is your 1st week or your 201st like me.

Andrew Bosworth is the Bootcamp drill sergeant.