We’ve run apprentice.io, a three-month apprenticeship for designers and developers, for the past four years. We’ve talked with other organizations, most recently through YesWeCode, about how to set up their own apprenticeships.
This article shares what we’ve learned. We’ve also made material from our apprenticeship available on GitHub. Fork and change it as you find what works for your organization.
A concern we’ve heard is “who will mentor?” Our experience has been that this is the easiest part. Designers and developers love to share their knowledge, tools, and techniques. It’s very satisfying to help someone else acquire new skills.
Put the word out within your organization. You might be surprised at how many people respond enthusiastically.
Your people have product design, software engineering, and a variety of other soft and hard skills. They’re less likely to have formally mentored others before.
So before your mentors get an apprentice, put them through some kind of basic training.
For example, have them read Apprenticeship Patterns or Search Inside Yourself. Have them watch Emotional Intelligence and Feedback. Require that they’ve previously pair programmed for at least 100 hours. Share your Mentor Handbook on GitHub.
Those ideas are geared toward attuning the mentor to the needs of their future apprentice. Beyond technical skills, empathy and creating a cycle of open, honest feedback are the most important skills for a mentor.
If you’re assigning reading or videos to mentors, consider assigning the same homework to apprentices. It gives everyone the same foundation and a common language.
We’ve had success interviewing our apprentices using the same process as our full-time designers and developers, but with different evaluation criteria. For example, we ask the same Ruby on Rails questions in the technical interview.
A major benefit of this approach is that we often have people apply for the full-time position who end up being a better fit for the apprenticeship. So, we don’t need a separate set of questions, or a “re-do” if we discover halfway through the interview process that the candidate is a better fit for the other position.
For apprentices, we’re not looking for perfection on every technical detail in that interview. They need to reach a certain baseline, but once that is met, other evaluation criteria play an important role. Were they able to problem solve something they’ve never seen before? Did they seem determined? Curious? Positive? A fast learner?
Our critical question is:
Can we imagine this person being a great full-time hire three months from now?
Our apprenticeship program is three months long. It’s proven to be long enough for the apprentice to learn the missing skills needed for the full-time job, short enough for high-quality apprentices to be willing to take less pay than their other options, and long enough for the company to evaluate them for the full-time job.
A different mentor and project for each month allows the apprentice to see multiple styles and project stages, and keeps everyone energized.
We also found that it helps apprentices accelerate faster.
Apprentices will progress so quickly that they, their mentor, and the team around them, won’t realize how far they’ve come. Rotating to a new mentor and project breaks existing perceptions and allows the apprentice to start over from where they are now, as opposed to where they were 30 days ago.
For this same reason, when someone is promoted from apprentice to designer or developer, we always try have them rotate to a new team. We’ve found that despite everyone’s best efforts, they will still be viewed as an Apprentice if they stay on the team.
A common applicant we have is someone who is going through Dabbler, Immersive, and Apprenticeship phases, having taught themselves using a MOOC like Khan Academy or Treehouse, then gone through a bootcamp like Dev Bootcamp, Turing, or Flatiron School.
An apprenticeship program is the ideal next step for many bootcamp graduates. They are going from a highly immersive learning environment into the job world. To make the transition, they often need structured mentoring that an apprenticeship offers.
We have been fortunate to have established apprentice.io when we did. It is more tenured and well-known than other apprenticeship programs. We feel that has helped us hire the top tier of bootcamp graduates. With that caveat, we can highly recommend to any company with an apprenticeship program that they interview bootcamp graduates. You will end up with extremely talented teammates.
We receive about 600 applicants each year for apprentice.io. We’re not able to keep up with the flow and are constantly looking for ways to raise the bar.
While bootcamp graduates are one common applicant archetype, another successful archetype is someone who is switching skills or platforms.
Barriers to getting these folks in the door include their existing pay, job title, and perceived stigma of being an apprentice. Our experience is that there are people out there who are humble enough to not let that stop them. Those people are exactly the kind of teammate we want to work with. They help keep us in a beginner’s mindset.
Our best advice is to try to make the landing page for your apprentice program cover many possible backgrounds while being clear it is not for true beginners.
The majority of our apprentices have left their job working as a full-time developer or designer to come to apprentice at thoughtbot.
Apprenticeships are all about hands-on practice with someone more experienced than you. Pair programming is the perfect technique for both seeing how the mentor works and doing the work with feedback from that mentor. Many apprentices and their mentors choose to pair program the majority of their time.
We don’t require 100% pair programming, though. Sometimes the apprentice needs to break off to study a concept in solitude to gain a deeper understanding of it and its details.
While the mentor and apprentice are working constantly with each other throughout the week and giving feedback along the way, we still find it helpful to set aside a regular time each week for an honest discussion about the past week and plans for next week.
This regular meeting creates a framework for establishing open communication and helps ensure that any problems are addressed.
A good apprentice is someone who is aware of their current strengths and weaknesses. They are able to explicitly state that they need, or want, to focus on certain areas.
Those goals help the company match them up with the right mentors, and helps the mentor keep the apprentice on the path to achieving their goals.
These things aren’t difficult to do. Don’t hesitate: set up your apprenticeship today.
Your company will be more dynamic and interesting as a result.