00:00:00
Our next speaker is Elle Meredith. Elle is a veteran of RubyConf Australia, having spoken at several events. She has organized a conference and has been a valuable part of the Ruby community in Melbourne for a long time. Elle has been writing Ruby for over a decade. She is currently with Blackmill and was previously the Development Director at Thoughtbot in New York. She believes in writing clean code driven by automated tests, using agile practices, maintaining a work-life balance, and fostering a respectful and inclusive team culture. Recently, she developed and ran an apprenticeship program for Qantas Hotels. When she's not immersed in the Ruby community, she is probably immersed in water or, lately, in flour, as she is known for making amazing pizza.
00:00:54
Please welcome Elle Meredith.
00:01:01
Hi! I want to talk today about starting your own apprenticeship program. Adele earlier mentioned diversity and inclusion and the importance of getting more diverse individuals on your engineering teams. An apprenticeship program can help you achieve this goal by attracting more women developers to your team.
00:01:26
Everyone usually wants the highest senior developers, but the demand for such talent is increasing while the headcount in many tech companies is rising. To address this challenge, some major companies have removed the requirement for a college degree as a barrier to entry. Despite the surge in online training and various boot camps, there remains a surplus of bright junior developers and a lack of open junior positions to hire them.
00:01:49
Young people are your most valuable resource; they can innovate and drive your organization forward. However, traditional hiring practices are not meeting the demand for new talent. Implementing an apprenticeship and upskilling program is a viable solution to bridge this skills gap.
00:02:06
I ran a six-month apprenticeship program for Qantas Hotels a couple of years ago in Melbourne, which was considered a great success. Since then, Qantas Hotels has been exploring options to run another academy. By definition, an apprenticeship is training in an art, trade, or craft, typically through a legal agreement that defines the duration and conditions of the relationship between a master and an apprentice.
00:02:28
An apprenticeship program allows employers to evaluate talent and provides apprentices with a structured learning period. The purpose of an apprenticeship is to allow the apprentice to learn a great deal about the company and the industry in a short amount of time under guided mentorship.
00:02:48
When discussing apprenticeships, we often say that 'junior' means 'senior,' but we could also refer to apprentices as novices, journeymen, and masters. Apprenticeships have been around for centuries, serving as a contractual agreement between a master and an apprentice, lasting between two to seven years, depending on the trade. The journeyman term is derived from the French word 'journée,' meaning 'day'—indicating that the journeyman would be compensated daily for their work.
00:03:16
After gaining extensive experience, a journeyman could submit their best piece of work to the appropriate guild for evaluation and, if accepted, could achieve the status of master craftsman, allowing them to establish their own workshops and train other apprentices. We face a different challenge in our industry, where the skill sets needed are often poorly defined, making it challenging to determine what a junior should know upon joining a company.
00:03:39
How is an apprenticeship different from an internship? Generally speaking, interns are usually students or trainees who work, often without pay, to gain work experience or fulfill qualification requirements. They take on short-term engagements, often focusing on specific projects.
00:03:56
In contrast, an apprenticeship involves learning a trade from a skilled employer, for which the apprentice has agreed to work for a specified period at relatively low wages, but they are compensated for their efforts. An apprenticeship program provides on-the-job training and focuses on the sustainable growth of the team. It involves a longer engagement period with genuine applications in the workplace and dedicated mentoring.
00:04:23
In conclusion, at the end of an apprenticeship program, there should be a thorough evaluation. Completing an apprenticeship often leads to a full-time role within the company.
00:04:49
Why would you start an apprenticeship program? Hiring junior developers fosters better teamwork and opens up the candidate pool, supporting diversity initiatives. It increases the variety of backgrounds and skills in potential candidates, boosting overall performance and productivity.
00:05:09
Diversity has been shown to lead to better performance, and clearer communication contributes to an improved understanding of the codebase. In turn, this enhances documentation practices, making communication within the team more explicit.
00:05:38
Additionally, junior developers contribute to team development by improving retention rates of existing team members who feel more responsible and motivated to assist them. This ensures that all employees are trained on best practices and organizational processes, giving employers a competitive edge with a well-trained, adaptable workforce.
00:06:15
An apprenticeship program also addresses the skill gap between senior and junior developers and aids in scaling fast-growing teams. Moreover, it can save time and money on recruitment and onboarding.
00:06:33
To start an apprenticeship program, one does not need to be a major corporation; at minimum, you require an apprentice, a mentor, and a company willing to invest in making it happen. Gaining buy-in from senior leadership is vital, as is having support from the team that will mentor and work closely with the apprentice.
00:06:53
Team buy-in is critical, with employees committed to working with and training beginners. A responsible individual must drive the program and provide mentoring. The mentor and apprentice must both be invested in the program's success.
00:07:17
To start an apprenticeship program, it is essential to assess the needs of your company and team. Consider key factors such as the program’s duration, whether it will be three months, six months, or twelve months, and determine the number of apprentices you wish to collaborate with. Also, clarify roles and responsibilities, what apprentices should learn, and how they will learn it. Develop a plan detailing realistic expectations for what the program will achieve and set a timeline.
00:08:12
Plan to source and hire apprentices, developing logistics and processes around the program while establishing a budget. Determine how you will recruit and screen candidates, including setting clear hiring criteria and paygrade, which can help in promoting the program broadly.
00:08:34
Ensure the hiring process is structured and appropriate for beginners. Form a hiring committee to make collective decisions and enhance team involvement in the selection process.
00:09:19
One of the early steps in hiring is creating a job description. We crafted a document outlining our values, culture, perks, and the type of candidates we were looking to attract to ensure a good fit.
00:09:38
We ran the job description through a text analysis tool to minimize gendered language and make it as inclusive as possible. Language is crucial in conveying your company culture and values.
00:09:58
When drafting job descriptions, it’s also essential to ensure that they communicate the opportunity as a two-way conversation—candidates should evaluate if the company is a good fit for them just as the company evaluates the candidates.
00:10:21
Defining the ideal candidate is a foundational element of a good job description. The criteria should not be overly lengthy or restrictive and should focus more on adaptability and character traits rather than specific technical skills, as technology evolves.
00:10:46
Knowledge is not sufficient; character and the will to learn are vital, especially in an apprenticeship program. We sought candidates who were enthusiastic learners.
00:11:09
Our application process requested resumes, answers to specific questions, and a code sample demonstrating the applicant's abilities. We encouraged candidates to submit their answers in a markdown file via a GitHub Gist.
00:11:38
We were transparent in communicating expectations for the answers and the code samples, providing clear guidance on what we sought to evaluate. Each question aimed to uncover specific attributes or skills, making it easy to articulate our requirements.
00:12:01
The applicants were informed that their submissions should reflect their determination to work as software developers, their willingness to learn from mistakes, and their capacity to embrace new challenges.
00:12:21
For each question, I created a rubric outlining what constituted average, good, and excellent responses. We also required a code sample from the candidates.
00:12:42
To ease the burden on candidates with limited time, we allowed them to submit existing code samples. If they didn’t have an existing project they were proud of, we provided coding challenges to complete instead.
00:13:09
After screening applicants, we held two sets of interviews—first, a non-technical interview followed by a technical interview. I aimed to involve as many team members in the process as possible since they would work closely with the candidates.
00:13:46
Every member of the Qantas Hotels engineering team had access to candidate information and could provide feedback. We instituted a policy of a two-person interview to minimize individual bias, striving to ensure both a male and female presence in interviewer pairs.
00:14:09
The non-technical interview was designed to gauge candidate characteristics, including motivation and fit, by utilizing structured questioning that we established beforehand. We left time for candidates to ask questions as well.
00:14:34
During the technical interviews, we focused on evaluating beginner-friendly skills with a similar structure—a set of predefined questions tailored to gauge both technical understanding and collaborative capability.
00:15:01
The last phase of the hiring process involved in-office visits, where candidates interacted with the engineering team to foster familiarity and assess cultural fit. We outlined the desired qualities we were looking for, including problem-solving skills, collaboration, and eagerness to learn.
00:15:36
During the interviews, we employed a consistent coding challenge to maintain a fair evaluation for every candidate. By using the same task, we were able to objectively compare responses and provide structured guidance with minimal surprise about the assessment they would receive.
00:16:24
We set up a dual-monitor system for the coding assessments to allow for pair programming interactions, which provided insight into candidate comfort levels and collaborative skills.
00:16:51
Throughout the entire course of the hiring process, our aim was to be timely, providing candidate updates at every step. I pre-wrote email templates to communicate with successful and unsuccessful candidates, offering to provide personalized feedback, which most applicants appreciated.
00:17:24
Giving feedback to rejected candidates can be challenging, but maintaining a constructive and positive tone is essential in preserving relationships for future opportunities.
00:17:50
Once we had our candidates, the next step was developing the apprenticeship program. Here are some questions that should be considered: What training will be delivered? What competencies must the apprentices have upon completion? Who will coordinate the program, and how will success be measured?
00:18:14
It’s important to prepare the team and mentors for the journey. I facilitated sessions on how to effectively pair with juniors to establish a common foundation and language.
00:18:39
Our onboarding process began with introducing the apprentices to workflows within various engineering teams, familiarizing them with learning approaches, code review, feedback methods, debugging skills, and retrospectives.
00:19:06
Lastly, defining success is crucial to understand if your program worked. Explore how to assess apprentices' progress, offering regular feedback to facilitate their understanding of their own development.
00:19:24
We implemented various assessment strategies to evaluate progress, such as guided projects with fixed requirements, providing opportunities for individual assessments based on confidence levels.
00:19:59
In Melbourne, there are several companies with programs to support newcomers, including graduate programs and internship opportunities. For instance, one company implemented a women's-focused apprenticeship due to a legal exception to hire women only.
00:20:23
At Culture Amp, a junior engineering program has been successfully conducted twice, allowing apprentices to work with various teams and gain diverse experience, ensuring the development of both technical and soft skills.
00:20:44
My apprenticeship program ran for six months and was a paid initiative that blended structured learning with practical work, alternating between periods of focused learning and team contributions.
00:21:04
We created a curriculum that included theoretical sessions in the mornings and coding challenges in the afternoons, incorporating pair programming and peer learning in our teaching model.
00:21:34
Students also delivered lightning talks on various topics, and we collectively read technical literature to solidify knowledge and encourage discourse, ensuring a collaborative learning environment.
00:22:01
The 'breakable toy' approach was implemented to allow apprentices to practice their skills through personal projects, culminating in evaluations that assessed their understanding and application of concepts.
00:22:26
We held regular one-on-ones to track their progress and gather feedback, alongside team sessions where experienced engineers shared their insights on relevant tools and technologies.
00:22:47
By integrating apprentices into team silos, we fostered relationships between junior developers and their teams, encouraging them to feel valued and ultimately leading to successful placements based on mutual needs.
00:23:04
All four apprentices who completed the program found positions within the company, significantly contributing to their respective teams over the past two years.
00:23:24
To recap, starting an apprenticeship in your organization fosters a continuous learning environment that enhances engineering capabilities, improves technology utilization, and strengthens team engagement.
00:24:07
This initiative invites fresh perspectives and recruits candidates who positively shape the company’s future. It emphasizes investing in your team while advancing diversity and inclusion across the board.
00:24:31
So ask yourself, why not initiate your own apprenticeship program today? Thank you very much.