Building LinkedIn's New Engineering Bootcamp
August 12, 2015
Jeff Weiner famously compared managing a company in hypergrowth to launching a rocket - “If your trajectory is off by inches at launch, you can be off by miles out in orbit.” We believe that a similar comparison can be made for employees joining a company in the midst of hypergrowth. After several years of delivering an onboarding class for new software engineers, we decided it was time to reevaluate the effectiveness of the program and design something that is better suited for where LinkedIn is now and where it is heading. Here’s how we did it.
Measuring Gaps and Analyzing Learning Needs
We began our process by analyzing feedback from new software engineers and their managers, as well as assessing readiness or confidence with standard tools, services and best practices. A few things became very clear:
- With a lecture format, our prior onboarding class felt too much like delivering a firehose of information
- Our engineering new hires needed more practical applications of what they learned in class
- The breadth of content felt like it was spread thinly without any exposure to our actual codebase
- Some new hires expressed a lack of confidence using our internally-built tooling and deployment workflow
- At few times, basic services and APIs were being recreated and best practices weren’t being followed
Additional metrics were recorded and benchmarked, including new hire demographics, the time spent to make the first and tenth code commit, and the Net Promoter Score (NPS, our standard recommendation and satisfaction metric) of the class after a new hire’s first and fourth week.
Designing A World Class Learning Experience
Based on our findings, we challenged ourselves to build an accelerated learning program that new engineers can complete during their first week so that they can be job-ready and empowered to ship code to production as early as their second week at the company. As a stretch goal, we wanted to enable new hires to develop and deploy their very first back-end service using our Rest.li framework and first front-end application using Play.
To make this possible, we made the difficult decision to narrow our focus and audience to software engineers, which make up the majority of our engineering new hires. We removed content optimized for data scientists, site operations engineers, client-side web developers, and UX designers. While scoping the content, we focused on how we build software at scale.
After a thorough content analysis, we proposed a design that incorporated the following learning objectives:
- Build a back-end web service and a front end application. Deploy them to our Early Integration (EI) datacenters.
- Utilize the breadth of our toolset, including IDEs, version control software, Play+Gradle, inGraphs, our Change Request Tracker, curli (our customization of curl), Quick Deploy against EI (QEI), Autometrics, performance tools, and more.
- Follow best practices such as using Rest.li for RESTful web services, making non-blocking calls to remote services, doing trunk development, using our ramping and A/B testing tools, searching for and leveraging code that’s already been deployed, following strong information security practices, following our standard testing protocols, and conducting a meaningful code review.
- Navigate through our codebase and understand our topology of microservices.
- Understand the systems we use to manage our online, offline, and nearline data, including Kafka, Hadoop, Databus, Espresso and Voldemort.
Along with having the right scope of content, it was of utmost importance to design an engaging learning experience for our new engineers. We strongly believe in the philosophy of learning-by-doing. We want to challenge the skills of our new engineers while giving them the freedom of creativity. To help do that, we developed a bootstrap multiproduct codebase from which our new hires can learn and begin to develop. These foundational multiproducts help teach how a simple profile is updated and returned using a Rest.li method, and how that profile can be displayed to the client using Play and Dust.js.
An important component we incorporated was a Bootcamp Mentoring program so that experienced LinkedIn software engineers can participate and help set up our new hires for success. In this component of the class, passionate back-end and front-end engineers help guide our new hires as they develop their first application by teaching best practices, answering questions, giving feedback and challenging their cognitive and technical limitations.
Finally, we designed the last day of each class as an opportunity for our new engineers to demonstrate what they built during the week. Each demonstration follows the simple structure of: what they built, how they built it, and what they learned. The demonstrations are followed by questions, feedback and praises.
Through these methods, we hoped to achieve the following onboarding goals:
- Provide a very delightful and inspired first impression of LinkedIn Engineering
- Provide a better understanding of our engineering culture and how we build great products at scale
- Introduce new hires to their teams with a higher level of knowledge and skill
- Increase our new hires’ speed to productivity
- Enable new hires to leverage tools and software that have already been built
- Reduce confusion, anxiety and fear that some new hires may experience during their first few months
- Reduce the use of hacks and increase the use of best practices
Our final design resulted in a blended learning experience of formal classroom presentations, hands-on team-based coding exercises and challenges, tool explorations and online learning support.
Delivering the Classes
At the end of Q1 this year, we delivered two back-to-back pilot classes with about 40 new engineers, including the incoming team from Refresh. While a bit chaotic, our initial pilot was successful with a 53 net promoter score and lots of lessons learned. We discovered that remotely developing on Linux workstations became too time consuming with logistical challenges, so we had to make the compromise of developing locally on laptops. We also surfaced necessary bug fixes to our bootstrapped codebase, as well as shifted some focus on harder-to-learn tools such as QEI. With logistical and foundational limitations out of the way, we were given room to try something crazy: we made our coding exercises even harder, thus challenging our new hires’ technical expectations even more.
In Q2 we began delivering and measuring our Engineering Bootcamp at a weekly cadence. Each week, our engineers come to class to learn, build relationships, challenge each other and build impressive software at a speed that they may have not thought was possible. To date, we have onboarded over 170 software engineers, consisting of both new and existing employees, including folks from lynda.com, Slideshare, and our NYC and Dublin engineering offices. A resounding response to the class led to a waitlist of over 60 experienced LinkedIn engineers.
We measure the class in three ways: Initial impression of the class (Level 1 evaluation), readiness and confidence after 30 days (Level 3 evaluation), and speed to productivity (Level 4 evaluation).
Based on these measurements, we were able to surface the following results when compared to our prior onboarding program (to date):
- Net promoter score after first week: 46.3% increase
- Net promoter score after fourth week: 158% increase
- Increased knowledge and skill retention of:
- Codebase navigation
- Trunk development
- Information security
- Build pipeline and related tools
- Performance tools
- A/B testing tools
- Time to first code commit: 50% decrease
- Time to tenth code commit: 50% decrease (preliminary data only)
As we continually work on improving the experience of Engineering Bootcamp, we are exploring ways we can scale it. To strengthen the post-Bootcamp experience, we are developing ramp-up frameworks that new hires can follow when they join their individual teams. We are also developing broader strategies that address global technical learning needs through LearnIn and Tech Academy, our new learning and education program for engineers.
We’d like to thank all of the engineers that have contributed beyond the scope of their roles to help make our Engineering Bootcamp successful. Contributors: Tim Worboys, Sanjay Dubey, Peter Poon, Oleg Anashkin, Gururaj Seetharama, Hardik Bati, Steven Ihde, Bryan Barkley, Keren Jin, Ruobing Li, Ben Lai, Tom Quiggle, Mark Wagner, Anthony Hsu, Cory Scott, Pavi Ramamurthy, Ben Goldsbury; Mentors: Yanqing Zhu, Jay Ramamurthi, Fan Chen, Sriram Palacharla, Dan Deng, Junjie Hu, Shane Hill, Nishant Lakshmikanth, Ravneet Khalsa, Adam Leon, Steven Heidel, Gayathiri Lakshmanan, Sam Wu, Shan Zhou, and Vincent Yu.