Talks

Start your own engineering apprenticeship program

With a surge of over 1.3 million technology sector jobs by 2020, companies will continue to struggle filling these roles because of a widening skills gap. Technology companies survive by their ability to hire and retain fantastic employees. With software engineers that means delivering an environment that offers autonomy, opportunities for learning, and values craft. Technology companies employ people who can learn, who love it, and those inspired to keep doing it – “life-long learners”. But, how do you foster that in emerging developers? Such that they have sufficient foundational knowledge to build a meaningful career, and that they are provided the tools to continue to bridge knowledge gaps in our ever-changing industry.

An apprenticeship program helps all your engineers understand your technology platform, culture, and shared vocabulary, so they can meaningfully contribute earlier and better. Learn how to develop and implement a robust apprenticeship program that creates a solid and continuous pipeline of talent that will grow your business. This talk is about learning, how to get started, keep motivated, self-assess, and other useful patterns.

RubyConf TH 2019

00:00:06.490 Hi, so everyone wants to hire senior developers, right? Everyone's looking for them. The demand to increase headcount in many tech companies is rising even with the difficulty in hiring top talent. To combat this, some big companies have removed the required college degree barrier to entry. However, despite the availability of online training and various boot camps, our industry faces a surplus of bright junior developers but a lack of engineering positions.
00:00:26.500 Your people are the most important and valuable resource. You can only innovate if you have the right talent with the right skills. Currently, traditional hiring practices are not meeting the demands; companies need new solutions. Implementing an apprenticeship or upskilling program is one such solution.
00:00:49.870 I run a six-month apprenticeship program for Harue, now Qantas Hotels, in Melbourne, Australia. It was considered a great success, and we are currently examining options to run it again. By definition, an apprenticeship involves training in a trade or craft through a legal agreement defining the duration and conditions of the relationship between the master and the apprentice. An apprenticeship program allows employers to evaluate talent and provide apprentices with a structured learning period.
00:01:11.920 The nature of the apprenticeship is to enable the apprentice to learn a great deal about the company and the industry in a short amount of time under guidance and mentorship. When we talk about apprenticeships, we usually refer to three terms: an apprentice, a journeyman, and a master.
00:01:39.159 Apprenticeships have been around for thousands of years, generally lasting between two to seven years, depending on the particular trade. The term 'journeyman' derives from the French word for 'day,' signifying that the journeyman would be paid by the day for their work. After extensive experience, a journeyman could submit a piece of their work to the appropriate guild for assessment and approval. If this masterpiece was accepted, they could become a master craftsman and set up their own workshop to train apprentices.
00:02:19.870 Now, how is an apprenticeship different from an internship? By definition, an intern is a student or trainee who works, sometimes without pay, to gain work experience and fulfill qualification requirements. Interns typically focus on one specific project, doing the more menial tasks, and are generally involved in short-term engagements.
00:02:30.400 On the other hand, an apprentice is a person who learns a trade from a skilled employer. They agree to work for a fixed period at relatively low wages. Apprenticeships focus on on-the-job training, sustainable growth, and longer-term engagements with real applications. They involve dedicated mentoring, and the classroom instruction relates to the occupation where the apprentices can hone their craft.
00:02:59.200 Apprenticeship programs usually include evaluations of talent, and completion often results in a full-time role. Now, why should you start such a program? First, hiring juniors improves teamwork and enhances diversity, expanding your candidate pool and fostering support for diversity initiatives.
00:03:30.489 A diverse background and skillset improve overall performance as diverse teams tend to perform better. This approach increases productivity and supports clearer explanations and better understanding of the codebase. Along the way, documentation occurs, and communication becomes explicit between team members. Hiring juniors also supports team development by improving retention as employees are trained in best practices and company processes.
00:04:02.940 Moreover, it gives employers a competitive edge through a well-trained and flexible workforce. It addresses the skill gap between seniors and juniors, supports the scaling of fast-growth companies, and saves time and money on recruitment and onboarding talent.
00:04:41.919 So, what do you need to begin? At a minimum, you need an apprentice, a mentor, and a company willing to make the investment. Company buy-in is crucial; you will need senior leadership support—leaders who want to build a talent pipeline to grow the company. It's important to recognize that it will take time and resources to ensure the success of your program.
00:05:03.419 Additionally, team buy-in is essential; your team must be willing to mentor and work directly with apprentices. Apprentices succeed when the team is dedicated and committed to working with someone new. You will also need a person responsible for driving the program, whether that is a dedicated program manager or a mentor.
00:05:40.950 How do we start one? First, we need to understand the needs of the company. Consider factors such as the length of the program: Do you want it to last three months, six months, or twelve months? How many apprentices can your team support? Who will oversee the program? What should apprentices know before starting the program? What should they learn during the program, and how should they learn?
00:06:01.870 You should also develop a plan for defining realistic expectations regarding outcomes at the end of the program. Set timelines, plan how to source and hire apprentices, and develop logistical processes around the program. Establish a budget as well.
00:06:30.130 When sourcing candidates, consider how to recruit and screen candidates effectively to ensure all requirements are met. Decide on what you're looking for, determine pay grades, establish promotion channels, and define the hiring process for beginner levels. Set specific dates in the calendar for these hiring processes and select a hiring committee from your team, making hiring a team decision.
00:07:13.900 At Harue, we started with a job advertisement highlighting how Harue Qantas Hotels works, our values, and our cultural perks. We specified who we were looking for, believing that knowledge is not enough; success relies on both knowledge and character. We sought candidates with basic programming skills, preferably in Ruby, who demonstrated self-learning, possessed a growth mindset, and communicated well.
00:08:01.720 When people applied, we requested a CV, answers to specific questions, and a code sample. I created a rubric for assessing responses. For example, regarding why they wanted to program and their efforts to expose themselves to programming, I categorized answers as average, good, or great.
00:08:42.440 An average response indicated little initiative, while a good answer demonstrated some action without much drive, and a great answer showcased invested time, effort, and a progress log. We also recognized that applicants might have limited time to produce code samples, so we offered two options: submit a code sample of something they were proud of, or solve one of two coding challenges, such as calculating Scrabble scores or validating credit card numbers.
00:09:43.050 We specified what we sought in their code samples, looking for knowledge of best practices, code organization, and clarity. The next step after reviewing applications was to invite candidates for technical interviews with the engineering manager and HR representative.
00:10:36.900 We prepared a set of questions for the candidates, supplemented by two custom questions to assess their fit further. We also allowed time for candidates to ask us questions in return.
00:11:15.800 One question focused on teamwork experiences—what their contributions were and what they liked most about the team's working environment. We aimed to gauge their self-awareness and understanding of group dynamics.
00:11:53.150 Following this, we conducted a technical interview, ensuring at least two team members were present, ideally including both a male and female. The interview was facilitated by two developers and included beginner-level questions that I reviewed with a current junior employee to ensure appropriateness.
00:12:43.070 The final phase of the hiring process involved an in-office visit, which included two pairing sessions. One session focused on live code that the current team was working on, while the second was on one of the coding challenges to assess how candidates approached coding tasks.
00:13:24.490 This method provided insight into how they interacted with the team and handled real-world coding problems. Overall, every step of the hiring process allowed the team to have a voice in candidate selections, ensuring a collective buy-in on who was hired.
00:14:05.600 Moreover, maintaining continuous communication with candidates at every stage of the interview process is vital. This involves keeping candidates informed about next steps and providing feedback to those who were not successful, as most candidates seek constructive criticism to improve their future applications.
00:14:50.520 Once you have selected apprentices, it is crucial to develop a well-structured program. Ask questions such as what type of training will be delivered, what competencies apprentices should exit with, and how outcomes will be measured and evaluated.
00:15:53.790 Several companies in Melbourne have successfully implemented apprenticeship programs, each with their distinct approaches. For instance, Enviro hired two women at a time through legal exceptions to promote diversity; they provided full-time mentorship and integrated team rotations with real work problems.
00:16:37.750 Culture Amp, on the other hand, began with two days of learning followed by three days of actual work, finding that this approach caused too much context switching. They modified it to a weekly learning cycle every third week of study, allowing for deeper engagement with the material.
00:17:18.370 The program I ran at Harue included alternating weeks of structured learning and hands-on project work. We utilized a curriculum made available online, and the first week introduced concepts such as version control and command line usage, gradually becoming more advanced.
00:18:21.000 The typical day consisted of theory sessions in the morning, incorporating code alongs, followed by self-work periods in the afternoon. We prioritized pair programming throughout the Academy weeks to ensure that apprentices could leverage collaborative learning.
00:18:51.160 We implemented a gradual release of responsibility model, allowing apprentices to take increased ownership over time. This involved beginning with group exercises, gradually fostering independence while still benefiting from peer support.
00:19:51.380 Throughout the six-month program, apprentices engaged in technical talks, tackled technical books, and worked on a breakable toy project designed to assess their understanding and synthesis of what they learned.
00:20:31.380 We also initiated fortnightly one-on-one meetings with both the instructor and the engineering manager to monitor progress and address any concerns. Furthermore, apprentices were matched with mentor buddies for additional support and comfort.
00:21:23.910 As part of the program, the team was actively involved in coaching and mentoring, establishing a collaborative environment to bolster acceptance and integration of the apprentices into the larger team.
00:22:07.900 In the end, placements were based on organizational needs and apprentice preferences. As a testament to our success, all four apprentices have become productive team members.
00:22:14.560 Building a developer apprenticeship program creates a continuous learning environment that enables all engineers to understand the technology stack, culture, and shared language, fostering engagement and retention. Investing in your team benefits the organization by introducing fresh perspectives and ideas.
00:22:37.160 You will recruit great candidates who will help shape your company's future. So, why not start an apprenticeship program now? Thank you so much.