An Update on the REACH Program

August 24, 2017


Co-authors: Shalini Agarwal, Joel Young, Ali Mohamed, and Yi Shen


Earlier this year, we kicked off our inaugural REACH program, which brings in software engineers from non-traditional tech backgrounds to apprentice at LinkedIn for six months. Our goal is to provide an entryway into a full-fledged engineering job for talented people that might otherwise be overlooked. The recruiting funnel at LinkedIn and other similar companies often overlooks these individuals because they don’t have the right schools, degrees, or prior work experience on their resumes. With REACH, we are testing our hypothesis that what matters when hiring coders more than their resume is solid technical chops, a willingness to learn, and alignment with the core values of the company.

With a little over a month left in the inaugural cohort, we’d like to reflect and share some insights from REACH managers and mentors on the work that’s been done. Additionally, for folks who are considering future engineering apprenticeships but aren’t exactly sure what this entails, we shed some light on what this first cohort has learned and the trainings they’ve completed.

Areas of focus for apprentices

Overall, we feel that REACH has been a great success so far. Many of our employee managers and mentors have been blown away by the technical skills our apprentices possess, and our cohort has had the opportunity to add to their skill sets by working alongside their LinkedIn managers and mentors—more on this below. Even though they’ve only been with us for a few months, many of our REACH apprentices have done impressive work on different projects for the engineering teams they’re embedded in. The typical project for an apprentice might be developing a new server-side feature for our flagship mobile platform or improving the interfaces for our internal data analysis tools. But apprentices have been assigned to a wide variety of engineering teams throughout the company, some of which have their own special skills required of apprentices.

For example, the Federation Infrastructure team at LinkedIn is responsible for designing, deploying, and maintaining many of the systems that serve recommended content for LinkedIn’s 500 million members. This team also facilitates interactions for our customer-focused products, such as LinkedIn Sales Solutions. Given that the Federation Infrastructure team is heavily focused on site speed and needs to optimize code up-and-down the stack, they needed an apprentice that had low-level programming experience. For this apprentice, one of the big focuses has been on efficient coding skills and optimization. Specifically, the apprentice on this team has been working to develop their knowledge in the following areas:

  • Refactoring code and fixing bugs

  • Helping with enhancements of our debug and explain frameworks

  • Assisting with migrations to a new workflow systems

  • Creating unit tests and integrations tests

  • Engaging in code reviews, sprint planning, sprint demos, and daily standups

  • Studying parts of Introduction to Algorithms and starting to get a working understanding of algorithms and datastructures

  • Studying ParSeq and similar asynchronous workflow abstractions

This is not an exhaustive list of topics that apprentices should understand, or even a typical overview of an apprentice’s responsibilities, but rather an example of one apprentice and one team. It’s a great illustration of one of the lessons we’ve learned from the program so far, though, which is that apprentices may need specialized training depending on the team. For instance, we’ve found that apprentices may need team-specific orientations depending on if they’re working on frontend or backend systems, in addition to our general orientation process.

For other companies looking to create programs similar to REACH, here's a high-level overview of some of the topics we covered in our onboarding training sessions to help set our apprentices up for success. While many of our apprentices already had a solid grasp on these skills before they joined the program, we've found that covering a general syllabus like this helps make sure everyone is on the same page, particularly as it pertains to the way these tools are used specifically at LinkedIn. This list may also be a useful overview of what the training process is like for individuals interested in applying for future apprenticeship programs.

  • Understanding logs and debugging code

  • Computer science concepts

    • Data structures

    • Algorithms

    • Complexity theory

  • Programming language-specific domain skills

    • Java, related frameworks (e.g., Spring)

    • HTML, CSS, DOM, and Event APIs

    • JavaScript and related frameworks (e.g.,  Ember)

  • Architectural concepts

    • Client/server architecture

    • Caching

    • Networking

    • Tracking

    • Microservices

    • Concurrency

    • Physical versus virtual memory

Training for these skills has included a combination of on-site group sessions supplemented with optional, recommended online resources. In addition to materials that are freely available (through MIT’s OpenCourseware and similar sites), we recommend a range of courses from LinkedIn Learning, Coursera, and edX for our apprentices.

Beyond the technical skills outlined above, we also believe in the importance of maintaining a positive culture within the engineering department at LinkedIn. Part of this positive culture involves an eagerness to continually be learning and improving, which is why we've also encouraged our apprentices to go beyond our basic training and regularly ask themselves and their managers "What else should I learn?"

Sharing feedback and looking ahead

“Checkpoints” have been incorporated into the program as more formal touch points to ensure the apprentices receive regular and timely feedback from their managers. These checkpoints help to focus the apprentices on areas where they need further improvement and practice. This is also where the apprentices receive a temperature check as to whether they are trending towards being hired as a full-time SWE at LinkedIn at the end of the program.

As we look ahead to the last month of REACH, we’re excited to continue watching the great work our apprentices are doing, and feel confident that some will be offered full-time positions on their respective teams. We’re also beginning to think about what future REACH programs might look like. Even though we haven’t completed our first session yet, we are already learning how REACH can benefit both parties involved: the engineers from non-traditional backgrounds that we hire, and our engineering teams. For this reason, we’re looking forward to beginning plans for the future of REACH.

We’ll post an update when this cohort finishes their time in the program, in which we’ll share our final thoughts, lessons learned, and additional insights we’ve gained along the way. Stay tuned!