Stack Overflow’s Apprenticeship Program

Jon Chan

Stack Overflow launched their Apprenticeship Program, targeting emerging talent from nontraditional backgrounds. Joining the small, but very senior engineering team, the Apprentices generated valuable engineering input and provided key insight. Read on to learn more about how Stack Overflow’s Apprenticeship Program led them to offer two full-time roles to Apprentices following the program.  

Jon Chan, right, interviewing a candidate. 

Jon Chan, right, interviewing a candidate. 


I remember my first day as an engineer walking into Stack Overflow. It was surreal. I didn’t think meeting the engineering team was possible, let alone being part of the engineering team. I’m a self-taught developer. I didn’t learn to code through college or a bootcamp. I never thought programming would become my job, and for the longest time, I didn’t think anyone else thought it could be either given my nontraditional background.

Four years later, I’m still at Stack Overflow. I know for others coming from nontraditional backgrounds in tech, I might be describing a familiar feeling. With the wave of people learning to code in the last few years, there are folks from all walks of life that are now just becoming professional engineers. So in 2016, when Stack Overflow considered bringing on apprentices to the engineering team, I was very excited. I wanted to see if we could open up opportunities for people who were just like me to join our team, and the company was too. We knew that teams made up of people of all backgrounds, educations, and identities were stronger, and bringing in local, junior talent from places like bootcamps was a great first step in the right direction.

Yet, there was some hesitation. At Stack Overflow, we have a relatively small, but very senior engineering team. We were afraid that mentoring junior talent would take up too much of a more senior engineer’s time and lower our overall output. It’s a justification I still hear from other tech companies, but we thought the upside was worth the risk. Plus, we had two engineers that were enthusiastic about mentoring the apprentices, myself and my colleague Kirti. We were both willing to make the time needed to make the program work, and I imagine for many teams, there are engineers who are passionate and willing to make the time too.

After the initial discussions, we started sourcing candidates for our apprenticeship. We decided to target coding bootcamps, and ultimately partnered with Full Stack Academy and Flatiron School to find people to interview. There were two reasons for this. First, we wanted candidates specifically from nontraditional backgrounds, and bootcamps made it easy to find them. Second, we knew there would be a batch of candidates who would be ready for an internship that led into a full-time position, instead of going back to school after the summer.

The interview itself was an abbreviated version of our traditional engineering interview process, ultimately consisting of an application, behavioral interview, and a technical interview. If candidates passed each stage, they would move on to a final “as-appropriate” interview with an engineering manager to fill-in anything else we wanted know and sell the candidate on the opportunity. We ultimately made two offers for our apprenticeship program.

With Kirti and I assigned as their mentors, it was time to get our two apprentices onboarded. I think this is where our focus on building process and self-directed learning on the engineering team really shined. Much of an engineer’s onboarding is largely templatized and automatic. This was the case even before we had apprentices. All engineers go through a standard onboarding called “Stack University” which consists of a checklist of items to be completed each week by the new hire and the mentor. Each item could link off to a document to read, a person you would need to setup a chat with, or other info that a new hire could do themselves. An engineer’s first day might look like this:

  • Mentor: Send an email to the all-engineering mailing list introducing the new addition

  • Mentor: Have new hire configure 2-factor authentication for their Google account

  • You: Review the company wiki

  • You: Configure VPN and make sure that it works

  • You: Schedule a 30 minute call with the VP of Engineering to introduce yourself

  • Much more…

With some tweaks, “Stack University” could cover the entirety of the apprentice’s time with us. It covered everything from interviews with team members who knew about important parts of the codebase, major milestones in a project, and all the documents to read. The same goes for our performance review rubric, machine setup, and more. By having a documented, repeatable, and self-directed onboarding ahead of time, managing the apprentices was a relatively low lift. Kirti and I weren’t spending our time away from our “regular” work gathering information and teaching, and instead, we could serve as guides if the new hire got into a snag.

Over the course of three months, we did everything we could to make sure the apprentices felt like every other engineer on the team, had an opportunity to learn all the technologies we were using, and work on a “graduation” project that was a prototype of some feature on the site. The first few weeks were focused on learning our technology stack and building a toy “ping pong” app to exercise knowledge of our systems. From there, the bulk of the program was working on building production features just like any other developer would. The final few weeks were dedicated to the graduation project, which was presented to the entire engineering team at the end. We also made sure there were talks from other senior engineers, meetings with leaders in different departments, and casual socials sprinkled throughout. We were committed to creating an immersive program by largely evolving our existing processes and customizing it so it was more fitting for junior talent.

In the end, we benefited a lot by having apprentices. They generated valuable engineering output, the program pushed a very senior engineering team to be more considerate of junior and nontraditional talent, and of course, two full-time hires! They’re both still with us. I’m excited to see how we can continue to evolve our program and make opportunities available to anyone—especially the underrepresented—who wants to enter our industry. If you want to learn more, please reach out!

For more resources, download the Associate Engineer Playbook here.