Software apprenticeship programs are a powerful tool in a technology organization’s growth strategy. They provide an opportunity for existing talent to develop the skills critical for effective senior leadership as well as expand the pool of people who can be successful within the organization.

What Is Apprenticeship?

Apprenticeship is different from a training program in two ways:

First, apprenticeship establishes lifelong patterns of and support for professional development. Great apprentices are lifelong learners and great apprenticeship programs create learning opportunities for everyone within an organization.

Second, apprenticeship emphasizes learning while creating immediate value. It is not unusual for an apprentice to start out spending part of their time on context driven testing for newly built features, building small internal tools that are important but not-quite important or urgent enough for a dedicated team or senior developer to take on, or expanding a test suite that maybe doesn’t have quite the coverage the team wishes it had.

Challenges Apprenticeship Programs Face

Apprenticeship programs often have difficulties getting off the ground. To be successful they must address concerns across the organization. From operations to human resources to product to engineering everyone must be bought in to the risks and the rewards of investing in an apprenticeship program.

Some of the questions that need answering in order to establish that buy in are:

  • How will an apprenticeship program impact short term ability to deliver?
  • What if we hire an apprentice and can’t make them successful?
  • What are the pay expectations for apprentices?
  • Should we adjust compensation as apprentices skills increase? How? When?
  • How do apprentices know what to spend their time on?
  • How do we evaluate where an apprentice is in their journey?
  • Won’t having an apprentice distract our more experienced engineers from delivery?

These are cost or risk oriented concerns. To address them we must understand the underlying organizational constraints that create these concerns and design a program model that accounts for them. That design must then be inspected and adapted with a regular cadence. This way we set our organization, program, mentors and apprentices up for success.

Outcomes of a Successful Apprenticeship Program

Most software apprenticeship focus on four outcomes:

  1. Improved delivery capabilities. Is the team creating better outcomes more aligned with the organizations goals? Has cycle time gone down? Has throughput gone up?
  2. Team and organizational health. Are people working better together? Is their a level of psychological safety that encourages creative work? Is the organization well positioned to adapt as the market and financial ecosystem changes? Are people happier?
  3. Individual growth and skill acquisition. How have people’s skills improved? Are your senior people better leaders? Have your associate or junior practitioners developed a broader and deeper understanding of your stack and problem domain? Are mid-level people expanding their repertoire and driving innovation?
  4. Personal accomplishment. Is there a clearer path forward for people’s careers? Are people setting and achieving their goals?

Keeping these and other, more company specific outcomes at the forefront of the program design inspection cadence helps us create more value with the program and keep our risks in perspective.

In future articles, we will discuss how to identify, explore and mitigate the organizational concerns blocking creating an apprenticeship program; how to design a minimum viable program; how to grow beyond a minimal program to one that actively builds your organizations delivery capacity; and how to identify and avoid program design traps.