Workshop tickets on sale now: Leading engineering teams for new managers (crash course)

Blackmill logo

Start your own apprenticeship program

This is mostly a write-up for my talk for Ruby Conf Thailand 2019. The slides are available at:

Everyone wants to hire senior developers

Demand to increase head count in many tech companies is rising, even with the difficulty of hiring for top talent. To counteract this, some big companies have removed the required college degree barrier to entry.

Take tech giants Apple, Google and IBM, for example. These companies no longer require a four-year college degree for many of their positions, including those in some technical roles. Loosening up this age-old requirement opens the doors for thousands of potential hires.

With online training and all the various bootcamps around, our industry has a surplus of bright junior developers, but a lack of open junior positions.

Your people are your most valuable resource. You can only innovate if you have the right talent with the right skills. Current traditional hiring practices are not meeting demands. Companies need new solutions. Implementing an apprenticeship or up-skilling program are such solutions.

In 2017-2018, I ran a six month apprenticeship program for Hooroo, now Qantas Hotels, in Melbourne, Australia. It was considered a great success and we are currently examining options to run it again.

According to Britannica, an apprenticeship is…

training in an art, trade, or craft under a legal agreement that defines the duration and conditions of the relationship between master and apprentice.

An apprenticeship program allows employers to evaluate talent and provide apprentices with a structured learning period. The nature of an apprenticeship is to allow the apprentice to learn a great deal about a company and the industry in a short amount of time under guided mentorship.

Apprentice ☞ Journeyman ☞ Master

Apprenticeships have been around for a long long time. They were in a way of a contractual agreement between the master and apprentice, and lasted between two to seven years, depending on the particular trade after which the apprentice became a journey man.

The term derived from the French word for day i.e. "journee", and basically meant that the journeyman would be paid by the day for their work. After a period of extensive experience the journeyman could submit a piece of their best work to the appropriate guild for assessment and approval. If this ‘master piece’ was accepted they could become a master craftsman and could set up their own workshop and train apprentices.

How is it different to an internship?

By definition an intern is a student or trainee who works, sometimes without pay, in order to gain work experience or satisfy requirements for a qualification.

So generally speaking, interns are usually students, on a short term engagement, focusing on one specific project, with implication that they will be doing the "dirty work."

On the other hand, an apprentice is a person who is learning a trade from a skilled employer, having agreed to work for a fixed period at [relatively] low wages.

So we could say that an apprenticeship is:

Why should you start one?

Hiring juniors makes for better team workflows

Hiring juniors supports team development

What do you need?

At a minimum, an apprentice, a mentor, and a company that’s willing to make the investment.

Company buy-in

You will need senior leadership support, a company leader who wants to build a talent pipeline to grow the company. It's important to understand that it's going to take time and money to ensure your program’s success.

Team buy-in

You will also need a team that is willing to mentor and work directly with the apprentice. Apprentices succeed when the team is dedicated and committed to working with a beginner.

Person(s) responsible

Either a person to drive the program, and/or a mentor and apprentice, that are invested in the success of the program.

How do you start a program?

Step 1: first you need to understand your company's needs.

Some key factors to consider:

Then you should also develop a plan:

Step 2: source candidates

I will write about the hiring process we employed in a follow-up post.

Step 3: develop a program

Some questions you should ask:

Step 4: how to guide

Step 5: define success

You will need to define what success looks like for you, so that you will know you are on the right path.

You should also consider how to assess the apprentices' progress. Some ideas can be:

In Melbourne

Quite a few companies have some kind of program to support new people, whether it is REA's graduate program, MYOB's DevelopHer, ANZ re-skilling accelerator, or ZenDesk's internship program. I would like to mention a couple in particular, Envato and Culture Amp.

Envato got a legal exception to be able to advertise for women only. For their apprenticeship program they hire two women developers, who then have a dedicated mentor to work with.

Our approach has emphasised an immersive experience, giving our apprentices real tasks as part of our engineering teams while paired with a programming mentor. It means they’re involved in everything from planning sessions, standups and retrospectives, and subsequently 'pair' programming with their allocated mentors. -- Mario Visic

As part of the program, the apprentices do team rotations, and completion of the program is dependent on whether both the apprentices and their instructor deem them ready.

Culture Amp's Junior Engineering Program has run twice over the last three years. Each program cohort included ten junior developers. Each developer apprentice was hired for a specific team. Initially, they split the work week up to spend two days with the program, and three days working in their team. They soon realised that this didn't work so well because of too much context switching. Therefore, the program changed to one training week every three weeks.

Culture Amp's assessment of choice was a Rails project with set requirements that amounted to 100 points score.

My apprenticeship program: the Engineering Academy at Qantas Hotels

The program ran for six months, and was a paid apprenticeship. It was a blend of structured learning and on-the-job work. We alternated academy weeks with product work, and found that full weeks with the team gave the apprentice developers enough time to take ownership of story cards as well as a break from the intense learning periods.

Most academy days also consisted of theory sessions, code-alongs, and self-work periods. You can find the full curriculum outline at []

The program included:

As a result, all four apprentices have selected teams, and have been productive members of these teams for the past two years.


Building a developer apprenticeship in your organisation creates a continuous learning environment. It helps all your engineers understand the technology stack, culture, and shared vocabulary. It helps with team engagement and retention. It means investing in the team. You will benefit from introducing fresh perspectives and ideas. You will recruit great candidates that you will help shape your company's future engineers. So why not start an apprenticeship program today?

If you're interested in hiring for, developing, and/or running an apprenticeship program in your company, let's chat!

Receive monthly updates

Our Australian residents live on, and benefit from, the colonised lands of the Boon Wurrung, the Wurundjeri, and the Darkinjung. We acknowledge the Traditional Owners and Custodians of these lands and recognise their enduring connection to land, waters, and culture. We pay our respects to their elders, past and present.

We are grateful we share this land today. We hold sorrow for the costs of that sharing, and we hope for a reconciliation to bring us to a state of equity, justice, and partnership together.