Essential elements of a software developer apprenticeship
By Eliot Pearson
Hailing from the Middle Ages, apprenticeships have been a way to train, employ and guide the next generation of tradespeople. George Washington was an apprentice.
But as we continue to transition from the manufacturing to the digital age, the definition of “trade,” and therefore an apprenticeship/apprentice, is changing. Tech apprentices are an efficient way to fill the talent gap, provide companies with an influx of much needed junior developers and open the technology industry to those with the ability to become great software engineers.
Here are the elements that are essential to building a successful software developer apprenticeship program.
A major difference between a software developer apprentice and a market-hire junior developer is the apprentice has a defined path to demonstrate advancement of technical capabilities and personal growth. The market hire is just another body filling a seat.
A successful apprenticeship will have a well defined structure, from apprentice selection to initial training, and throughout the length of the apprenticeship. There is a repeatable, scalable pathway to grow competencies, both technical and interpersonal, that will result in an exceptional software engineer. The apprentice is building those skills while providing incrementally increasing value.
Coaching, not mentoring
Part of a structured apprenticeship is the concept of precision coaching. Coaching is often equated to mentoring. But a mentor can only give advice or react to the questions/concerns from the mentee. Often an apprentice is at a point in their career where they might not even know what to ask.
Precision coaching is a guided journey through the apprenticeship. A mentor, or “journey coach,” working with a small number of apprentices, transverses a roadmap of training, lessons, articles, exercises, coaching sessions, etc. that focus on specific skills. These skills progress – in terms of complexity, breadth and depth – as the apprentices grow as developers. The journey coach closely tracks apprentice progress and can step in to remediate or course correct if the apprentice isn’t moving through the prescribed journey as expected.
The purpose of a software developer apprenticeship program is to provide a new, alternative method to source junior level talent. But, if the program doesn’t deliver developers who produce value, then it’s not a viable option.
An apprenticeship program should have longitudinal data that shows its efficacy against other recruiting channel alternatives: colleges, bootcamps, etc. Are the developers at a similar skill level and how fast do they surpass alternate models as they move through the structured coaching?
The program should also be able to show, in a transparent way, the apprentices’ progress. Where do they stand in their journey? How does this compare to other developers and against historical data? What is their production in a team environment? These measurable outcomes prove the program works, and works better than alternatives.
With these elements in place, you can have confidence in the rigor of the apprenticeship program. As with any new sourcing strategy, you can start small and grow over time. Take on a few apprentices and see what benefits they can offer your organization. We’ll explore those benefits in our next post.
– Eliot Pearson is VP of technical development at Catalyte
This post is adapted from a Sourcing of Innovation podcast on technology apprenticeships.